import pygame # imort biblioteki pygame

pygame.init() # inicjalicacja biblioteki pygame

# tworzymy zmienne z parametrami wymiarów okna  

SCREEN_WIDTH = 1200
SCREEN_HEIGHT = 650

screen_surface = pygame.display.set_mode((SCREEN_WIDTH,SCREEN_HEIGHT))

# nazwa naszego okna

pygame.display.set_caption("Gra o Kolorowym Rafale")

# utworzenie zegara ktury nadzoruje stałe wartości fps

clock = pygame.time.Clock()

# grafika

def load_image(img_path: str, position):
    image = pygame.image.load(img_path)
    surface = image.convert()

    transparent_color = (0 , 0 , 0)
    surface.set_colorkey(transparent_color)

    # pozycja wyswietlenia naszego obiektu jest zapisana w rect

    rect = surface.get_rect(center = position)
     
    return [image , surface , rect]

player_pos = [SCREEN_WIDTH // 2,SCREEN_HEIGHT // 2]
player = load_image('player.png',player_pos)

def print_image(img_list) -> None:
    image, surface, rect = img_list
    screen_surface.blit(surface, rect)
    pass

print_image(player)

def set_position_image(img_list,position):
    image, surface, rect = img_list
    rect = surface.get_rect(center=position)
    return [image, surface, rect]

def calculate_player_movement(keys):
    speed = 5
    delta_x = 0
    delta_y = 0

    if keys[pygame.K_w]:
        delta_y -= speed
    if keys[pygame.K_s]:
        delta_y += speed
    if keys[pygame.K_d]:
        delta_x += speed
    if keys[pygame.K_a]:
        delta_x -= speed
    return [delta_x, delta_y]

def limit_position(position):
    x , y = position
    x = max(0,min(x,SCREEN_WIDTH))
    y = max(0,min(y,SCREEN_HEIGHT))
    return[x,y]
# zmienna określająca czy nalerzy zamknać okno

game_status = True
background_color = [20,220,255]


# kod wykonywany póki aplikacja jest uruchomiona

while game_status:

    # odczytywanie zdarzeń zarejestrowanych przez komputer
    events = pygame.event.get()
    
    for event in events:

        #print(event)
        if event.type == pygame.QUIT:
            game_status = False
        pass

    pressed_keys = pygame.key.get_pressed()
    delta_x,delta_y = calculate_player_movement(pressed_keys)

    player_pos[0] += delta_x
    player_pos[1] += delta_y
    player_pos = limit_position(player_pos)

    player = set_position_image(player,player_pos)

    screen_surface.fill(background_color)

    print_image(player)
    

    pygame.display.update() # odświerzanie wyświetlanego okna
    clock.tick(60)
    pass

pygame.quit() # zamykanie aplikacji
quit() # zamykanie skryptu









