Untitled

 avatar
unknown
plain_text
2 years ago
3.8 kB
4
Indexable
import pygame
import random

kolor_niebieski = (0, 0, 255)
kolor_czerwony = (255, 0, 0)
screen = pygame.display.set_mode((1000, 700))
zegar = pygame.time.Clock()

grafika_tlo = pygame.image.load('tlo.png')
grafika_jablko = pygame.image.load('jablko.png')

class Kwadrat():
    bok = 50

    def __init__(self, kolumna, wiersz, kolor = None, grafika = None):
        self.kolumna = kolumna
        self.wiersz = wiersz
        self.kolor = kolor
        self.grafika = grafika

    def polozenie(self):
        return list([self.kolumna, self.wiersz])

    def rysuj(self):
        print(f"self.grafika = {self.grafika}")
        if self.grafika == None:
            pygame.draw.rect(screen, self.kolor, (self.kolumna * self.bok, self.wiersz * self.bok, self.bok, self.bok))
        else:

            screen.blit(self.grafika, (self.kolumna * self.bok, self.wiersz * self.bok, self.bok, self.bok))

class Snake():
    def __init__(self):
        self.dlugosc = 2
        self.tablica = []
        self.tablica.append(Kwadrat(0, 0, kolor_niebieski))
        self.tablica.append(Kwadrat(0, 1, kolor_niebieski))
        self.kierunek = [1, 0]
        self.poprzedni_kierunek = [1, 0]


    def update(self, jedzenie):
        nowa_glowa = self.tablica[-1].polozenie()
        nowa_glowa[0] += self.kierunek[0]
        nowa_glowa[1] += self.kierunek[1]
        self.poprzedni_kierunek = self.kierunek
        if jedzenie.polozenie() == nowa_glowa:
            print("teraz bede jadl")
            jedzenie.kolumna = random.randint(0, 19)
            jedzenie.wiersz = random.randint(0, 13)
        else:
            print("teraz nie jem")
            self.tablica.pop(0)
        self.tablica.append(Kwadrat(nowa_glowa[0], nowa_glowa[1], kolor_niebieski))


    def rysuj(self):
        for kwadrat in self.tablica:
            kwadrat.rysuj()



class Plansza():
    def __init__(self):
        self.snake = Snake()
        kolumna = random.randint(0, 19)
        wiersz = random.randint(0, 13)
        self.jedzenie = Kwadrat(kolumna, wiersz, None, grafika_jablko)

    def update(self):
        glowa = self.snake.tablica[-1].polozenie()
        if glowa[0] >= 20 or glowa[0] < 0 or glowa[1] >= 14 or glowa[1] < 0:
            print("!!!!! Uderzenie")
            return -1
        for i in range(len(self.snake.tablica) - 1):
            if glowa == self.snake.tablica[i].polozenie():
                print("Zderzenie z samym soba")
                return -1

        self.snake.update(self.jedzenie)

    def rysuj(self):
        if self.update() == -1:
            return -1

        self.snake.rysuj()
        self.jedzenie.rysuj()




plansza = Plansza()

while 1:
    # wylacza okienko gry po klijnieciu X'a
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            break
        #obsluga klawiatury
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_DOWN:
                if plansza.snake.poprzedni_kierunek != [0, -1]:
                    plansza.snake.kierunek = [0, 1]
            if event.key == pygame.K_UP:
                if plansza.snake.poprzedni_kierunek != [0, 1]:
                    plansza.snake.kierunek = [0, -1]
            if event.key == pygame.K_LEFT:
                if plansza.snake.poprzedni_kierunek != [1, 0]:
                    plansza.snake.kierunek = [-1, 0]
            if event.key == pygame.K_RIGHT:
                if plansza.snake.poprzedni_kierunek != [-1, 0]:
                    plansza.snake.kierunek = [1, 0]

    screen.blit(grafika_tlo, (0, 0))
    if plansza.rysuj() == -1:
        break
    pygame.display.update()

    zegar.tick(2)

input()
Editor is loading...