import pygame
import random
import time
from Kierunek import Kierunek
from Waz import Waz
from Jablko import Jablko

#szerokość i wysokość ekranu
SZEROKOSC_EKRANU = 800
WYSOKOSC_EKRANU = 600
Punkty = 0

#stworzenie tła
tlo = pygame.Surface((SZEROKOSC_EKRANU, WYSOKOSC_EKRANU))

for i in range(25):#ilość kafelków na szerokość
    for j in range(19):#ilość kafelków na wysokość
        obraz = pygame.image.load("images/background.png") # szachownica if i%2 == j%2 -> jasny else -> ciemny
        maska = (random.randrange(0, 20), random.randrange(0, 20), random.randrange(0, 20))
        obraz.fill(maska, special_flags=pygame.BLEND_ADD)
        tlo.blit(obraz, (i*32, j*32))

pygame.init()
#obiekty zegara i ekranu
zegar = pygame.time.Clock()
ekran = pygame.display.set_mode([SZEROKOSC_EKRANU, WYSOKOSC_EKRANU])

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()
#jablko2 = Jablko()
jablka = pygame.sprite.Group()
jablka.add(jablko)
#jablka.add(jablko2)

start=True
#główna pętla gry
gra_dziala=True
while gra_dziala:
    #obsługa zdarzeń
    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.zmien_kierunek(Kierunek.GORA)
            if zdarzenie.key == pygame.K_s:
                waz.zmien_kierunek(Kierunek.DOL)
            if zdarzenie.key == pygame.K_a:
                waz.zmien_kierunek(Kierunek.LEWO)
            if zdarzenie.key == pygame.K_d:
                waz.zmien_kierunek(Kierunek.PRAWO)

        elif zdarzenie.type == PORUSZ_WEZEM:
            waz.aktualizuj()
        elif zdarzenie.type == pygame.QUIT:
            gra_dziala = False


    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)

    if start:
        waz.jedz_jablko()
        waz.aktualizuj()
        waz.jedz_jablko()
        waz.aktualizuj()
        waz.jedz_jablko()
        waz.aktualizuj()
        start=False

    #rysowanie tła
    ekran.blit(tlo, (0, 0))
    #rysowanie głowy węża
    ekran.blit(waz.obraz, waz.rect)
    #rysowanie jabłek
    for jablko in jablka:
        ekran.blit(jablko.obraz, jablko.rect)

    tekst_w_wynikiem = moja_czcionka.render(f'Wynik: {Punkty}', False, (0, 0, 0))
    ekran.blit(tekst_w_wynikiem, (16, 16))
    #rysowanie segmentów
    waz.rysuj_segmenty(ekran)

    #sprawdzenie czy koniec gry
    if waz.sprawdz_kolizje():
        tekst_w_wynikiem = moja_czcionka.render(f'Przegrana: {Punkty}', False, (200, 0, 0))
        ekran.blit(tekst_w_wynikiem, (SZEROKOSC_EKRANU/2-50, WYSOKOSC_EKRANU/2))
        gra_dziala = False

    #wyczyszczenie ekranu
    pygame.display.flip()
    #ustawienie stałego 30 FPS
    zegar.tick(30)

#opóźnienie 3 sekund
time.sleep(3)
#zamknięcie aplikacji
pygame.quit()