import pygame
import random
pygame.init()

# podanie rozmiaru ekranu
SCREEN_WIDTH = 800
SCREEN_HEIGHT =600
SCREEN_TUPLE = (SCREEN_WIDTH,SCREEN_HEIGHT)
ilosc_zebranych_punktuw = 0

# ustawienie rozmiaru ekranu
surface_okna = pygame.display.set_mode(SCREEN_TUPLE)
pygame.display.set_caption("py-game1")

#surface -> rejestruje TYLKO WYGLĄD obiektów
#reck(recktangle) -> rejestruje POŁORZENIE obiektów
def load_image(scieszka: str,pozycja):
    obraz = pygame.image.load(scieszka)
    surface = obraz.convert()

    przezroczysty_kolor = (0,0,0)
    surface.set_colorkey(przezroczysty_kolor)

    rect = surface.get_rect(center=pozycja)
    return [obraz, surface, rect]

def print_image(lista_obiektow):
    for obiekt in lista_obiektow:
        obraz, surface, rect = obiekt
        surface_okna.blit(surface, rect)

def calculate_player_movement(lista_klawiszy):
    zmiena_x = 0
    zmiena_y = 0
    if lista_klawiszy[pygame.K_w]:
        zmiena_y -= random.randint(0,2)*10
    if lista_klawiszy[pygame.K_s]:
        zmiena_y += random.randint(0,2)*10
    if lista_klawiszy[pygame.K_a]:
        zmiena_x -= random.randint(0,2)*10
    if lista_klawiszy[pygame.K_d]:
        zmiena_x += random.randint(0,2)*10
    if lista_klawiszy[pygame.K_f]:
        pygame.display.toggle_fullscreen()

    return [zmiena_x,zmiena_y]

pozycja_gracza = [SCREEN_WIDTH//2, SCREEN_HEIGHT//2]
pozycja_celu = [random.randint(10,SCREEN_WIDTH-10),random.randint(10,SCREEN_HEIGHT-10)]
pozycja_wgranej = [SCREEN_WIDTH//2, SCREEN_HEIGHT//2]
gracz = load_image(pozycja=pozycja_gracza, scieszka="grafiki\player.png")
cel = load_image(pozycja=pozycja_celu, scieszka="bonus_1.png")
WYGRANA = load_image(pozycja = pozycja_wgranej, scieszka="WYGRANA.png")
kolor_ekranu = [0,0,0]

#tworzymy zegar
zegar = pygame.time.Clock()
# def wygrana():
#     while (True):
#         print("wygrales")


# zmienna, która określa, czy gra trwa
status_gry = True
def set_position(pozycja,obraz_lista):
    obraz, surface, rect = obraz_lista
    rect = surface.get_rect(center = pozycja)
    return [obraz,surface,rect]

def limit_pozycji(x,y):
    if x >= SCREEN_WIDTH:
        x = SCREEN_WIDTH
    else:
        if x <= 0:
            x = 0
    if y >= SCREEN_HEIGHT:
        y = SCREEN_HEIGHT
    else:
        if y <= 0:
            y = 0
    return [x,y]
# gra
wygrana = False
while status_gry:
    #odczytujemy zdarzenia zarejestrowane przez pygmae
    #zwracane jako lista
    zdarzenia = pygame.event.get()
    for i in zdarzenia:
        if(i.type == pygame.WINDOWMINIMIZED):
            status_gry = False
        if i.type == pygame.KEYDOWN:
            if i.key == 1073741906:
                pozycja_gracza[1]-=30
                gracz = load_image(scieszka="grafiki/player.png", pozycja=pozycja_gracza)
                if pozycja_gracza[1] <= 0:
                    pozycja_gracza[1] = SCREEN_HEIGHT
                    pozycja_gracza[0] += 30

        print(i)
    #wykrycie nacisniętego klawisza i zmiana wspólzendnych
    nacisniete_klawisze = pygame.key.get_pressed()
    zmiana_x,zmiana_y = calculate_player_movement(nacisniete_klawisze)
    
    pozycja_gracza = limit_pozycji(pozycja_gracza[0]+zmiana_x,pozycja_gracza[1]+zmiana_y)
    gracz = set_position(pozycja_gracza,gracz)
    surface_okna.fill(kolor_ekranu)
    #odświerzaie ekranu
    # if (pozycja_celu[0]-10 < pozycja_gracza[0] and pozycja_celu[0]+10 > pozycja_gracza[0]) and (pozycja_celu[1]-10 < pozycja_gracza[1] and pozycja_celu[1]+10 > pozycja_gracza[1]):
    #     pozycja_celu = [random.randint(10,SCREEN_WIDTH-10),random.randint(10,SCREEN_HEIGHT-10)]
    if pygame.Rect.colliderect(gracz[2],cel[2]):
        pozycja_celu = [random.randint(10,SCREEN_WIDTH-10),random.randint(10,SCREEN_HEIGHT-10)]
        cel = set_position(pozycja_celu,cel)
        ilosc_zebranych_punktuw += 1
        if ilosc_zebranych_punktuw >= 3:
            wygrana=True

    if wygrana == True:
        print_image([WYGRANA])
        pygame.display.update()
        # while wygrana == True:
        #     nacisniete_klawisze = pygame.key.get_pressed()
        #     for i in nacisniete_klawisze:
        #         if i == pygame.K_x:
        #             status_gry = False
        #             wygrana = False

                


    print_image([gracz,cel])
    pygame.display.update()
    zegar.tick(60)
    pass



#zamukanie aplikacji
pygame.quit()
quit()