Untitled
unknown
plain_text
2 years ago
4.4 kB
4
Indexable
import pygame import random kolor_niebieski = (0, 0, 255) kolor_czerwony = (255, 0, 0) kolor_czarny = (0, 0, 0) screen = pygame.display.set_mode((1000, 700)) zegar = pygame.time.Clock() tlo = pygame.image.load('tlo.png') jablko = pygame.image.load('jablko.png') class Kwadrat(): bok = 50 def __init__(self, kolumna, wiersz, kolor=kolor_czarny): self.kolumna = kolumna self.wiersz = wiersz self.kolor = kolor self.grafika = None 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.polozenie = [[0, 0], [1, 0]] # przy zmianie dlugosci trzeba tutaj dodać kolejne elementy np [2, 0], [3, 0],[4, 0] dopóki piczba alementów nie będzie taka sama co dlugosc self.kierunek = [1, 0] self.poprzedni_kierunek = [1, 0] def update(self, jedzenie): nowa_glowa = list(self.polozenie[-1]) 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") a = random.randint(0, 19) b = random.randint(0, 13) jedzenie.polozenie = [a, b] else: print("teraz nie jem") self.polozenie.pop(0) self.polozenie.append(nowa_glowa) print(jedzenie.polozenie, nowa_glowa) class Jedzenie(): def __init__(self): self.polozenie = [random.randint(0, 19), random.randint(0, 13)] class Plansza(): def __init__(self): self.tablica = [] for i in range(14): wiersz = [] for j in range(20): wiersz.append(Kwadrat(j, i)) self.tablica.append(wiersz) self.snake = Snake() self.jedzenie = Jedzenie() def update(self): for i in range(14): for j in range(20): self.tablica[i][j].kolor = kolor_czarny glowa = self.snake.polozenie[-1] 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.polozenie) - 1): if glowa == self.snake.polozenie[i]: print("Zderzenie z samym soba") return -1 for i in range(len(self.snake.polozenie)): x = self.snake.polozenie[i][0] y = self.snake.polozenie[i][1] self.tablica[y][x].kolor = kolor_niebieski self.tablica[self.jedzenie.polozenie[1]][self.jedzenie.polozenie[0]].grafika = jablko self.snake.update(self.jedzenie) def rysuj(self): if self.update() == -1: return -1 for i in range(14): for j in range(20): if self.tablica[i][j].kolor != kolor_czarny or self.tablica[i][j].grafika != None: self.tablica[i][j].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(tlo, (0, 0)) if plansza.rysuj() == -1: break pygame.display.update() zegar.tick(2) input()
Editor is loading...