import random
import pygame
from pygame import Rect

WIDTH = 800
HEIGHT = 600

pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))

# Start de klok
clock = pygame.time.Clock()


sound = pygame.mixer.Sound("bow.wav")
explosion = pygame.mixer.Sound("explosion.wav")
player = pygame.image.load("ship.png")
bullet = pygame.image.load("bullet.png")
enemy = pygame.image.load("enemyship.png")


# Positie van de speler, en verplaatsing van de speler
x = WIDTH / 2
y = HEIGHT - 110
xchange = 0
ychange = 0

# Positie van de kogel, en verplaatsing van de kogel
bullet_x = 0
bullet_y = 0
bullet_x_change = 0
bullet_y_change = 0

# Positie van de vijand, en verplaatsing van de vijand
enemy_x = WIDTH - 200
enemy_y = 0
enemy_x_change = 0
enemy_y_change = 0.05

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                sound.play()
                bullet_x = x
                bullet_y = y
                bullet_y_change = -0.5
            elif event.key == pygame.K_LEFT:
                xchange = -0.1
            elif event.key == pygame.K_RIGHT:
                xchange = 0.1
            elif event.key == pygame.K_UP:
                ychange = -0.1
            elif event.key == pygame.K_DOWN:
                ychange = 0.1
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT:
                xchange = 0
            elif event.key == pygame.K_RIGHT:
                xchange = 0
            if event.key == pygame.K_UP:
                ychange = 0
            elif event.key == pygame.K_DOWN:
                ychange = 0

    # Verplaats de speler
    x += xchange
    y += ychange

    # Verplaats de kogel
    bullet_y += bullet_y_change

    # Verplaats de vijand
    enemy_x += enemy_x_change
    enemy_y += enemy_y_change

    # Als de vijand buiten het scherm gaat,
    # plaats hem dan terug bovenaan het scherm
    if enemy_y > HEIGHT:
        enemy_y = 0
        enemy_x = random.randint(0, WIDTH)

    # Kijk of er een botsing is
    enemy_rect = Rect(enemy_x, enemy_y, 32, 32)
    bullet_rect = Rect(bullet_x, bullet_y, 8, 8)
    if enemy_rect.colliderect(bullet_rect):
        explosion.play()
        print("hit")

    # Teken de speler, de vijand en  de kogel
    screen.fill("white")
    screen.blit(player, (x, y))
    screen.blit(enemy, (enemy_x, enemy_y))
    screen.blit(bullet, (bullet_x, bullet_y))

    pygame.display.flip()

    # Wacht zodanig dat we maximal 60 FPS halen
    clock.tick(60)
