From 21fccb422fded0e234910ad0ff7fd9ab73aaa042 Mon Sep 17 00:00:00 2001 From: Dominik Jagosz Date: Tue, 22 Mar 2022 11:20:58 +0100 Subject: [PATCH] =?UTF-8?q?Agent=20porusza=20si=C4=99=20losowo=20po=20krac?= =?UTF-8?q?ie=20zajmuj=C4=85c=209=20p=C3=B3l.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agent.py | 138 +++++++++++++++++++++++++------------------ klasy.py => krata.py | 13 ++-- main.py | 6 +- stale.py | 2 +- 4 files changed, 92 insertions(+), 67 deletions(-) rename klasy.py => krata.py (88%) diff --git a/agent.py b/agent.py index 9ad45a0..ec82f44 100644 --- a/agent.py +++ b/agent.py @@ -1,22 +1,49 @@ import random -from klasy import * +from krata import * class Agent: bok = BOK_AGENTA1 bokWPolach = BOK_AGENTA1_W_POLACH - def __init__(self, Krata, poleStartoweGorne, tekstura, kierunek, droga): + def __init__(self, Krata, poleStartoweGorne, tekstura): self.krata = Krata self.poleStartoweGorne = poleStartoweGorne - self.okreslHitbox() - self.okreslPoleKoncoweDolne() self.tekstura = tekstura - self.kierunek = kierunek - self.droga = droga + self.okreslPolozenie() + self.obierzNowyKierunek() + self.okreslDlugoscDrogi() Krata.agent = self + def ruszSie(self): + if self.droga <= 0: + self.obierzNowyKierunek() + self.okreslDlugoscDrogi() + self.zrobKrokWMoimKierunku() + self.droga -= 1 + self.okreslPolozenie() + if self.wyszedlemPozaKrate(): + self.cofnijSie() + self.zawroc() + self.okreslDlugoscDrogi() + + def obierzNowyKierunek(self): + self.kierunek = Kierunek(random.randint(0, 3)) + if self.maxDlugoscDrogiWMoimKierunku() < 1: + self.obierzNowyKierunek() + + def okreslDlugoscDrogi(self): + self.droga = random.randint(1, self.maxDlugoscDrogiWMoimKierunku()) + + def cofnijSie(self): + self.zrobKrokWOdwrotnymKierunku() + self.okreslPolozenie() + + def okreslPolozenie(self): + self.okreslPoleKoncoweDolne() + self.okreslHitbox() + def okreslHitbox(self): self.hitbox = pygame.Rect(self.poleStartoweGorne.start, self.poleStartoweGorne.gora, self.bok, self.bok) @@ -25,22 +52,57 @@ class Agent: kolumna = self.poleStartoweGorne.kolumna + self.bokWPolach - 1 self.poleKoncoweDolne = PoleKraty(self.krata, wiersz, kolumna) - def obierzNowyKierunek(self): - self.kierunek = Kierunek(random.randint(0, 3)) + def wyszedlemPozaKrate(self): + if self.poleStartoweGorne.wiersz < 0: + return True + elif self.poleKoncoweDolne.wiersz > self.krata.liczbaPolPionowo - 1: + return True + elif self.poleStartoweGorne.kolumna < 0: + return True + elif self.poleKoncoweDolne.kolumna > self.krata.liczbaPolPoziomo - 1: + return True + else: + return False - def okreslDlugoscDrogi(self): - losowa_droga = None + def zawroc(self): if self.kierunek == Kierunek.GORA: - losowa_droga = random.randint(0, self.poleStartoweGorne.wiersz) + self.kierunek = Kierunek.DOL elif self.kierunek == Kierunek.DOL: - losowa_droga = random.randint(0, (self.krata.liczbaPolPionowo - 1) - ( - self.poleStartoweGorne.wiersz + self.bokWPolach - 1)) + self.kierunek = Kierunek.GORA elif self.kierunek == Kierunek.LEWO: - losowa_droga = random.randint(0, self.poleStartoweGorne.kolumna) + self.kierunek = Kierunek.PRAWO elif self.kierunek == Kierunek.PRAWO: - losowa_droga = random.randint(0, (self.krata.liczbaPolPoziomo - 1) - ( - self.poleStartoweGorne.wiersz + self.bokWPolach - 1)) - self.droga = losowa_droga + self.kierunek = Kierunek.LEWO + + def maxDlugoscDrogiWMoimKierunku(self): + if self.kierunek == Kierunek.GORA: + return self.poleStartoweGorne.wiersz + elif self.kierunek == Kierunek.DOL: + return self.krata.liczbaPolPionowo - self.poleKoncoweDolne.wiersz - 1 + elif self.kierunek == Kierunek.LEWO: + return self.poleStartoweGorne.kolumna + elif self.kierunek == Kierunek.PRAWO: + return self.krata.liczbaPolPoziomo - self.poleKoncoweDolne.kolumna - 1 + + def zrobKrokWMoimKierunku(self): + if self.kierunek == Kierunek.GORA: + self.idzWGore() + elif self.kierunek == Kierunek.DOL: + self.idzWDol() + elif self.kierunek == Kierunek.LEWO: + self.idzWLewo() + elif self.kierunek == Kierunek.PRAWO: + self.idzWPrawo() + + def zrobKrokWOdwrotnymKierunku(self): + if self.kierunek == Kierunek.GORA: + self.idzWDol() + elif self.kierunek == Kierunek.DOL: + self.idzWGore() + elif self.kierunek == Kierunek.LEWO: + self.idzWPrawo() + elif self.kierunek == Kierunek.PRAWO: + self.idzWLewo() def idzWGore(self): self.poleStartoweGorne.wiersz -= 1 @@ -53,45 +115,3 @@ class Agent: def idzWPrawo(self): self.poleStartoweGorne.kolumna += 1 - - def wyszedlemPozaKrate(self): - if self.poleStartoweGorne.wiersz not in range(0, (self.krata.liczbaPolWPionie - 1) - (self.bokWPolach - 1)): - return False - elif self.poleStartoweGorne.kolumna in range(0, (self.krata.liczbaPolWPoziomie - 1) - (self.bokWPolach - 1)): - return False - else: - return True - - def ruszSie(self): - if self.kierunek == Kierunek.GORA: - self.idzWGore() - elif self.kierunek == Kierunek.DOL: - self.idzWDol() - elif self.kierunek == Kierunek.LEWO: - self.idzWLewo() - elif self.kierunek == Kierunek.PRAWO: - self.idzWPrawo() - if self.wyszedlemPozaKrate(): - self.cofnijSie() - self.zawroc() - self.okreslDlugoscDrogi() - - def cofnijSie(self): - if self.kierunek == Kierunek.GORA: - self.idzWDol() - elif self.kierunek == Kierunek.DOL: - self.idzWGore() - elif self.kierunek == Kierunek.LEWO: - self.idzWPrawo() - elif self.kierunek == Kierunek.PRAWO: - self.idzWLewo() - - def zawroc(self): - if self.kierunek == Kierunek.GORA: - self.kierunek = Kierunek.DOL - elif self.kierunek == Kierunek.DOL: - self.kierunek = Kierunek.GORA - elif self.kierunek == Kierunek.LEWO: - self.kierunek = Kierunek.PRAWO - elif self.kierunek == Kierunek.PRAWO: - self.kierunek = Kierunek.LEWO diff --git a/klasy.py b/krata.py similarity index 88% rename from klasy.py rename to krata.py index ec19f2e..ba69cfd 100644 --- a/klasy.py +++ b/krata.py @@ -55,14 +55,19 @@ class Krata: self.krata[rzad].append(ZawartoscPola.PUSTE) def wyswietlKrate(self): + self.narysujKrate() + self.narysujAgenta() + pygame.display.update() + + def narysujKrate(self): self.okno.fill(SZARY1) for rzad in range(self.liczbaPolPionowo): for kolumna in range(self.liczbaPolPoziomo): start = (self.odstepMiedzyPolami + self.bokPola) * kolumna + self.odstepMiedzyPolami gora = (self.odstepMiedzyPolami + self.bokPola) * rzad + self.odstepMiedzyPolami pygame.draw.rect(self.okno, BIALY, [start, gora, self.bokPola, self.bokPola]) - pygame.display.update() - def wyswietlAgenta(self): - self.okno.blit(self.agent.tekstura, (self.agent.hitbox.x, self.agent.hitbox.y)) - pygame.display.update() + def narysujAgenta(self): + if self.agent is not None: + self.okno.blit(self.agent.tekstura, (self.agent.hitbox.x, self.agent.hitbox.y)) + self.agent.ruszSie() diff --git a/main.py b/main.py index f2c2136..ef5b553 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,7 @@ Okno = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA)) pygame.display.set_caption("Okno1") Krata = Krata(Okno) + # def dodaj_agenta(): pole_lewe_gorne = PoleKraty(Krata, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH), @@ -13,10 +14,11 @@ def dodaj_agenta(): pom = 'test1_ikona.png' ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)), (BOK_AGENTA1, BOK_AGENTA1)) - Agent(Krata, pole_lewe_gorne, ikona, Kierunek.GORA, 0) + Agent(Krata, pole_lewe_gorne, ikona) def main(): + dodaj_agenta() klatkaz = pygame.time.Clock() warunek_dzialania = True while warunek_dzialania: @@ -26,8 +28,6 @@ def main(): warunek_dzialania = False break Krata.wyswietlKrate() - dodaj_agenta() - Krata.wyswietlAgenta() pygame.quit() diff --git a/stale.py b/stale.py index 34371f8..e82829d 100644 --- a/stale.py +++ b/stale.py @@ -1,4 +1,4 @@ -FPS = 1 +FPS = 10 # SZEROKOSC_OKNA = 1500 # WYSOKOSC_OKNA = 750