import pygame # Packet laden
import sys
import random


pygame.init() # Muss immer bei der Verwendung von Pygame am Anfang gemacht werden zur internen Initialisierung

# Fenstergrösse definieren
width = 900
height = 500
screen = pygame.display.set_mode((width, height))

pygame.display.set_caption("Mein Erstes Pygame Programm")

# Farben definieren mit RGB Wert
white = (255, 255, 255)
yellow = (255, 255, 0)
red = (255, 0, 0)

# Zeitmesser einführen
clock = pygame.time.Clock()

# Raumschiff Eigenschaften
vel = 5 # Geschwindigkeit (engl. velocity)

# Bilder hinzufügen
gelbes_raumschiff = pygame.image.load("./bilder_und_ton/spaceship_yellow.png")
gelbes_raumschiff = pygame.transform.scale(gelbes_raumschiff, (55, 40))
gelbes_raumschiff = pygame.transform.rotate(gelbes_raumschiff, 90)  # 90 grad rotieren
rotes_raumschiff = pygame.image.load("./bilder_und_ton/spaceship_red.png")
rotes_raumschiff = pygame.transform.scale(rotes_raumschiff, (55, 40))
rotes_raumschiff = pygame.transform.rotate(rotes_raumschiff, 270)  # 270 grad rotieren

# Rechtecke von Bildern
rect_rotes_raumschiff = rotes_raumschiff.get_rect()
rect_gelbes_raumschiff = gelbes_raumschiff.get_rect()

# Raumschiff Koordinaten
rect_gelbes_raumschiff.x = 100
rect_gelbes_raumschiff.y = 200
rect_rotes_raumschiff.x = 400
rect_rotes_raumschiff.y = 200

# Raumschiff abgeschossen
rotes_raumschiff_abgeschossen = False

# Bullets
bullets = []
bullet_vel = 4

# Todo: Soundeffekte laden
treffer_sound = ...
schiess_sound = ...

while True:
    for event in pygame.event.get():
        # If the player clicks the red 'x', it is considered a quit event
        if event.type == pygame.QUIT:
            pygame.quit() # Gegenteil von pygame.init()
            sys.exit() # Programm regulär beenden

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                bullet = pygame.Rect(rect_gelbes_raumschiff.x + 55, rect_gelbes_raumschiff.y + 40//2 - 2, 10, 5) # 55 und 40 sind Breite und Höhe des Raumschiffs (siehe Skalierung)
                bullets.append(bullet)
                # Todo: schiess sound laufen lassen

    screen.fill(yellow)

    # Bullets bewegen
    for bullet in bullets:
        bullet.x = bullet.x + bullet_vel

        # Überprüfe ob Kollision mit rotem Raumschiff stattfindet
        if bullet.colliderect(rect_rotes_raumschiff) and not rotes_raumschiff_abgeschossen:
            rotes_raumschiff_abgeschossen = True
            bullets.remove(bullet) # Entferne bullet, die getroffen hat
            # Todo: treffer sound laufen lassen

    # Überprüfe, ob Taste gedrückt wurde
    keys_pressed = pygame.key.get_pressed()

    if keys_pressed[pygame.K_a]: # überprüfe, ob Taste 'a' gedrückt wurde
        rect_gelbes_raumschiff.x = rect_gelbes_raumschiff.x - vel
    if keys_pressed[pygame.K_d]: # überprüfe, ob Taste 'd' gedrückt wurde
        rect_gelbes_raumschiff.x = rect_gelbes_raumschiff.x + vel
    if keys_pressed[pygame.K_w]: # überprüfe, ob Taste 'w' gedrückt wurde
        rect_gelbes_raumschiff.y = rect_gelbes_raumschiff.y - vel
    if keys_pressed[pygame.K_s]: # überprüfe, ob Taste 's' gedrückt wurde
        rect_gelbes_raumschiff.y = rect_gelbes_raumschiff.y + vel

    if keys_pressed[pygame.K_LEFT]:
        rect_rotes_raumschiff.x = rect_rotes_raumschiff.x - vel
    if keys_pressed[pygame.K_RIGHT]:
        rect_rotes_raumschiff.x = rect_rotes_raumschiff.x + vel
    if keys_pressed[pygame.K_UP]:
        rect_rotes_raumschiff.y = rect_rotes_raumschiff.y - vel
    if keys_pressed[pygame.K_DOWN]:
        rect_rotes_raumschiff.y = rect_rotes_raumschiff.y + vel

    screen.blit(gelbes_raumschiff, rect_gelbes_raumschiff) # blit für Bilder und Text (surfaces)
    if not rotes_raumschiff_abgeschossen:
        screen.blit(rotes_raumschiff, rect_rotes_raumschiff) # blit für Bilder und Text (surfaces)

    for bullet in bullets:
        pygame.draw.rect(screen, red, bullet)

    # pygame vollständig updaten
    pygame.display.update()

    clock.tick(60) # while-Schleife soll nicht öffters als 60 mal pro Sekunde ausgeführt werden.





