diff --git a/ekran.py b/ekran.py index e0d357b..85668d3 100644 --- a/ekran.py +++ b/ekran.py @@ -7,8 +7,8 @@ import wozek from packageList import * from paczka import Paczka -EKRAN_SZEROKOSC = 980 -EKRAN_WYSOKOSC = 980 +EKRAN_SZEROKOSC = 770 +EKRAN_WYSOKOSC = 770 screen = pygame.display.set_mode((EKRAN_SZEROKOSC, EKRAN_WYSOKOSC)) miejsce = pygame.image.load('images/miejsce_paczek.png') miejsce = pygame.transform.scale(miejsce, (140, 140)) @@ -16,7 +16,7 @@ pygame.display.set_caption("Inteligentny wozek") icon = pygame.image.load('images/icon.png') pygame.display.set_icon(icon) -lista_paczek = packageList.zainicjuj_liste_paczek() +lista_paczek = packageList.zainicjuj_liste_paczek(a_pix, b_pix) def narysuj_regaly(): regal.Regal(1, 1, x1, y1) @@ -78,4 +78,4 @@ def sprawdz_ktora_kolumna(y): def narysuj_paczki(wozek): if wozek.ln == 0: for paczka in lista_paczek.list: - paczka.narysuj(a_pix, b_pix, screen) + paczka.narysuj(paczka.x, paczka.y, screen) diff --git a/images/pelny_wozek_1_crate.png b/images/pelny_wozek_1_crate.png index a55c1b1..e27b77d 100644 Binary files a/images/pelny_wozek_1_crate.png and b/images/pelny_wozek_1_crate.png differ diff --git a/images/pelny_wozek_2_crates.png b/images/pelny_wozek_2_crates.png index 6cb7103..ab5fc6a 100644 Binary files a/images/pelny_wozek_2_crates.png and b/images/pelny_wozek_2_crates.png differ diff --git a/images/pelny_wozek_full_3_crates.png b/images/pelny_wozek_full_3_crates.png index 849de5d..eb95727 100644 Binary files a/images/pelny_wozek_full_3_crates.png and b/images/pelny_wozek_full_3_crates.png differ diff --git a/main.py b/main.py index e451477..89587e7 100644 --- a/main.py +++ b/main.py @@ -60,12 +60,12 @@ def main(): if wozek.obecnyStan.x <= 0: wozek.obecnyStan.x = 0 - elif wozek.obecnyStan.x >= 916: - wozek.obecnyStan.x = 916 + elif wozek.obecnyStan.x >= ekran.EKRAN_SZEROKOSC-70: + wozek.obecnyStan.x = ekran.EKRAN_SZEROKOSC-70 if wozek.obecnyStan.y <= 0: wozek.obecnyStan.y = 0 - elif wozek.obecnyStan.x >= 916: - wozek.obecnyStan.x = 916 + elif wozek.obecnyStan.y >= ekran.EKRAN_WYSOKOSC-70: + wozek.obecnyStan.y = ekran.EKRAN_WYSOKOSC-70 ekran.odswiez_ekran(wozek) diff --git a/packageList.py b/packageList.py index 7195b0f..22cbc53 100644 --- a/packageList.py +++ b/packageList.py @@ -1,16 +1,23 @@ +import pygame + +from paczka import Paczka + class listOfPackages: list = [] + package_group = pygame.sprite.Group() def add(self, item): self.list.append(item) + self.package_group.add(item) def remove(self): - self.list.pop() + last_package = self.list.pop() + self.package_group.remove(last_package) -def zainicjuj_liste_paczek(): - from paczka import Paczka +def zainicjuj_liste_paczek(init_x, init_y): packageList = listOfPackages() demo_paczka = Paczka('duzy', 10, any, False, True, False, any, any, any, any, any) + demo_paczka.update_position(init_x, init_y) packageList.add(demo_paczka) return packageList diff --git a/paczka.py b/paczka.py index 5d63453..3d2fd32 100644 --- a/paczka.py +++ b/paczka.py @@ -2,11 +2,13 @@ from etykieta import Etykieta import pygame -class Paczka: +class Paczka(pygame.sprite.Sprite): def __init__(self, rozmiar, waga, kategoria, priorytet, ksztalt, kruchosc, nadawca, adres, imie, nazwisko, telefon): + super().__init__() self.rozmiar = rozmiar self.image = pygame.image.load("images/paczka.png") + self.rect = self.image.get_rect() if rozmiar == 'duzy': self.image = pygame.transform.scale(self.image, (50, 50)) self.szerokosc = 50 @@ -62,3 +64,8 @@ class Paczka: print("Zmien rozmiar paczki") print("Paczka moze miec rozmiar duzy, sredni lub maly") exit(0) + + def update_position(self, x, y): + self.x = x + self.y = y + self.rect.topleft = (x, y) \ No newline at end of file diff --git a/plansza.py b/plansza.py index 3af3047..08e9a0c 100644 --- a/plansza.py +++ b/plansza.py @@ -8,8 +8,8 @@ def obliczPixeleNaPodstawieKratek(wymiar): #Przeliczanie współrzędnych podany i = i + 1 return pixele -EKRAN_SZEROKOSC = 980 -EKRAN_WYSOKOSC = 980 +EKRAN_SZEROKOSC = 770 +EKRAN_WYSOKOSC = 770 blockSize = 70 x1, y1, x2, y2, x3, y3, x4, y4 = [None] * 8 diff --git a/regal.py b/regal.py index 2074c10..71234f8 100644 --- a/regal.py +++ b/regal.py @@ -18,8 +18,9 @@ def obliczPixeleDlugosciRegalu(self): #Przeliczanie dlugości regału podanego i = i + 1 return dlugoscRegalu -class Regal: +class Regal(pygame.sprite.Sprite): def __init__(self, numerRegalu, dlugoscRegaluWKratkach, numerWiersza, numerKolumny): + super().__init__() from ekran import screen self.numerRegalu = numerRegalu self.wysokoscRegalu = 64 @@ -30,26 +31,33 @@ class Regal: self.kolumna = obliczPixeleNaPodstawieKratek(numerKolumny) self.dlugosc = obliczPixeleDlugosciRegalu(self) - # from main import screen - # from ekran import screen + package_storage = [] + shelfs = { # here packages are stored + "dolna": package_storage, + "gorna": package_storage + } if(self.numerRegalu >= 0 and self.numerRegalu <= 4): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal.png") + self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) if(self.numerRegalu >= 5 and self.numerRegalu <= 8): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal1.png") + self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) if(self.numerRegalu >= 9 and self.numerRegalu <= 12): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal2.png") + self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) if(self.numerRegalu >= 13 and self.numerRegalu <= 16): reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.image.load("images/regal3.png") + self.rect = reg.get_rect() screen.blit(reg, (self.wiersz, self.kolumna)) diff --git a/wozek.py b/wozek.py index e131ad8..a38cfac 100644 --- a/wozek.py +++ b/wozek.py @@ -3,8 +3,9 @@ import pygame,math from packageList import listOfPackages -class Wozek(): +class Wozek(pygame.sprite.Sprite): def __init__(self): + super().__init__() self.obecnyStan = None # self.x = 55 # self.y = 55 @@ -13,12 +14,14 @@ class Wozek(): self.height = 64 self.width = 64 self.image = pygame.image.load("images/pusty_wozek.png") + self.rect = self.image.get_rect() # Credit: Forklift icons created by Smashicons - Flaticon # https://www.flaticon.com/free-icons/forklift self.__zainicjuj_stan_poczatkowy() def draw(self): ekran.screen.blit(self.image, (self.obecnyStan.x, self.obecnyStan.y)) + # self.update_position(self.obecnyStan.x, self.obecnyStan.y) #storage = ["none"] * 10 storage = [] @@ -38,7 +41,12 @@ class Wozek(): return element else: print("I'm empty!") - + + def update_position(self, x, y): + self.obecnyStan.x = x + self.obecnyStan.y = y + self.rect.topleft = (x, y) + def dynamic_wozek_picture(self): if self.ln == 0: self.image = pygame.image.load("images/pusty_wozek.png") @@ -48,6 +56,8 @@ class Wozek(): self.image = pygame.image.load("images/pelny_wozek_2_crates.png") elif (self.ln == 10): self.image = pygame.image.load("images/pelny_wozek_full_3_crates.png") + + self.rect = self.image.get_rect() def load_package(self): @@ -56,12 +66,21 @@ class Wozek(): if dist <= 50: self.add_element(package) listOfPackages.list.pop() + + def load_packages_collision(self): + pass + # packages_collision = pygame.sprite.spritecollide(self, listOfPackages.package_group, False) + # if packages_collision: + # for package in packages_collision: + # self.add_element(package) + # listOfPackages.list.remove(package) # collision doesn't work, collision always happens + def drop_package(self): package = self.remove_element() if package is not None: - listOfPackages.list.append(package) - package.x = self.obecnyStan.x+50 + package.x = self.obecnyStan.x package.y = self.obecnyStan.y + listOfPackages.list.append(package) def __zainicjuj_stan_poczatkowy(self): from wyszukiwanie import Stan