import pygame
import random
import time
from Jablko import Jablko
from Waz import Waz
from Kierunek import Kierunek

SZEROKOSC_EKRANU = 800
WYSOKOSC_EKRANU = 608
punkty = 0
tlo = pygame.Surface((SZEROKOSC_EKRANU, WYSOKOSC_EKRANU))

obrazki = [
   pygame.image.load("images/background.png"),
   pygame.image.load("images/background1.png"),
   pygame.image.load("images/background2.png"),
   pygame.image.load("images/background3.png"),
   pygame.image.load("images/background4.png"),
   pygame.image.load("images/background5.png"),
   pygame.image.load("images/background6.png"),
]


for i in range(25):
   for j in range(19):
      obraz = random.choice(obrazki)
      maska = (random.randrange(0,20), random.randrange(0,20), random.randrange(0,20))
      obraz = obraz.copy()
      obraz.fill(maska, special_flags=pygame.BLEND_ADD)
      tlo.blit(obraz, (i*32, j*32))


pygame.init()

ekran = pygame.display.set_mode([SZEROKOSC_EKRANU, WYSOKOSC_EKRANU])
zegar = pygame.time.Clock()

moja_czcionka = pygame.font.SysFont("Comic Sans MS", 40)

waz = Waz()
opoznienie = 200
PORUSZ_WEZEM = pygame.USEREVENT + 1
pygame.time.set_timer(PORUSZ_WEZEM, opoznienie)

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.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)
         if zdarzenie.key == pygame.K_o:
            opoznienie += 50 
            pygame.time.set_timer(PORUSZ_WEZEM, opoznienie)
         if zdarzenie.key == pygame.K_p: 
            opoznienie = max(50, opoznienie - 50)
            pygame.time.set_timer(PORUSZ_WEZEM, opoznienie)
      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)

   ekran.blit(tlo, (0,0))
   ekran.blit(waz.obraz, waz.rect)
   waz.rysuj_segmenty(ekran)
   for jablko in jablka:
      ekran.blit(jablko.obraz, jablko.rect)
   tekst_z_wynikiem = moja_czcionka.render(f"Wynik: {punkty}", False, (0,0,0))
   ekran.blit(tekst_z_wynikiem, (16, 16))
   if waz.sprawdz_kolizje():
      tekst_z_przegrana = moja_czcionka.render("Przegrana", False, (200,0,0))
      ekran.blit(tekst_z_przegrana, (SZEROKOSC_EKRANU/2-100, WYSOKOSC_EKRANU/2-50))
      gra_dziala = False
   pygame.display.flip()
   zegar.tick(30)

time.sleep(3)
pygame.quit()
