From f508f6c4d041ce270a73a8cf27fedf1df11f1b24 Mon Sep 17 00:00:00 2001 From: s481851 Date: Thu, 11 Apr 2024 23:21:53 +0200 Subject: [PATCH] changed system to grid-based --- main.py | 75 +++++++++++++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/main.py b/main.py index fa3a933..f3fc49e 100644 --- a/main.py +++ b/main.py @@ -4,29 +4,35 @@ import time import numpy import threading -kuchnia_xy = 40 -pozycja_startowa = 5 +kuchnia_xy = 0 +pozycja_startowa = 0 + +#------------Ustawienia siatki +blockSize = 60 +rows = 14 +columns = 24 #-----------------------------Inicjacja klas class Kelner: def __init__(self, x, y): self.x = x 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.stolik_docelowy = None # Stolik, do którego idzie kelner + self.chodzi = True self.cel_x = x self.cel_y = y def wklej(self): - screen.blit(kelnerImg, (self.x, self.y)) + screen.blit(kelnerImg, (self.x * blockSize, self.y * blockSize)) def idz_do_stolika(self): self.cel_x, self.cel_y = self.stolik_docelowy.x, self.stolik_docelowy.y kelner.stan = "odbiera" 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 kelner.stan = "wraca" @@ -38,14 +44,14 @@ class Stolik: self.zamowione = False def wklej(self): - screen.blit(stolikImg, (self.x, self.y)) + screen.blit(stolikImg, (self.x * blockSize, self.y * blockSize)) #--------------Inicjacja obiektów kelner = Kelner(pozycja_startowa,pozycja_startowa) #-----------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 stoliki = [] @@ -57,38 +63,28 @@ pygame.init() pygame.display.set_caption("Automatyczny kelner") #----------------wymiary okna -width = 1200 -height = 800 +width = columns * blockSize +height = rows * blockSize screen = pygame.display.set_mode((width, height)) 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.transform.scale(stolikImg, (70, 70)) +stolikImg = pygame.transform.scale(stolikImg, (blockSize, blockSize)) 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.transform.scale(kitchenImg, (100, 100)) +kitchenImg = pygame.transform.scale(kitchenImg, (blockSize * 2, blockSize * 2)) def kuchnia(x, y): - screen.blit(kitchenImg, (x, y)) + screen.blit(kitchenImg, (x * blockSize, y * blockSize)) def menu(x, y): - screen.blit(menuImg, (x, y)) - -#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)) + screen.blit(menuImg, (x * blockSize, y * blockSize)) def wypiszOkno(): screen.fill((0, 0, 0)) - blockSize = 80 for x in range(0, width, blockSize): for y in range(0, height, blockSize): rect = pygame.Rect(x, y, blockSize, blockSize) @@ -96,13 +92,9 @@ def wypiszOkno(): run = True -#def randomTime(): -# x = random.randrange(2, 20) -# threading.Timer(x, randomTime).start() -# y=random.randrange(0, 2) -# return y +# czcionka = pygame.font.SysFont('Arial',50) -#whichPic = randomTime() +licznik = 0 while run: wypiszOkno() @@ -116,6 +108,8 @@ while run: if kelner.stan == "wraca": menu(kelner.x, kelner.y) + licznik += 1 + #------------weź zamowienie for stolik in stoliki: if stolik.zamowione == True: @@ -129,19 +123,20 @@ while run: for stolik in stoliki: if stolik.zamowione == True: break - for i in range(4): - if random.randrange(2) == 1: - stoliki[i].zamowione = True + for i in range(len(stoliki)): + if random.randrange(2) == 1: + 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 - if kelner.x != kelner.cel_x: - kelner.x += kelner.speed * numpy.sign(kelner.cel_x - kelner.x) - else: - kelner.y += kelner.speed * numpy.sign(kelner.cel_y - kelner.y) #zmieniamy pozycje Y dopiero, gdy pozycja X bedzie prawidlowa + if kelner.chodzi == True and licznik % (101 - kelner.speed) == 0: #ograniczenie prędkości + if kelner.x != kelner.cel_x: + 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 - print(kelner.stan) #----------------Sprawdzenie, czy kelner jest u celu if kelner.x == kelner.cel_x and kelner.y == kelner.cel_y: