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_img = pygame.image.load("bullet.png")
enemy_img = pygame.image.load("enemyship.png")
enemy_slain_img = pygame.image.load("enemyship_slain.png")

# TODO: voeg je Enemy clas hier toe
# class Enemy:
#    ...

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

# Posities van de kogels, en verplaatsing van de kogels
bullets = []
bullet_x_change = 0
bullet_y_change = -5

# Informatie over de vijand
enemy_alive = True
# Object dat informatie van de vijand bevat
# TODO: Corrigeer de positie van de vijand hier
enemy = Enemy(0, 0)

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()
                # TODO: Als de speler schiet,
                # voeg dan een kogel toe, op
                # de positie van de speler
                bullets.append([x, y])
                print(bullets)
            elif event.key == pygame.K_LEFT:
                xchange = -1.5
            elif event.key == pygame.K_RIGHT:
                xchange = 1.5
            elif event.key == pygame.K_UP:
                ychange = -1.5
            elif event.key == pygame.K_DOWN:
                ychange = 1.5
        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 alle kogels
    for bullet in bullets:
        bullet[0] = bullet[0] + bullet_x_change
        # TODO: De regel hierboven zorgt voor de verplaatsing in 
        # horizontale richting (x-coordinaten). Voeg zelf de code toe voor
        # de verplaatings in vertikale richting (y-coordinaten).
        bullet[1] += bullet_y_change
        # Als de kogels rechtsbuiten het scherm gaan,
        # verwijder ze dan
        if bullet[1] < 0:
            bullets.remove(bullet)

    if enemy_alive:
        # Verplaats de vijand
        # TODO: vervang deze twee regels door gebruik te 
        # maken van je "update" method
        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

        # Kijk of er een botsing is
        enemy_rect = Rect(enemy.x, enemy.y, 32, 32)
        for bullet in bullets:
            bullet_rect = Rect(bullet[0], bullet[1], 8, 8)
            if enemy_rect.colliderect(bullet_rect):
                explosion.play()
                print("hit")
                enemy_alive = False
                enemy_img = enemy_slain_img
                bullets.remove(bullet)

    # Teken de speler en de vijand
    screen.fill("white")
    screen.blit(player, (x, y))
    screen.blit(enemy_img, (enemy.x, enemy.y))

    # Teken alle kogels
    for bullet in bullets:
        # gebruik blit voor iedere kogel uit de lijst
        # TODO: Corrigeer onderstaande code
        screen.blit(bullet_img, (bullet[0], bullet[1]))

    pygame.display.flip()

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