Upload files to "/"
This commit is contained in:
parent
296f12d7d9
commit
45a159a0fc
84
main.py
84
main.py
@ -3,32 +3,53 @@ import random
|
|||||||
import time
|
import time
|
||||||
import numpy
|
import numpy
|
||||||
import threading
|
import threading
|
||||||
|
import collections
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
kuchnia_xy = 0
|
kuchnia_xy = 0
|
||||||
pozycja_startowa = 0
|
pozycja_startowa = 0
|
||||||
|
|
||||||
#------------Ustawienia siatki
|
# ------------Ustawienia siatki
|
||||||
blockSize = 60
|
blockSize = 60
|
||||||
rows = 14
|
rows = 14
|
||||||
columns = 24
|
columns = 24
|
||||||
|
|
||||||
#-----------------------------Inicjacja klas
|
|
||||||
|
# -----------------------------Inicjacja klas
|
||||||
|
class Stan:
|
||||||
|
def __init__(self,position, kierunek):
|
||||||
|
self.position = position
|
||||||
|
self.kierunek = kierunek
|
||||||
|
|
||||||
|
toVisit = deque()
|
||||||
|
visited = deque()
|
||||||
|
|
||||||
|
def succ(self):
|
||||||
|
newStan: Stan(x+1, y, 1)
|
||||||
|
queue = deque([x, y, self.kierunek])
|
||||||
|
print(queue[0])
|
||||||
|
|
||||||
|
#def BFS:
|
||||||
|
|
||||||
|
|
||||||
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 = 70 # od 0 do 100, preferowane 70
|
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.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
|
self.kierunek = 0 # 0 - północ, 1 - wschód, 2 - południe, 3 - zachód
|
||||||
|
|
||||||
def wklej(self):
|
def wklej(self):
|
||||||
kelnerRotated = pygame.transform.rotate(kelnerImg, -90 * kelner.kierunek)
|
kelnerRotated = pygame.transform.rotate(kelnerImg, -90 * kelner.kierunek)
|
||||||
screen.blit(kelnerRotated, (self.x * blockSize, self.y * blockSize))
|
screen.blit(kelnerRotated, (self.x * blockSize, self.y * blockSize))
|
||||||
|
|
||||||
|
#def planuj_ruch(self):
|
||||||
|
|
||||||
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"
|
||||||
@ -52,13 +73,13 @@ class Kelner:
|
|||||||
|
|
||||||
def idz_do_przodu(self):
|
def idz_do_przodu(self):
|
||||||
if self.kierunek == 0:
|
if self.kierunek == 0:
|
||||||
self.y -= 1
|
self.y -= 1
|
||||||
elif self.kierunek == 1:
|
elif self.kierunek == 1:
|
||||||
self.x += 1
|
self.x += 1
|
||||||
elif self.kierunek == 2:
|
elif self.kierunek == 2:
|
||||||
self.y += 1
|
self.y += 1
|
||||||
elif self.kierunek == 3:
|
elif self.kierunek == 3:
|
||||||
self.x -= 1
|
self.x -= 1
|
||||||
|
|
||||||
|
|
||||||
class Stolik:
|
class Stolik:
|
||||||
@ -71,13 +92,13 @@ class Stolik:
|
|||||||
screen.blit(stolikImg, (self.x * blockSize, self.y * blockSize))
|
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 = ["8 8", "4 12", "16 8", "12 12", "20 12"]
|
coords = ["8 8", "4 12", "16 8", "12 12", "20 12"]
|
||||||
|
|
||||||
#Tworzenie listy stolikow
|
# Tworzenie listy stolikow
|
||||||
stoliki = []
|
stoliki = []
|
||||||
for coord in coords:
|
for coord in coords:
|
||||||
x, y = map(int, coord.split())
|
x, y = map(int, coord.split())
|
||||||
@ -86,7 +107,7 @@ for coord in coords:
|
|||||||
pygame.init()
|
pygame.init()
|
||||||
pygame.display.set_caption("Automatyczny kelner")
|
pygame.display.set_caption("Automatyczny kelner")
|
||||||
|
|
||||||
#----------------wymiary okna
|
# ----------------wymiary okna
|
||||||
width = columns * blockSize
|
width = columns * blockSize
|
||||||
height = rows * blockSize
|
height = rows * blockSize
|
||||||
|
|
||||||
@ -101,18 +122,22 @@ 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, (blockSize * 2, blockSize * 2))
|
kitchenImg = pygame.transform.scale(kitchenImg, (blockSize * 2, blockSize * 2))
|
||||||
|
|
||||||
|
|
||||||
def kuchnia(x, y):
|
def kuchnia(x, y):
|
||||||
screen.blit(kitchenImg, (x * blockSize, y * blockSize))
|
screen.blit(kitchenImg, (x * blockSize, y * blockSize))
|
||||||
|
|
||||||
|
|
||||||
def menu(x, y):
|
def menu(x, y):
|
||||||
screen.blit(menuImg, (x * blockSize, y * blockSize))
|
screen.blit(menuImg, (x * blockSize, y * blockSize))
|
||||||
|
|
||||||
|
|
||||||
def wypiszOkno():
|
def wypiszOkno():
|
||||||
screen.fill((0, 0, 0))
|
screen.fill((0, 0, 0))
|
||||||
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)
|
||||||
pygame.draw.rect(screen, (200, 200, 200), rect, 1) #-------------Wypisz kratę -TA
|
pygame.draw.rect(screen, (200, 200, 200), rect, 1) # -------------Wypisz kratę -TA
|
||||||
|
|
||||||
|
|
||||||
run = True
|
run = True
|
||||||
|
|
||||||
@ -126,53 +151,52 @@ while run:
|
|||||||
|
|
||||||
for stolik in stoliki:
|
for stolik in stoliki:
|
||||||
stolik.wklej()
|
stolik.wklej()
|
||||||
|
|
||||||
kelner.wklej()
|
kelner.wklej()
|
||||||
|
|
||||||
if kelner.stan == "wraca":
|
if kelner.stan == "wraca":
|
||||||
menu(kelner.x, kelner.y)
|
menu(kelner.x, kelner.y)
|
||||||
|
|
||||||
licznik += 1
|
licznik += 1
|
||||||
|
|
||||||
#------------weź zamowienie
|
# ------------weź zamowienie
|
||||||
for stolik in stoliki:
|
for stolik in stoliki:
|
||||||
if stolik.zamowione == True:
|
if stolik.zamowione == True:
|
||||||
menu(stolik.x, stolik.y)
|
menu(stolik.x, stolik.y)
|
||||||
if kelner.stan == "stoi":
|
if kelner.stan == "stoi":
|
||||||
kelner.stolik_docelowy = stolik
|
kelner.stolik_docelowy = stolik
|
||||||
|
#kelner.planuj_ruch()
|
||||||
kelner.idz_do_stolika()
|
kelner.idz_do_stolika()
|
||||||
|
|
||||||
#----------Losuje stoliki, które dokonają zamówienia
|
# ----------Losuje stoliki, które dokonają zamówienia
|
||||||
if kelner.stan == "stoi":
|
if kelner.stan == "stoi":
|
||||||
for stolik in stoliki:
|
for stolik in stoliki:
|
||||||
if stolik.zamowione == True:
|
if stolik.zamowione == True:
|
||||||
break
|
break
|
||||||
for i in range(len(stoliki)):
|
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.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
|
||||||
#--------------Zmiana kierunku kelnera
|
|
||||||
if kelner.x != kelner.cel_x:
|
if kelner.x != kelner.cel_x:
|
||||||
if kelner.x < kelner.cel_x:
|
if kelner.x < kelner.cel_x:
|
||||||
kelner.kierunek = 1
|
kelner.kierunek = 1
|
||||||
else:
|
else:
|
||||||
kelner.kierunek = 3
|
kelner.kierunek = 3
|
||||||
else:
|
else:
|
||||||
if kelner.y < kelner.cel_y: #zmieniamy pozycje Y dopiero, gdy pozycja X bedzie prawidlowa
|
if kelner.y < kelner.cel_y: # zmieniamy pozycje Y dopiero, gdy pozycja X bedzie prawidlowa
|
||||||
kelner.kierunek = 2
|
kelner.kierunek = 2
|
||||||
else:
|
else:
|
||||||
kelner.kierunek = 0
|
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
|
||||||
kelner.idz_do_przodu()
|
kelner.idz_do_przodu()
|
||||||
|
|
||||||
|
# ----------------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:
|
||||||
if kelner.stan == "odbiera":
|
if kelner.stan == "odbiera":
|
||||||
kelner.stolik_docelowy.zamowione = False
|
kelner.stolik_docelowy.zamowione = False
|
||||||
@ -181,7 +205,6 @@ while run:
|
|||||||
elif kelner.stan == "wraca":
|
elif kelner.stan == "wraca":
|
||||||
kelner.stan = "stoi"
|
kelner.stan = "stoi"
|
||||||
|
|
||||||
|
|
||||||
time.sleep(0.001)
|
time.sleep(0.001)
|
||||||
|
|
||||||
key = pygame.key.get_pressed()
|
key = pygame.key.get_pressed()
|
||||||
@ -189,4 +212,5 @@ while run:
|
|||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
run = False
|
run = False
|
||||||
|
|
||||||
pygame.quit()
|
pygame.quit()
|
Loading…
Reference in New Issue
Block a user