View difference between Paste ID: qjE0RgcM and bQZMwhsh
SHOW: | | - or go back to the newest paste.
1
import pygame
2
import copy
3
from Kierunek import Kierunek
4
from Segment import Segment
5
6
class Waz(pygame.sprite.Sprite):
7
    def __init__(self):
8
        #oryginalny obraz glowy
9
        self.oryginalny_obraz = pygame.image.load("images/head.png")
10
        #obraz pomocniczny, bedzie sie on zmienial przy zmienie kierunku gracza
11
        self.obraz = pygame.transform.rotate(self.oryginalny_obraz, 0)
12
        #wspolrzednie glowy
13
        self.rect = self.obraz.get_rect(center=(12*32+16, 9*32+16))
14
        #zmienne odpowiedzialne za kierunek, oraz nowy wyznaczony kierunek
15
        self.kierunek = Kierunek.GORA
16
        self.nowy_kierunek = Kierunek.GORA
17
        #zapisana ostatnia pozycja weza, uzyjemy jej do zmiany pozycji segmentow
18
        self.ostatnia_pozycja = self.rect
19
        #informacje o dodaniu nowego segmentu oraz ich lista
20
        self.dodaj_segment = False
21
        self.segmenty = []
22
23
    def zmien_kierunek(self, kierunek):
24
        zmiana_mozliwa = True
25
        if kierunek == Kierunek.GORA and self.kierunek == Kierunek.DOL:
26
            zmiana_mozliwa = False
27
        if kierunek == Kierunek.DOL and self.kierunek == Kierunek.GORA:
28
            zmiana_mozliwa = False
29
        if kierunek == Kierunek.LEWO and self.kierunek == Kierunek.PRAWO:
30
            zmiana_mozliwa = False
31
        if kierunek == Kierunek.PRAWO and self.kierunek == Kierunek.LEWO:
32
            zmiana_mozliwa = False
33
        if zmiana_mozliwa: 
34
            self.nowy_kierunek = kierunek
35
36
    def sprawdz_kolizje(self):
37
        #ugryzienie ogona
38
        for segment in self.segmenty:
39
            if self.rect.topleft == segment.pozycja.topleft:
40
                return True
41
42
        #wyjscie poza ekran
43
        if self.rect.top < 0 or self.rect.top >= 608:
44
            return True
45
        if self.rect.left < 0 or self.rect.left >= 800:
46
            return True
47
        
48
        return False
49
50
    def aktualizuj(self):
51
        self.kierunek = self.nowy_kierunek
52
        self.obraz = pygame.transform.rotate(self.oryginalny_obraz, (self.kierunek.value*-90))
53
54
        self.ostatnia_pozycja = copy.deepcopy(self.rect)
55
        if self.kierunek == Kierunek.GORA:
56
            self.rect.move_ip(0, -32)
57
        if self.kierunek == Kierunek.PRAWO:
58
            self.rect.move_ip(32, 0)
59
        if self.kierunek == Kierunek.LEWO:
60
            self.rect.move_ip(-32, 0)
61
        if self.kierunek == Kierunek.DOL:
62
            self.rect.move_ip(0, 32)
63
        
64
        #poruszanie segmentami
65
        for i in range(len(self.segmenty)):
66
            if i == 0:
67
                self.segmenty[i].przesun(self.ostatnia_pozycja)
68
            else:
69
                self.segmenty[i].przesun(self.segmenty[i-1].ostatnia_pozycja)
70
71
        #dodawanie nowego segmentu
72
        if self.dodaj_segment:
73
            nowy_segment = Segment()
74
75
            nowa_pozycja = None
76
            if len(self.segmenty) > 0:
77
                nowa_pozycja = copy.deepcopy(self.segmenty[-1].pozycja)
78
            else:
79
                nowa_pozycja = copy.deepcopy(self.ostatnia_pozycja)
80
            nowy_segment.pozycja = nowa_pozycja
81
            self.segmenty.append(nowy_segment)
82
            self.dodaj_segment = False
83
    
84
    def rysuj_segmenty(self, ekran):
85
        for segment in self.segmenty:
86
            ekran.blit(segment.obraz, segment.pozycja)
87
88
    def jedz_jablko(self):
89
        self.dodaj_segment = True