wozek and regal sprite objects

This commit is contained in:
Woj 2023-05-29 00:24:26 +02:00
parent 6e0a6fb8c6
commit bdeb5e87e8
4 changed files with 53 additions and 17 deletions

View File

@ -17,27 +17,40 @@ icon = pygame.image.load('images/icon.png')
pygame.display.set_icon(icon) pygame.display.set_icon(icon)
lista_paczek = packageList.zainicjuj_liste_paczek(a_pix, b_pix) lista_paczek = packageList.zainicjuj_liste_paczek(a_pix, b_pix)
wozek_group = pygame.sprite.Group()
regals_collision_group = pygame.sprite.Group()
def narysuj_regaly(): def narysuj_regaly():
regal.Regal(1, 1, x1, y1) regalList = []
regal.Regal(2, 1, x1, y1+1) allRegals = {
regal.Regal(3, 1, x1+1, y1) "aCategory": regalList,
regal.Regal(4, 1, x1+1, y1+1) "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) allRegals["bCategory"].append(regal.Regal(5, 1, x2, y2))
regal.Regal(6, 1, x2, y2+1) allRegals["bCategory"].append(regal.Regal(6, 1, x2, y2+1))
regal.Regal(7, 1, x2+1, y2) allRegals["bCategory"].append(regal.Regal(7, 1, x2+1, y2))
regal.Regal(8, 1, x2+1, y2+1) allRegals["bCategory"].append(regal.Regal(8, 1, x2+1, y2+1))
regal.Regal(9, 1, x3, y3) allRegals["cCategory"].append(regal.Regal(9, 1, x3, y3))
regal.Regal(10, 1, x3, y3+1) allRegals["cCategory"].append(regal.Regal(10, 1, x3, y3+1))
regal.Regal(11, 1, x3+1, y3) allRegals["cCategory"].append(regal.Regal(11, 1, x3+1, y3))
regal.Regal(12, 1, x3+1, y3+1) allRegals["cCategory"].append(regal.Regal(12, 1, x3+1, y3+1))
regal.Regal(13, 1, x4, y4) allRegals["dCategory"].append(regal.Regal(13, 1, x4, y4))
regal.Regal(14, 1, x4, y4+1) allRegals["dCategory"].append(regal.Regal(14, 1, x4, y4+1))
regal.Regal(15, 1, x4+1, y4) allRegals["dCategory"].append(regal.Regal(15, 1, x4+1, y4))
regal.Regal(16, 1, x4+1, y4+1) 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(): def narysuj_siatke():
@ -52,6 +65,7 @@ def narysuj_siatke():
def odswiez_ekran(wozek): def odswiez_ekran(wozek):
screen.fill((51, 51, 51)) # removes object trail screen.fill((51, 51, 51)) # removes object trail
screen.blit(miejsce,(a_pix, b_pix)) screen.blit(miejsce,(a_pix, b_pix))
narysuj_siatke() narysuj_siatke()
narysuj_paczki(wozek) narysuj_paczki(wozek)
narysuj_regaly() narysuj_regaly()

View File

@ -55,6 +55,11 @@ def main():
wozek.drop_package() wozek.drop_package()
wozek.dynamic_wozek_picture() 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.x += wozek.x_change
wozek.obecnyStan.y += wozek.y_change wozek.obecnyStan.y += wozek.y_change

View File

@ -37,27 +37,33 @@ class Regal(pygame.sprite.Sprite):
"gorna": package_storage "gorna": package_storage
} }
def place_package(package_name, decision):
shelfs[decision].append(package_name)
if(self.numerRegalu >= 0 and self.numerRegalu <= 4): if(self.numerRegalu >= 0 and self.numerRegalu <= 4):
reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu])
reg = pygame.image.load("images/regal.png") reg = pygame.image.load("images/regal.png")
self.rect = reg.get_rect() self.rect = reg.get_rect()
screen.blit(reg, (self.wiersz, self.kolumna)) screen.blit(reg, (self.wiersz, self.kolumna))
self.rect = reg.get_rect()
if(self.numerRegalu >= 5 and self.numerRegalu <= 8): if(self.numerRegalu >= 5 and self.numerRegalu <= 8):
reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu])
reg = pygame.image.load("images/regal1.png") reg = pygame.image.load("images/regal1.png")
self.rect = reg.get_rect() self.rect = reg.get_rect()
screen.blit(reg, (self.wiersz, self.kolumna)) screen.blit(reg, (self.wiersz, self.kolumna))
self.rect = reg.get_rect()
if(self.numerRegalu >= 9 and self.numerRegalu <= 12): if(self.numerRegalu >= 9 and self.numerRegalu <= 12):
reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu])
reg = pygame.image.load("images/regal2.png") reg = pygame.image.load("images/regal2.png")
self.rect = reg.get_rect() self.rect = reg.get_rect()
screen.blit(reg, (self.wiersz, self.kolumna)) screen.blit(reg, (self.wiersz, self.kolumna))
self.rect = reg.get_rect()
if(self.numerRegalu >= 13 and self.numerRegalu <= 16): if(self.numerRegalu >= 13 and self.numerRegalu <= 16):
reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu]) reg = pygame.Surface([self.dlugosc, self.wysokoscRegalu])
reg = pygame.image.load("images/regal3.png") reg = pygame.image.load("images/regal3.png")
self.rect = reg.get_rect() self.rect = reg.get_rect()
screen.blit(reg, (self.wiersz, self.kolumna)) screen.blit(reg, (self.wiersz, self.kolumna))
self.rect = reg.get_rect()

View File

@ -15,6 +15,7 @@ class Wozek(pygame.sprite.Sprite):
self.width = 64 self.width = 64
self.image = pygame.image.load("images/pusty_wozek.png") self.image = pygame.image.load("images/pusty_wozek.png")
self.rect = self.image.get_rect() self.rect = self.image.get_rect()
self.update_position()
# Credit: Forklift icons created by Smashicons - Flaticon # Credit: Forklift icons created by Smashicons - Flaticon
# https://www.flaticon.com/free-icons/forklift # https://www.flaticon.com/free-icons/forklift
self.__zainicjuj_stan_poczatkowy() self.__zainicjuj_stan_poczatkowy()
@ -41,6 +42,7 @@ class Wozek(pygame.sprite.Sprite):
return element return element
else: else:
print("I'm empty!") print("I'm empty!")
return None
def update_position(self, x, y): def update_position(self, x, y):
self.obecnyStan.x = x self.obecnyStan.x = x
@ -75,6 +77,15 @@ class Wozek(pygame.sprite.Sprite):
# self.add_element(package) # self.add_element(package)
# listOfPackages.list.remove(package) # collision doesn't work, collision always happens # 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): def drop_package(self):
package = self.remove_element() package = self.remove_element()
if package is not None: if package is not None: