From bdeb5e87e8755c4f5bbff0f3bc70e51bbce1e87a Mon Sep 17 00:00:00 2001 From: Woj Date: Mon, 29 May 2023 00:24:26 +0200 Subject: [PATCH] wozek and regal sprite objects --- ekran.py | 46 ++++++++++++++++++++++++++++++---------------- main.py | 5 +++++ regal.py | 8 +++++++- wozek.py | 11 +++++++++++ 4 files changed, 53 insertions(+), 17 deletions(-) diff --git a/ekran.py b/ekran.py index 85668d3..3f0dbfd 100644 --- a/ekran.py +++ b/ekran.py @@ -17,27 +17,40 @@ icon = pygame.image.load('images/icon.png') pygame.display.set_icon(icon) lista_paczek = packageList.zainicjuj_liste_paczek(a_pix, b_pix) +wozek_group = pygame.sprite.Group() +regals_collision_group = pygame.sprite.Group() def narysuj_regaly(): - regal.Regal(1, 1, x1, y1) - regal.Regal(2, 1, x1, y1+1) - regal.Regal(3, 1, x1+1, y1) - regal.Regal(4, 1, x1+1, y1+1) + regalList = [] + allRegals = { + "aCategory": regalList, + "bCategory": regalList, + "cCategory": regalList, + "dCategory": regalList, + } + allRegals["aCategory"].append(regal.Regal(1, 1, x1, y1)) + allRegals["aCategory"].append(regal.Regal(2, 1, x1, y1+1)) + allRegals["aCategory"].append(regal.Regal(3, 1, x1+1, y1)) + allRegals["aCategory"].append(regal.Regal(4, 1, x1+1, y1+1)) - regal.Regal(5, 1, x2, y2) - regal.Regal(6, 1, x2, y2+1) - regal.Regal(7, 1, x2+1, y2) - regal.Regal(8, 1, x2+1, y2+1) + allRegals["bCategory"].append(regal.Regal(5, 1, x2, y2)) + allRegals["bCategory"].append(regal.Regal(6, 1, x2, y2+1)) + allRegals["bCategory"].append(regal.Regal(7, 1, x2+1, y2)) + allRegals["bCategory"].append(regal.Regal(8, 1, x2+1, y2+1)) - regal.Regal(9, 1, x3, y3) - regal.Regal(10, 1, x3, y3+1) - regal.Regal(11, 1, x3+1, y3) - regal.Regal(12, 1, x3+1, y3+1) + allRegals["cCategory"].append(regal.Regal(9, 1, x3, y3)) + allRegals["cCategory"].append(regal.Regal(10, 1, x3, y3+1)) + allRegals["cCategory"].append(regal.Regal(11, 1, x3+1, y3)) + allRegals["cCategory"].append(regal.Regal(12, 1, x3+1, y3+1)) - regal.Regal(13, 1, x4, y4) - regal.Regal(14, 1, x4, y4+1) - regal.Regal(15, 1, x4+1, y4) - regal.Regal(16, 1, x4+1, y4+1) + allRegals["dCategory"].append(regal.Regal(13, 1, x4, y4)) + allRegals["dCategory"].append(regal.Regal(14, 1, x4, y4+1)) + allRegals["dCategory"].append(regal.Regal(15, 1, x4+1, y4)) + allRegals["dCategory"].append(regal.Regal(16, 1, x4+1, y4+1)) + + for category in allRegals: + for regal_obj in allRegals[category]: + regals_collision_group.add(regal_obj) def narysuj_siatke(): @@ -52,6 +65,7 @@ def narysuj_siatke(): def odswiez_ekran(wozek): screen.fill((51, 51, 51)) # removes object trail screen.blit(miejsce,(a_pix, b_pix)) + narysuj_siatke() narysuj_paczki(wozek) narysuj_regaly() diff --git a/main.py b/main.py index 89587e7..757790f 100644 --- a/main.py +++ b/main.py @@ -55,6 +55,11 @@ def main(): wozek.drop_package() wozek.dynamic_wozek_picture() + if event.type == pygame.KEYDOWN: + if event.key == pygame.K_p: + wozek.place_on_shelf(ekran.regals_collision_group, "dolna") + + wozek.obecnyStan.x += wozek.x_change wozek.obecnyStan.y += wozek.y_change diff --git a/regal.py b/regal.py index 71234f8..af97e42 100644 --- a/regal.py +++ b/regal.py @@ -37,27 +37,33 @@ class Regal(pygame.sprite.Sprite): "gorna": package_storage } + def place_package(package_name, decision): + shelfs[decision].append(package_name) + 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)) + self.rect = reg.get_rect() 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)) + self.rect = reg.get_rect() 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)) + self.rect = reg.get_rect() 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)) - + self.rect = reg.get_rect() diff --git a/wozek.py b/wozek.py index a38cfac..d509519 100644 --- a/wozek.py +++ b/wozek.py @@ -15,6 +15,7 @@ class Wozek(pygame.sprite.Sprite): self.width = 64 self.image = pygame.image.load("images/pusty_wozek.png") self.rect = self.image.get_rect() + self.update_position() # Credit: Forklift icons created by Smashicons - Flaticon # https://www.flaticon.com/free-icons/forklift self.__zainicjuj_stan_poczatkowy() @@ -41,6 +42,7 @@ class Wozek(pygame.sprite.Sprite): return element else: print("I'm empty!") + return None def update_position(self, x, y): self.obecnyStan.x = x @@ -75,6 +77,15 @@ class Wozek(pygame.sprite.Sprite): # self.add_element(package) # listOfPackages.list.remove(package) # collision doesn't work, collision always happens + def place_on_shelf(self, spriteGroup,decision): + collide = pygame.sprite.spritecollide(self, spriteGroup, False) + print(collide) + # for regal in collide: + # _package_to_place = self.remove_element() + # if _package_to_place is not None: + # print("dzien dobry jestem w regale") + # #regal.place_package(_package_to_place, decision) + def drop_package(self): package = self.remove_element() if package is not None: