import pygame from enumy_i_slowniki import * from obserwacja import * from stale import * class PoleKraty: gora: any start: any def __init__(self, krata, wiersz, kolumna): self.krata = krata self.bok = self.krata.bokPola self._wiersz = wiersz self._kolumna = kolumna self.okreslGore() self.okreslStart() def okreslGore(self): self.gora = (self.bok + self.krata.odstepMiedzyPolami) * self.wiersz + self.krata.odstepMiedzyPolami def okreslStart(self): self.start = (self.bok + self.krata.odstepMiedzyPolami) * self.kolumna + self.krata.odstepMiedzyPolami def getWiersz(self): return self._wiersz def setWiersz(self, x): self._wiersz = x self.okreslGore() def getKolumna(self): return self._kolumna def setKolumna(self, x): self._kolumna = x self.okreslStart() wiersz = property(getWiersz, setWiersz) kolumna = property(getKolumna, setKolumna) def skopiuj(self): return PoleKraty(self.krata, self.wiersz, self.kolumna) class Krata(Obserwowany): krata: [] def __init__(self, okno): self.okno = okno self.liczbaPolPoziomo = LICZBA_POL_W_POZIOMIE self.liczbaPolPionowo = LICZBA_POL_W_PIONIE self.bokPola = BOK_POLA self.odstepMiedzyPolami = ODSTEP_MIEDZY_POLAMI self.utworzPustaKrate() self.agent = None def utworzPustaKrate(self): self.krata = [] for wiersz in range(self.liczbaPolPionowo): self.krata.append([]) for kolumna in range(self.liczbaPolPoziomo): zawartosc_pola = ZawartoscPola.PUSTE self.krata[wiersz].append(zawartosc_pola) def narysujKrate(self): self.okno.fill(SZARY1) for wiersz in range(self.liczbaPolPionowo): for kolumna in range(self.liczbaPolPoziomo): start = (self.odstepMiedzyPolami + self.bokPola) * kolumna + self.odstepMiedzyPolami gora = (self.odstepMiedzyPolami + self.bokPola) * wiersz + self.odstepMiedzyPolami kolor_pola = ZawartoscPolaNaKolorPola[self.krata[wiersz][kolumna]] pygame.draw.rect(self.okno, kolor_pola, [start, gora, self.bokPola, self.bokPola]) def narysujKrateAlternatywnie(self): self.okno.fill(SZARY1) for i in range(LICZBA_POL_W_POZIOMIE + 1): new_height = i * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) new_width = i * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) pygame.draw.line(self.okno, CZARNY, (0, new_height), (SZEROKOSC_OKNA, new_height), ODSTEP_MIEDZY_POLAMI) pygame.draw.line(self.okno, CZARNY, (new_width, 0), (new_width, WYSOKOSC_OKNA), ODSTEP_MIEDZY_POLAMI) def powiadomObserwatorow(self): for obserwator in self.obserwatorzy: obserwator.odbierzPowiadomienie(self)