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/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"),
    pygame.image.load("images/background7.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("Impact", 24)

waz = Waz()
predkosc = 200
PORUSZ_WEZEM = pygame.USEREVENT + 1
pygame.time.set_timer(PORUSZ_WEZEM, predkosc)


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_p:
                predkosc -= 50
                pygame.time.set_timer(PORUSZ_WEZEM, predkosc)
            if zdarzenie.key == pygame.K_o:
                predkosc += 50
                pygame.time.set_timer(PORUSZ_WEZEM, predkosc)
        elif zdarzenie.type == PORUSZ_WEZEM:
            waz.aktulizuj()
        elif zdarzenie.type == pygame.QUIT:
            gra_dziala = False

    kolizja_z_jabkiem = pygame.sprite.spritecollideany(waz, jablka) 
    if kolizja_z_jabkiem != None:
        kolizja_z_jabkiem.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"Score: {punkty}", False, (0,0,0))
    ekran.blit(tekst_z_wynikiem, (16,16))
    if waz.sprawdz_kolizje():
        moja_czcionka2 = pygame.font.SysFont("Impact", 100)
        tekst_z_przegrana = moja_czcionka2.render("YOU LOSE", False, (200, 0, 0))
        ekran.blit(tekst_z_przegrana, (Szerokosc_ekranu/2 - 100, Wysokosc_ekranu/2))
        gra_dziala = False
    pygame.display.flip()
    zegar.tick(30)

time.sleep(3)
pygame.quit()