diff --git a/game.py b/game.py index 2d99881..d0a52be 100644 --- a/game.py +++ b/game.py @@ -5,6 +5,19 @@ import pygame import modele import numpy as np import random +import os +import shutil + + +# obsluga bledu odmowy dostepu do folderu +def onerror(func, path, exc_info): + import stat + if not os.access(path, os.W_OK): + os.chmod(path, stat.S_IWUSR) + func(path) + else: + raise + # kolory BLACK = (0, 0, 0) @@ -37,27 +50,31 @@ smieciarka = modele.Smieciarka(10, 10) plansza[10, 10].setKolor(BLUE) # kontenery -kontener_plastik = modele.Kontener(0, 0) +if os.path.exists('resources/smieci w kontenerach'): + shutil.rmtree("resources/smieci w kontenerach", onerror=onerror) +os.makedirs('resources/smieci w kontenerach') + +kontener_plastik = modele.Kontener(0, 0, "plastik") kontener_plastik.setImage(pygame.image.load( "resources/plansza/pojemnik_plastik.png")) plansza[0, 0].setJestKontenerem(True) -kontener_metal = modele.Kontener(0, 4) +kontener_metal = modele.Kontener(0, 4, "metal") kontener_metal.setImage(pygame.image.load( "resources/plansza/pojemnik_metal.png")) plansza[0, 4].setJestKontenerem(True) -kontener_organiczne = modele.Kontener(2, 2) +kontener_organiczne = modele.Kontener(2, 2, "pozostale") kontener_organiczne.setImage(pygame.image.load( "resources/plansza/pojemnik_organiczne.png")) plansza[2, 2].setJestKontenerem(True) -kontener_papier = modele.Kontener(4, 0) +kontener_papier = modele.Kontener(4, 0, "papier") kontener_papier.setImage(pygame.image.load( "resources/plansza/pojemnik_papier.png")) plansza[4, 0].setJestKontenerem(True) -kontener_szklo = modele.Kontener(4, 4) +kontener_szklo = modele.Kontener(4, 4, "szklo") kontener_szklo.setImage(pygame.image.load( "resources/plansza/pojemnik_szklo.png")) plansza[4, 4].setJestKontenerem(True) @@ -68,11 +85,20 @@ doms_array = ['resources/plansza/domy/dom1.png', 'resources/plansza/domy/dom2.pn 'resources/plansza/domy/dom3.png', 'resources/plansza/domy/dom4.png', 'resources/plansza/domy/dom5.png'] wspolrzedne_domow = modele.generujWspolrzedneDomow() +domy_lista = pygame.sprite.Group() + +smieci_lista = [os.path.join(path, filename) + for path, dirs, files in os.walk("resources/smieci") + for filename in files] for i in range(len(wspolrzedne_domow)): dom = modele.Dom(wspolrzedne_domow[i, 0], wspolrzedne_domow[i, 1]) dom.setImage(pygame.image.load(random.choice(doms_array))) plansza[wspolrzedne_domow[i, 0], wspolrzedne_domow[i, 1]].setJestDomem(True) + for j in range(5): + dom.dodajSmiec(random.choice(smieci_lista)) + + domy_lista.add(dom) all_sprites_list.add(dom) # ustawienie wysypiska, rozmiar wysypiska 5x5 @@ -147,9 +173,14 @@ def game(): obraz.blit(pygame.image.load( "resources/plansza/wysypisko.jpg"), (5, 5)) + obraz.blit(pygame.image.load( + "resources/plansza/jezioro.png"), (395, 655)) + plansza[6, 10].setJestPrzeszkoda(True) + plansza[6, 11].setJestPrzeszkoda(True) + plansza[7, 10].setJestPrzeszkoda(True) + plansza[7, 11].setJestPrzeszkoda(True) all_sprites_list.draw(obraz) smieciarka.rand_move() # Go ahead and update the screen with what we've drawn. pygame.display.flip() - pygame.quit() diff --git a/modele.py b/modele.py index 309669a..dbf0ff4 100644 --- a/modele.py +++ b/modele.py @@ -3,6 +3,8 @@ import game import random import numpy as np import random +import os +import shutil # This sets the WIDTH and HEIGHT of each grid location WIDTH = 60 @@ -26,6 +28,11 @@ class Smieciarka(pygame.sprite.Sprite): self.y = y self.image = pygame.image.load('resources/plansza/smieciarka.png') self.ruch = 0 + self.plastik = [] + self.szklo = [] + self.papier = [] + self.metal = [] + self.pozostale = [] pygame.sprite.Sprite.__init__(self) self.rect = pygame.Rect(self.x * WIDTH + MARGIN * self.x + MARGIN, self.y * HEIGHT + MARGIN * self.y, WIDTH, HEIGHT) @@ -76,6 +83,18 @@ class Smieciarka(pygame.sprite.Sprite): game.plansza[self.x, self.y].setKolor(BLUE) self.rect.y = self.y * HEIGHT + self.y * MARGIN + def dodajPlastik(self, smiec): + self.plastik.append(smiec) + + def dodajSzklo(self, smiec): + self.szklo.append(smiec) + + def dodajPapier(self, smiec): + self.papier.append(smiec) + + def dodajMetal(self, smiec): + self.metal.append(smiec) + class Dom(pygame.sprite.Sprite): def __init__(self, x, y): @@ -85,19 +104,33 @@ class Dom(pygame.sprite.Sprite): self.image = pygame.image.__class__ self.rect = pygame.Rect(self.x * WIDTH + MARGIN * self.x + MARGIN, self.y * HEIGHT + MARGIN * self.y + MARGIN, WIDTH, HEIGHT) + self.smieci = [] def setImage(self, image): self.image = image + def dodajSmiec(self, smiec): + self.smieci.append(smiec) + + def usunSmiec(self, smiec): + self.smieci.remove(smiec) + class Kontener(pygame.sprite.Sprite): - def __init__(self, x, y): + def __init__(self, x, y, typ): self.x = x self.y = y pygame.sprite.Sprite.__init__(self) self.image = pygame.image.__class__ self.rect = pygame.Rect(self.x * WIDTH + MARGIN * self.x + MARGIN, self.y * HEIGHT + MARGIN * self.y + MARGIN, WIDTH, HEIGHT) + self.smieci = [] + self.typ = typ + os.makedirs("resources/smieci w kontenerach/" + self.typ) + + def dodajSmiec(self, smiec): + self.smieci.append(smiec) + shutil.copy(smiec, "resources/smieci w kontenerach/" + self.typ) def setImage(self, image): self.image = image diff --git a/resources/plansza/jezioro.png b/resources/plansza/jezioro.png new file mode 100644 index 0000000..979761a Binary files /dev/null and b/resources/plansza/jezioro.png differ