From 45a159a0fcdd786a98d2cc4fcfcfb738c63264de Mon Sep 17 00:00:00 2001 From: s481847 Date: Thu, 18 Apr 2024 15:35:34 +0200 Subject: [PATCH] Upload files to "/" --- main.py | 84 ++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 30 deletions(-) diff --git a/main.py b/main.py index e193cc7..d410ea6 100644 --- a/main.py +++ b/main.py @@ -3,32 +3,53 @@ import random import time import numpy import threading +import collections +from collections import deque kuchnia_xy = 0 pozycja_startowa = 0 -#------------Ustawienia siatki +# ------------Ustawienia siatki blockSize = 60 rows = 14 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: def __init__(self, x, y): self.x = x 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.stolik_docelowy = None # Stolik, do którego idzie kelner self.chodzi = True self.cel_x = x 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): kelnerRotated = pygame.transform.rotate(kelnerImg, -90 * kelner.kierunek) screen.blit(kelnerRotated, (self.x * blockSize, self.y * blockSize)) + #def planuj_ruch(self): + def idz_do_stolika(self): self.cel_x, self.cel_y = self.stolik_docelowy.x, self.stolik_docelowy.y kelner.stan = "odbiera" @@ -52,13 +73,13 @@ class Kelner: def idz_do_przodu(self): if self.kierunek == 0: - self.y -= 1 + self.y -= 1 elif self.kierunek == 1: - self.x += 1 + self.x += 1 elif self.kierunek == 2: - self.y += 1 + self.y += 1 elif self.kierunek == 3: - self.x -= 1 + self.x -= 1 class Stolik: @@ -71,13 +92,13 @@ class Stolik: screen.blit(stolikImg, (self.x * blockSize, self.y * blockSize)) -#--------------Inicjacja obiektów -kelner = Kelner(pozycja_startowa,pozycja_startowa) +# --------------Inicjacja obiektów +kelner = Kelner(pozycja_startowa, pozycja_startowa) -#-----------wspolrzedne stolikow +# -----------wspolrzedne stolikow coords = ["8 8", "4 12", "16 8", "12 12", "20 12"] -#Tworzenie listy stolikow +# Tworzenie listy stolikow stoliki = [] for coord in coords: x, y = map(int, coord.split()) @@ -86,7 +107,7 @@ for coord in coords: pygame.init() pygame.display.set_caption("Automatyczny kelner") -#----------------wymiary okna +# ----------------wymiary okna width = columns * 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.transform.scale(kitchenImg, (blockSize * 2, blockSize * 2)) + def kuchnia(x, y): screen.blit(kitchenImg, (x * blockSize, y * blockSize)) + def menu(x, y): screen.blit(menuImg, (x * blockSize, y * blockSize)) + def wypiszOkno(): screen.fill((0, 0, 0)) for x in range(0, width, blockSize): for y in range(0, height, 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 @@ -126,53 +151,52 @@ while run: for stolik in stoliki: stolik.wklej() - + kelner.wklej() if kelner.stan == "wraca": - menu(kelner.x, kelner.y) + menu(kelner.x, kelner.y) licznik += 1 - #------------weź zamowienie - for stolik in stoliki: + # ------------weź zamowienie + for stolik in stoliki: if stolik.zamowione == True: menu(stolik.x, stolik.y) if kelner.stan == "stoi": kelner.stolik_docelowy = stolik + #kelner.planuj_ruch() kelner.idz_do_stolika() - #----------Losuje stoliki, które dokonają zamówienia + # ----------Losuje stoliki, które dokonają zamówienia if kelner.stan == "stoi": for stolik in stoliki: - if stolik.zamowione == True: + if stolik.zamowione == True: break for i in range(len(stoliki)): if random.randrange(2) == 1: stoliki[i].zamowione = True - #print(kelner.stan)--------------------------Wypisuje stan kelnera - #print(f"{kelner.x} {kelner.y}")-------------Wypisuje wspolrzedne kelnera + # print(kelner.stan)--------------------------Wypisuje stan 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: kelner.kierunek = 1 else: kelner.kierunek = 3 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 else: kelner.kierunek = 0 - #----------------Zmiana pozycji kelnera - if kelner.chodzi == True and licznik % (101 - kelner.speed) == 0: #ograniczenie prędkości + # ----------------Zmiana pozycji kelnera + if kelner.chodzi == True and licznik % (101 - kelner.speed) == 0: # ograniczenie prędkości 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.stan == "odbiera": kelner.stolik_docelowy.zamowione = False @@ -181,7 +205,6 @@ while run: elif kelner.stan == "wraca": kelner.stan = "stoi" - time.sleep(0.001) key = pygame.key.get_pressed() @@ -189,4 +212,5 @@ while run: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False + pygame.quit() \ No newline at end of file