added kelner's direction and rotation

This commit is contained in:
s481851 2024-04-17 21:22:50 +02:00
parent f508f6c4d0
commit 296f12d7d9

44
main.py
View File

@ -23,9 +23,11 @@ class Kelner:
self.chodzi = True self.chodzi = True
self.cel_x = x self.cel_x = x
self.cel_y = y self.cel_y = y
self.kierunek = 0 # 0 - północ, 1 - wschód, 2 - południe, 3 - zachód
def wklej(self): def wklej(self):
screen.blit(kelnerImg, (self.x * blockSize, self.y * blockSize)) kelnerRotated = pygame.transform.rotate(kelnerImg, -90 * kelner.kierunek)
screen.blit(kelnerRotated, (self.x * blockSize, self.y * blockSize))
def idz_do_stolika(self): def idz_do_stolika(self):
self.cel_x, self.cel_y = self.stolik_docelowy.x, self.stolik_docelowy.y self.cel_x, self.cel_y = self.stolik_docelowy.x, self.stolik_docelowy.y
@ -36,6 +38,28 @@ class Kelner:
self.stolik_docelowy = None self.stolik_docelowy = None
kelner.stan = "wraca" kelner.stan = "wraca"
def obrot_w_lewo(self):
if self.kierunek == 0:
self.kierunek = 3
else:
self.kierunek -= 1
def obrot_w_prawo(self):
if self.kierunek == 3:
self.kierunek = 0
else:
self.kierunek += 1
def idz_do_przodu(self):
if self.kierunek == 0:
self.y -= 1
elif self.kierunek == 1:
self.x += 1
elif self.kierunek == 2:
self.y += 1
elif self.kierunek == 3:
self.x -= 1
class Stolik: class Stolik:
def __init__(self, x, y): def __init__(self, x, y):
@ -130,12 +154,22 @@ while run:
#print(kelner.stan)--------------------------Wypisuje stan kelnera #print(kelner.stan)--------------------------Wypisuje stan kelnera
#print(f"{kelner.x} {kelner.y}")-------------Wypisuje wspolrzedne kelnera #print(f"{kelner.x} {kelner.y}")-------------Wypisuje wspolrzedne kelnera
#--------------Zmiana kierunku kelnera
if kelner.x != kelner.cel_x:
if kelner.x < kelner.cel_x:
kelner.kierunek = 1
else:
kelner.kierunek = 3
else:
if kelner.y < kelner.cel_y: #zmieniamy pozycje Y dopiero, gdy pozycja X bedzie prawidlowa
kelner.kierunek = 2
else:
kelner.kierunek = 0
#----------------Zmiana pozycji kelnera #----------------Zmiana pozycji kelnera
if kelner.chodzi == True and licznik % (101 - kelner.speed) == 0: #ograniczenie prędkości if kelner.chodzi == True and licznik % (101 - kelner.speed) == 0: #ograniczenie prędkości
if kelner.x != kelner.cel_x: kelner.idz_do_przodu()
kelner.x += numpy.sign(kelner.cel_x - kelner.x)
else:
kelner.y += numpy.sign(kelner.cel_y - kelner.y) #zmieniamy pozycje Y dopiero, gdy pozycja X bedzie prawidlowa
#----------------Sprawdzenie, czy kelner jest u celu #----------------Sprawdzenie, czy kelner jest u celu