Untitled
unknown
plain_text
a year ago
9.5 kB
1
Indexable
Never
import pygame import random from pygame.locals import * pygame.init() kolor_niebieski = (0, 0, 255) kolor_czerwony = (255, 0, 0) screen = pygame.display.set_mode((1000, 700), 0, 32) zegar = pygame.time.Clock() kolor_zielonkawy = (71, 102, 58) grafika_play = pygame.image.load('play.png') grafika_exit = pygame.image.load('quit.png') grafika_tlo = pygame.image.load('tlo.png') grafika_jablko = pygame.image.load('jablko.png') grafika_napis = pygame.image.load('tekst.png') grafiki_waz = { 'glowa_gora': pygame.image.load('waz_glowa_gora.png'), 'glowa_dol': pygame.image.load('waz_glowa_dol.png'), 'glowa_prawo': pygame.image.load('waz_glowa_prawo.png'), 'glowa_lewo': pygame.image.load('waz_glowa_lewo.png'), 'ogon_gora': pygame.image.load('waz_ogon_dol.png'), 'ogon_dol': pygame.image.load('waz_ogon_gora.png'), 'ogon_prawo': pygame.image.load('waz_ogon_lewo.png'), 'ogon_lewo': pygame.image.load('waz_ogon_prawo.png'), 'cialo_poziomo': pygame.image.load('waz_poziomo.png'), 'cialo_pionowo': pygame.image.load('waz_pionowo.png'), 'lewo_dol': pygame.image.load('waz_zakret_dol_lewo.png'), 'prawo_dol': pygame.image.load('waz_zakret_dol_prawo.png'), 'lewo_gora': pygame.image.load('waz_zakret_gora_lewo.png'), 'prawo_gora': pygame.image.load('waz_zakret_gora_prawo.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 ElementCiala(Kwadrat): def __init__(self, kolumna, wiersz, kierunek): self.kierunek = kierunek Kwadrat.__init__(self, kolumna, wiersz) class Snake(): def __init__(self): self.dlugosc = 3 self.tablica = [] self.tablica.append(ElementCiala(0, 0, 'prawo')) self.tablica.append(ElementCiala(0, 1, 'prawo')) self.tablica.append(ElementCiala(0, 2, 'prawo')) self.kierunek = [1, 0] self.poprzedni_kierunek = [1, 0] self.update_grafiki() 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) k = None if self.kierunek == [1, 0]: k = 'prawo' elif self.kierunek == [-1, 0]: k = 'lewo' elif self.kierunek == [0, -1]: k = 'gora' else: k = 'dol' self.tablica.append(ElementCiala(nowa_glowa[0], nowa_glowa[1], k)) self.update_grafiki() def update_grafiki(self): for i in range(1, len(self.tablica) - 1): if self.tablica[i].kierunek == 'prawo': if self.tablica[i + 1].kierunek == 'dol': self.tablica[i].grafika = grafiki_waz['lewo_dol'] elif self.tablica[i + 1].kierunek == 'gora': self.tablica[i].grafika = grafiki_waz['lewo_gora'] else: self.tablica[i].grafika = grafiki_waz['cialo_poziomo'] elif self.tablica[i].kierunek == 'lewo': if self.tablica[i + 1].kierunek == 'dol': self.tablica[i].grafika = grafiki_waz['prawo_dol'] elif self.tablica[i + 1].kierunek == 'gora': self.tablica[i].grafika = grafiki_waz['prawo_gora'] else: self.tablica[i].grafika = grafiki_waz['cialo_poziomo'] elif self.tablica[i].kierunek == 'gora': if self.tablica[i + 1].kierunek == 'prawo': self.tablica[i].grafika = grafiki_waz['prawo_dol'] elif self.tablica[i + 1].kierunek == 'lewo': self.tablica[i].grafika = grafiki_waz['lewo_dol'] else: self.tablica[i].grafika = grafiki_waz['cialo_pionowo'] elif self.tablica[i].kierunek == 'dol': if self.tablica[i + 1].kierunek == 'prawo': self.tablica[i].grafika = grafiki_waz['prawo_gora'] elif self.tablica[i + 1].kierunek == 'lewo': self.tablica[i].grafika = grafiki_waz['lewo_gora'] else: self.tablica[i].grafika = grafiki_waz['cialo_pionowo'] # grafika ogona if self.tablica[1].kierunek == 'prawo': self.tablica[0].grafika = grafiki_waz['ogon_prawo'] elif self.tablica[1].kierunek == 'lewo': self.tablica[0].grafika = grafiki_waz['ogon_lewo'] elif self.tablica[1].kierunek == 'dol': self.tablica[0].grafika = grafiki_waz['ogon_dol'] elif self.tablica[1].kierunek == 'gora': self.tablica[0].grafika = grafiki_waz['ogon_gora'] # grafika glowy if self.tablica[-1].kierunek == 'prawo': self.tablica[-1].grafika = grafiki_waz['glowa_prawo'] elif self.tablica[-1].kierunek == 'lewo': self.tablica[-1].grafika = grafiki_waz['glowa_lewo'] elif self.tablica[-1].kierunek == 'dol': self.tablica[-1].grafika = grafiki_waz['glowa_dol'] elif self.tablica[-1].kierunek == 'gora': self.tablica[-1].grafika = grafiki_waz['glowa_gora'] def rysuj(self): for element in self.tablica: print('rysuje element ciala') print(f'grafika = {element.grafika}') print(f'polozenie = {element.polozenie()}') print(f'kolor = {element.kolor}') print(f'kierunek = {element.kierunek}') element.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() def gra(): 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) def main(): click = False while 1: screen.fill(kolor_zielonkawy) przycisk_graj = pygame.Rect(389, 207.5, 222, 95) przycisk_exit = pygame.Rect(389, 452.5, 222, 95) click = False for event in pygame.event.get(): if event.type == MOUSEBUTTONDOWN: if event.button == 1: click = True myszka_x, myszka_y = pygame.mouse.get_pos() if przycisk_graj.collidepoint((myszka_x, myszka_y)): if click: gra() elif przycisk_exit.collidepoint((myszka_x, myszka_y)): if click: exit() pygame.draw.rect(screen, (255, 0, 0), przycisk_graj) pygame.draw.rect(screen, (255, 0, 0), przycisk_exit) screen.blit(grafika_play, (389, 207.5)) screen.blit(grafika_exit, (389, 452.5)) screen.blit(grafika_napis, (325, 25)) pygame.display.update() main()