changed system to grid-based
This commit is contained in:
parent
458a491f11
commit
f508f6c4d0
75
main.py
75
main.py
@ -4,29 +4,35 @@ import time
|
|||||||
import numpy
|
import numpy
|
||||||
import threading
|
import threading
|
||||||
|
|
||||||
kuchnia_xy = 40
|
kuchnia_xy = 0
|
||||||
pozycja_startowa = 5
|
pozycja_startowa = 0
|
||||||
|
|
||||||
|
#------------Ustawienia siatki
|
||||||
|
blockSize = 60
|
||||||
|
rows = 14
|
||||||
|
columns = 24
|
||||||
|
|
||||||
#-----------------------------Inicjacja klas
|
#-----------------------------Inicjacja klas
|
||||||
class Kelner:
|
class Kelner:
|
||||||
def __init__(self, x, y):
|
def __init__(self, x, y):
|
||||||
self.x = x
|
self.x = x
|
||||||
self.y = y
|
self.y = y
|
||||||
self.speed = 1 #---na razie nie zmieniać ;) działa dla 1 lub 5
|
self.speed = 70 # od 0 do 100, preferowane 70
|
||||||
self.stan = "stoi" # Stan kelnera: stoi, odbiera lub wraca
|
self.stan = "stoi" # Stan kelnera: stoi, odbiera lub wraca
|
||||||
self.stolik_docelowy = None # Stolik, do którego idzie kelner
|
self.stolik_docelowy = None # Stolik, do którego idzie kelner
|
||||||
|
self.chodzi = True
|
||||||
self.cel_x = x
|
self.cel_x = x
|
||||||
self.cel_y = y
|
self.cel_y = y
|
||||||
|
|
||||||
def wklej(self):
|
def wklej(self):
|
||||||
screen.blit(kelnerImg, (self.x, self.y))
|
screen.blit(kelnerImg, (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
|
||||||
kelner.stan = "odbiera"
|
kelner.stan = "odbiera"
|
||||||
|
|
||||||
def idz_do_kuchni(self):
|
def idz_do_kuchni(self):
|
||||||
self.cel_x, self.cel_y = pozycja_startowa, pozycja_startowa
|
self.cel_x, self.cel_y = kuchnia_xy, kuchnia_xy
|
||||||
self.stolik_docelowy = None
|
self.stolik_docelowy = None
|
||||||
kelner.stan = "wraca"
|
kelner.stan = "wraca"
|
||||||
|
|
||||||
@ -38,14 +44,14 @@ class Stolik:
|
|||||||
self.zamowione = False
|
self.zamowione = False
|
||||||
|
|
||||||
def wklej(self):
|
def wklej(self):
|
||||||
screen.blit(stolikImg, (self.x, self.y))
|
screen.blit(stolikImg, (self.x * blockSize, self.y * blockSize))
|
||||||
|
|
||||||
|
|
||||||
#--------------Inicjacja obiektów
|
#--------------Inicjacja obiektów
|
||||||
kelner = Kelner(pozycja_startowa,pozycja_startowa)
|
kelner = Kelner(pozycja_startowa,pozycja_startowa)
|
||||||
|
|
||||||
#-----------wspolrzedne stolikow
|
#-----------wspolrzedne stolikow
|
||||||
coords = ["325 320", "325 640", "885 320", "885 640"]
|
coords = ["8 8", "4 12", "16 8", "12 12", "20 12"]
|
||||||
|
|
||||||
#Tworzenie listy stolikow
|
#Tworzenie listy stolikow
|
||||||
stoliki = []
|
stoliki = []
|
||||||
@ -57,38 +63,28 @@ pygame.init()
|
|||||||
pygame.display.set_caption("Automatyczny kelner")
|
pygame.display.set_caption("Automatyczny kelner")
|
||||||
|
|
||||||
#----------------wymiary okna
|
#----------------wymiary okna
|
||||||
width = 1200
|
width = columns * blockSize
|
||||||
height = 800
|
height = rows * blockSize
|
||||||
|
|
||||||
screen = pygame.display.set_mode((width, height))
|
screen = pygame.display.set_mode((width, height))
|
||||||
|
|
||||||
kelnerImg = pygame.image.load("kelner.png")
|
kelnerImg = pygame.image.load("kelner.png")
|
||||||
kelnerImg = pygame.transform.scale(kelnerImg, (70, 70))
|
kelnerImg = pygame.transform.scale(kelnerImg, (blockSize, blockSize))
|
||||||
stolikImg = pygame.image.load("stolik.png")
|
stolikImg = pygame.image.load("stolik.png")
|
||||||
stolikImg = pygame.transform.scale(stolikImg, (70, 70))
|
stolikImg = pygame.transform.scale(stolikImg, (blockSize, blockSize))
|
||||||
menuImg = pygame.image.load("menu.png")
|
menuImg = pygame.image.load("menu.png")
|
||||||
menuImg = pygame.transform.scale(menuImg, (40, 40))
|
menuImg = pygame.transform.scale(menuImg, (blockSize / 2, blockSize / 2))
|
||||||
kitchenImg = pygame.image.load("kitchen.png")
|
kitchenImg = pygame.image.load("kitchen.png")
|
||||||
kitchenImg = pygame.transform.scale(kitchenImg, (100, 100))
|
kitchenImg = pygame.transform.scale(kitchenImg, (blockSize * 2, blockSize * 2))
|
||||||
|
|
||||||
def kuchnia(x, y):
|
def kuchnia(x, y):
|
||||||
screen.blit(kitchenImg, (x, y))
|
screen.blit(kitchenImg, (x * blockSize, y * blockSize))
|
||||||
|
|
||||||
def menu(x, y):
|
def menu(x, y):
|
||||||
screen.blit(menuImg, (x, y))
|
screen.blit(menuImg, (x * blockSize, y * blockSize))
|
||||||
|
|
||||||
#def randomoweZamowienia():
|
|
||||||
#threading.Timer(5.0).start()
|
|
||||||
#x = random.randrange(0, 4)
|
|
||||||
#if zamownienia[x] == 0:
|
|
||||||
#zamownienia[x] = 1
|
|
||||||
#stolikImg = pygame.image.load("menu.png") #----zmien
|
|
||||||
#stolikImg = pygame.transform.scale(stolikImg, (70, 70))
|
|
||||||
#screen.blit(stolikImg, (1, 1))
|
|
||||||
|
|
||||||
def wypiszOkno():
|
def wypiszOkno():
|
||||||
screen.fill((0, 0, 0))
|
screen.fill((0, 0, 0))
|
||||||
blockSize = 80
|
|
||||||
for x in range(0, width, blockSize):
|
for x in range(0, width, blockSize):
|
||||||
for y in range(0, height, blockSize):
|
for y in range(0, height, blockSize):
|
||||||
rect = pygame.Rect(x, y, blockSize, blockSize)
|
rect = pygame.Rect(x, y, blockSize, blockSize)
|
||||||
@ -96,13 +92,9 @@ def wypiszOkno():
|
|||||||
|
|
||||||
run = True
|
run = True
|
||||||
|
|
||||||
#def randomTime():
|
# czcionka = pygame.font.SysFont('Arial',50)
|
||||||
# x = random.randrange(2, 20)
|
|
||||||
# threading.Timer(x, randomTime).start()
|
|
||||||
# y=random.randrange(0, 2)
|
|
||||||
# return y
|
|
||||||
|
|
||||||
#whichPic = randomTime()
|
licznik = 0
|
||||||
|
|
||||||
while run:
|
while run:
|
||||||
wypiszOkno()
|
wypiszOkno()
|
||||||
@ -116,6 +108,8 @@ while run:
|
|||||||
if kelner.stan == "wraca":
|
if kelner.stan == "wraca":
|
||||||
menu(kelner.x, kelner.y)
|
menu(kelner.x, kelner.y)
|
||||||
|
|
||||||
|
licznik += 1
|
||||||
|
|
||||||
#------------weź zamowienie
|
#------------weź zamowienie
|
||||||
for stolik in stoliki:
|
for stolik in stoliki:
|
||||||
if stolik.zamowione == True:
|
if stolik.zamowione == True:
|
||||||
@ -129,19 +123,20 @@ while run:
|
|||||||
for stolik in stoliki:
|
for stolik in stoliki:
|
||||||
if stolik.zamowione == True:
|
if stolik.zamowione == True:
|
||||||
break
|
break
|
||||||
for i in range(4):
|
for i in range(len(stoliki)):
|
||||||
if random.randrange(2) == 1:
|
if random.randrange(2) == 1:
|
||||||
stoliki[i].zamowione = True
|
stoliki[i].zamowione = True
|
||||||
|
|
||||||
#print("kelner.x: " + str(kelner.x) + " kelner.y: " + str(kelner.y))-------------Wypisuje wspolrzedne kelnera
|
#print(kelner.stan)--------------------------Wypisuje stan kelnera
|
||||||
|
#print(f"{kelner.x} {kelner.y}")-------------Wypisuje wspolrzedne kelnera
|
||||||
|
|
||||||
#----------------Zmiana pozycji kelnera
|
#----------------Zmiana pozycji kelnera
|
||||||
if kelner.x != kelner.cel_x:
|
if kelner.chodzi == True and licznik % (101 - kelner.speed) == 0: #ograniczenie prędkości
|
||||||
kelner.x += kelner.speed * numpy.sign(kelner.cel_x - kelner.x)
|
if kelner.x != kelner.cel_x:
|
||||||
else:
|
kelner.x += numpy.sign(kelner.cel_x - kelner.x)
|
||||||
kelner.y += kelner.speed * numpy.sign(kelner.cel_y - kelner.y) #zmieniamy pozycje Y dopiero, gdy pozycja X bedzie prawidlowa
|
else:
|
||||||
|
kelner.y += numpy.sign(kelner.cel_y - kelner.y) #zmieniamy pozycje Y dopiero, gdy pozycja X bedzie prawidlowa
|
||||||
|
|
||||||
print(kelner.stan)
|
|
||||||
|
|
||||||
#----------------Sprawdzenie, czy kelner jest u celu
|
#----------------Sprawdzenie, czy kelner jest u celu
|
||||||
if kelner.x == kelner.cel_x and kelner.y == kelner.cel_y:
|
if kelner.x == kelner.cel_x and kelner.y == kelner.cel_y:
|
||||||
|
Loading…
Reference in New Issue
Block a user