import pygame
import random
import time
from Kierunek import Kierunek
from Waz import Waz
from Jablko import Jablko
from Stale import SZEROKOSC_EKRANU,WYSOKOSC_EKRANU

punkty = 0

tlo = pygame.Surface((SZEROKOSC_EKRANU, WYSOKOSC_EKRANU))
min = -0
max = 40

for i in range(25):
    for j in range(19):
        obraz = pygame.image.load("images/background.png")
        maska = (random.randrange(min,max), random.randrange(min,max),
                  random.randrange(min,max))
        obraz.fill(maska, special_flags=pygame.BLEND_ADD)
        tlo.blit(obraz,(i*32, j* 32))

pygame.init()
# obiekt ekranu i zegara
ekran = pygame.display.set_mode([SZEROKOSC_EKRANU, WYSOKOSC_EKRANU])
zegar = pygame.time.Clock()
moja_czcionka = pygame.font.SysFont('Comic Sans MS', 24)

# Wąż
waz = Waz()
PORUSZ_WEZEM = pygame.USEREVENT + 1
pygame.time.set_timer(PORUSZ_WEZEM, 200)

# jabłka
jablko = Jablko()
jablka = pygame.sprite.Group()
jablka.add(jablko)

gra_dziala = True
while gra_dziala:
    for zdarzenie in pygame.event.get():
        if zdarzenie.type == pygame.KEYDOWN:
            if zdarzenie.key == pygame.K_ESCAPE:
                gra_dziala = False
            if zdarzenie.key == pygame.K_w:
                waz.zmiana_kierunku(Kierunek.GORA)
            if zdarzenie.key == pygame.K_s:
                waz.zmiana_kierunku(Kierunek.DOL)
            if zdarzenie.key == pygame.K_a:
                waz.zmiana_kierunku(Kierunek.LEWO)
            if zdarzenie.key == pygame.K_d:
                waz.zmiana_kierunku(Kierunek.PRAWO)
        elif zdarzenie.type == PORUSZ_WEZEM:
            waz.aktualizuj()
        elif zdarzenie.type == pygame.QUIT:
            gra_dziala = False

    # sprawdzanie czy glowa jest na jablku
    kolizja_z_jablkiem = pygame.sprite.spritecollideany(waz, jablka)
    if kolizja_z_jablkiem != None:
        kolizja_z_jablkiem.kill()
        waz.jedz_jablko()
        punkty += 1 
        jablko = Jablko()
        jablka.add(jablko)

    
    # rysowanie tła 
    ekran.blit(tlo, (0, 0))
    # rysowanie glowy węża
    ekran.blit(waz.obraz, waz.rect)
    # rysowanie segmentów węza
    waz.rysuj_segmenty(ekran)
    # rysowanie jablek
    for jablko in jablka:
        ekran.blit(jablko.obraz, jablko.rect)
    # wyswietlanie wyniku
    tekst_z_nickiem = moja_czcionka.render(f'Wynik:{punkty}',False, (0,0,0))
    ekran.blit(tekst_z_nickiem,(16,16))
    #sprawdz czy koniec gry
    gra_dziala = not waz.sprawdz_kolizje
    # czyszczenie ekranu
    pygame.display.flip()
    # ustawienie stałego 30 FPS
    zegar.tick(30)

# opóźnienie 3 sekundy
time.sleep(3)
# zamknięcie aplikacji
pygame.quit()