From 61c8f63437fb3d70a4502adb4a10ec36ded8c143 Mon Sep 17 00:00:00 2001 From: Dominik Jagosz Date: Wed, 9 Mar 2022 16:08:26 +0100 Subject: [PATCH] =?UTF-8?q?W=C3=B3zki=20nie=20naje=C5=BCd=C5=BCaj=C4=85=20?= =?UTF-8?q?na=20siebie.=20Dodanie=20funkcjonalno=C5=9Bci=20agentom.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- agenci.py | 95 ++++++++++++++++++++++++++++++++++++++----------------- main.py | 36 ++++++++++++--------- stale.py | 12 +++++-- 3 files changed, 96 insertions(+), 47 deletions(-) diff --git a/agenci.py b/agenci.py index 31150ba..509f288 100644 --- a/agenci.py +++ b/agenci.py @@ -1,16 +1,8 @@ import random -from enum import Enum from stale import * -class KIERUNEK(Enum): - GORA = 0 - DOL = 1 - LEWO = 2 - PRAWO = 3 - - class Agent1: def __init__(self, hitbox, tekstura, kierunek, droga): self.hitbox = hitbox @@ -20,6 +12,8 @@ class Agent1: def obierzNowyKierunek(self): self.kierunek = KIERUNEK(random.randint(0, 3)) + + def okreslDlugoscDrogi(self): losowa_droga = None if self.kierunek == KIERUNEK.GORA: losowa_droga = random.randint(0, self.hitbox.y) @@ -31,28 +25,71 @@ class Agent1: losowa_droga = random.randint(0, SZEROKOSC_OKNA - self.hitbox.x) self.droga = losowa_droga - losowa_droga % KROK_AGENTA1 - def ruszSie(self): + def idzWGore(self): + if self.hitbox.y - KROK_AGENTA1 > 0: + self.hitbox.y -= KROK_AGENTA1 + self.droga -= KROK_AGENTA1 + else: + self.droga = 0 + + def idzWDol(self): + if self.hitbox.y + KROK_AGENTA1 < WYSOKOSC_OKNA - self.hitbox.height: + self.hitbox.y += KROK_AGENTA1 + self.droga -= KROK_AGENTA1 + else: + self.droga = 0 + + def idzWLewo(self): + if self.hitbox.x - KROK_AGENTA1 > 0: + self.hitbox.x -= KROK_AGENTA1 + self.droga -= KROK_AGENTA1 + else: + self.droga = 0 + + def idzWPrawo(self): + if self.hitbox.x + KROK_AGENTA1 < SZEROKOSC_OKNA - self.hitbox.width: + self.hitbox.x += KROK_AGENTA1 + self.droga -= KROK_AGENTA1 + else: + self.droga = 0 + + def czyWszedlesWInnegoAgenta(self, Agenci): + for a in Agenci: + if a.hitbox.colliderect(self.hitbox) and a != self: + return True + return False + + def ruszSie(self, Agenci): if self.kierunek == KIERUNEK.GORA: - if self.hitbox.y - KROK_AGENTA1 > 0: - self.hitbox.y -= KROK_AGENTA1 - self.droga -= KROK_AGENTA1 - else: - self.droga = 0 + self.idzWGore() elif self.kierunek == KIERUNEK.DOL: - if self.hitbox.y + KROK_AGENTA1 < WYSOKOSC_OKNA - self.hitbox.height: - self.hitbox.y += KROK_AGENTA1 - self.droga -= KROK_AGENTA1 - else: - self.droga = 0 + self.idzWDol() elif self.kierunek == KIERUNEK.LEWO: - if self.hitbox.x - KROK_AGENTA1 > 0: - self.hitbox.x -= KROK_AGENTA1 - self.droga -= KROK_AGENTA1 - else: - self.droga = 0 + self.idzWLewo() elif self.kierunek == KIERUNEK.PRAWO: - if self.hitbox.x + KROK_AGENTA1 < SZEROKOSC_OKNA - self.hitbox.width: - self.hitbox.x += KROK_AGENTA1 - self.droga -= KROK_AGENTA1 - else: - self.droga = 0 + self.idzWPrawo() + if self.czyWszedlesWInnegoAgenta(Agenci): + self.cofnijSie() + self.zawroc() + self.okreslDlugoscDrogi() + # self.ruszSie(Agenci) + + 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/main.py b/main.py index b032476..2a2409e 100644 --- a/main.py +++ b/main.py @@ -7,7 +7,6 @@ from stale import * OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA)) pygame.display.set_caption("Okno1") - Agenci1 = [] @@ -17,27 +16,37 @@ def wyswietl_okno(): OKNO.blit(a.tekstura, (a.hitbox.x, a.hitbox.y)) if a.droga == 0: a.obierzNowyKierunek() - a.ruszSie() + a.okreslDlugoscDrogi() + a.ruszSie(Agenci1) pygame.display.update() def dodaj_agenta1(): - los = random.randint(1, 240) - if len(Agenci1) < 50: + los = None + if len(Agenci1) in range(0, 40): + los = random.randint(1, 150) + elif len(Agenci1) in range(40, 50): + los = random.randint(1, 15) + if los != None: pom = None if los in (1, 2) or len(Agenci1) == 0: pom = 'wozek.png' - elif los in (2, 3): + elif los in (3, 4): pom = 'wozek_ze_skrzynka.png' - elif los == 4 and len(Agenci1) > 6: + elif los == 5 and len(Agenci1) > 6: pom = 'traktor_ikona.png' if pom != None: - hitbox = pygame.Rect(random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1), - random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1), BOK_AGENTA1, - BOK_AGENTA1) - ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)), - (BOK_AGENTA1, BOK_AGENTA1)) - Agenci1.append(Agent1(hitbox, ikona, KIERUNEK.GORA, 0)) + x, y = random.randint(0, SZEROKOSC_OKNA - BOK_AGENTA1), random.randint(0, WYSOKOSC_OKNA - BOK_AGENTA1) + hitbox = pygame.Rect(x, y, BOK_AGENTA1, BOK_AGENTA1) + warunek = True + for a in Agenci1: + if a.hitbox.colliderect(hitbox): + warunek = False + break + if warunek: + ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)), + (BOK_AGENTA1, BOK_AGENTA1)) + Agenci1.append(Agent1(hitbox, ikona, KIERUNEK.GORA, 0)) def main(): @@ -49,12 +58,9 @@ def main(): if event.type == pygame.QUIT: warunek_dzialania = False break - wyswietl_okno() dodaj_agenta1() - pygame.quit() main() -pygame.quit() diff --git a/stale.py b/stale.py index 832bf93..7e36106 100644 --- a/stale.py +++ b/stale.py @@ -1,11 +1,17 @@ +from enum import Enum + FPS = 120 KROK_AGENTA1 = 2 - SZEROKOSC_OKNA = 1280 WYSOKOSC_OKNA = 960 - BOK_AGENTA1 = 100 - BIALY = (255, 255, 255) JASNOSZARY1 = (200, 200, 200) ZIELONY1 = (26, 122, 26) + + +class KIERUNEK(Enum): + GORA = 0 + DOL = 1 + LEWO = 2 + PRAWO = 3