From 90356ec6d83f3b152f00f500e7202fd7211a8888 Mon Sep 17 00:00:00 2001 From: Dominik Jagosz Date: Mon, 21 Mar 2022 22:05:28 +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 | 127 +++++++++++++++++++++++++----------------------------- main.py | 68 ++++++----------------------- stale.py | 8 ++-- 3 files changed, 74 insertions(+), 129 deletions(-) diff --git a/agenci.py b/agenci.py index 2674685..74e470c 100644 --- a/agenci.py +++ b/agenci.py @@ -1,109 +1,98 @@ import random -import pygame -from enumy import * - -from stale import * +from klasy import * -class Agent1: +# poleKoncoweDolne -> wiersz+bokWPolach-1 kolumna+bokWPolach-1 +class Agent: bok = BOK_AGENTA1 - bok_w_polach = BOK_AGENTA1_W_POLACH - Agenci = [] + bokWPolach = BOK_AGENTA1_W_POLACH - def __init__(self, pole_lewe_gorne, tekstura, kierunek, droga): - self.pole_lewe_gorne = pole_lewe_gorne - self.hitbox = pygame.Rect(self.pole_lewe_gorne.x_lewego_boku, self.pole_lewe_gorne.y_gory, self.bok, self.bok) + def __init__(self, Krata, poleStartoweGorne, tekstura, kierunek, droga): + self.krata = Krata + self.poleStartoweGorne = poleStartoweGorne + self.okreslHitbox() + self.okreslPoleKoncoweDolne() self.tekstura = tekstura self.kierunek = kierunek self.droga = droga - Agent1.Agenci.append(self) + Krata.agent = self + + def okreslHitbox(self): + self.hitbox = pygame.Rect(self.poleStartoweGorne.start, self.poleStartoweGorne.gora, self.bok, self.bok) + + def okreslPoleKoncoweDolne(self): + wiersz = self.poleStartoweGorne.wiersz + self.bokWPolach - 1 + kolumna = self.poleStartoweGorne.kolumna + self.bokWPolach - 1 + self.poleKoncoweDolne = PoleKraty(self.krata, wiersz, kolumna) def obierzNowyKierunek(self): - self.kierunek = KIERUNEK(random.randint(0, 3)) + 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) - elif self.kierunek == KIERUNEK.DOL: - losowa_droga = random.randint(0, WYSOKOSC_OKNA - self.hitbox.y) - elif self.kierunek == KIERUNEK.LEWO: - losowa_droga = random.randint(0, self.hitbox.x) - elif self.kierunek == KIERUNEK.PRAWO: - losowa_droga = random.randint(0, SZEROKOSC_OKNA - self.hitbox.x) - self.droga = losowa_droga - losowa_droga % KROK_AGENTA1 + if self.kierunek == Kierunek.GORA: + losowa_droga = random.randint(0, self.poleStartoweGorne.wiersz) + elif self.kierunek == Kierunek.DOL: + losowa_droga = random.randint(0, (self.krata.liczbaPolPionowo - 1) - ( + self.poleStartoweGorne.wiersz + self.bokWPolach - 1)) + elif self.kierunek == Kierunek.LEWO: + losowa_droga = random.randint(0, self.poleStartoweGorne.kolumna) + elif self.kierunek == Kierunek.PRAWO: + losowa_droga = random.randint(0, (self.krata.liczbaPolPoziomo - 1) - ( + self.poleStartoweGorne.wiersz + self.bokWPolach - 1)) + self.droga = losowa_droga def idzWGore(self): - if self.hitbox.y - KROK_AGENTA1 > 0: - self.hitbox.y -= KROK_AGENTA1 - self.droga -= KROK_AGENTA1 - else: - self.droga = 0 + self.poleStartoweGorne.wiersz -= 1 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 + self.poleStartoweGorne.wiersz += 1 def idzWLewo(self): - if self.hitbox.x - KROK_AGENTA1 > 0: - self.hitbox.x -= KROK_AGENTA1 - self.droga -= KROK_AGENTA1 - else: - self.droga = 0 + self.poleStartoweGorne.kolumna -= 1 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 + self.poleStartoweGorne.kolumna += 1 - def czyWszedlesWInnegoAgenta(self): - for a in self.Agenci: - if a.hitbox.colliderect(self.hitbox) and a != self: - return True - return False + 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: + if self.kierunek == Kierunek.GORA: self.idzWGore() - elif self.kierunek == KIERUNEK.DOL: + elif self.kierunek == Kierunek.DOL: self.idzWDol() - elif self.kierunek == KIERUNEK.LEWO: + elif self.kierunek == Kierunek.LEWO: self.idzWLewo() - elif self.kierunek == KIERUNEK.PRAWO: + elif self.kierunek == Kierunek.PRAWO: self.idzWPrawo() - if self.czyWszedlesWInnegoAgenta(): + if self.wyszedlemPozaKrate(): self.cofnijSie() self.zawroc() self.okreslDlugoscDrogi() - # self.ruszSie(Agenci) def cofnijSie(self): - if self.kierunek == KIERUNEK.GORA: + if self.kierunek == Kierunek.GORA: self.idzWDol() - elif self.kierunek == KIERUNEK.DOL: + elif self.kierunek == Kierunek.DOL: self.idzWGore() - elif self.kierunek == KIERUNEK.LEWO: + elif self.kierunek == Kierunek.LEWO: self.idzWPrawo() - elif self.kierunek == KIERUNEK.PRAWO: + 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 - - def zaznacz_zajmowane_pola_na_kracie(self, Krata): - for wiersz in range(self.pole_lewe_gorne.wiersz, self.pole_lewe_gorne.wiersz + self.bok_w_polach): - for kolumna in range(self.pole_lewe_gorne.kolumna, self.pole_lewe_gorne.kolumna + self.bok_w_polach): - Krata.krata[wiersz][kolumna] = POLE.AGENT + 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 8b42107..6809479 100644 --- a/main.py +++ b/main.py @@ -1,63 +1,19 @@ import os -from klasy import * - from agenci import * -OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA)) +Okno = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA)) pygame.display.set_caption("Okno1") -Krata = Krata(OKNO) +Krata = Krata(Okno) -def wyswietl_agentow(): - for a in Agent1.Agenci: - OKNO.blit(a.tekstura, (a.hitbox.x, a.hitbox.y)) - if a.droga == 0: - a.obierzNowyKierunek() - a.okreslDlugoscDrogi() - # a.ruszSie(Agenci1) - pygame.display.update() - - -def czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne): - wynik = True - for wiersz in range(pole_lewe_gorne.wiersz, pole_lewe_gorne.wiersz + BOK_AGENTA1_W_POLACH): - for kolumna in range(pole_lewe_gorne.kolumna, pole_lewe_gorne.kolumna + BOK_AGENTA1_W_POLACH): - if Krata.krata[wiersz][kolumna] != POLE.PUSTE: - wynik = False - break - if wynik == False: - break - return wynik - - -def dodaj_agenta1(): - los = None - if len(Agent1.Agenci) in range(0, 40): - los = random.randint(1, 150) - elif len(Agent1.Agenci) in range(40, 50): - los = random.randint(1, 15) - if los != None: - pom = None - if los in (1, 2) or len(Agent1.Agenci) == 0: - pom = 'wozek.png' - elif los in (3, 4): - pom = 'wozek_ze_skrzynka.png' - elif los == 5 and len(Agent1.Agenci) > 6: - pom = 'traktor_ikona.png' - if pom != None: - pole_lewe_gorne = Pole(random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH), - random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH)) - if len(Agent1.Agenci) == 0: - pole_lewe_gorne = Pole(0, 0) - if czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne): - pom = 'test1_ikona.png' - ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)), - (BOK_AGENTA1, BOK_AGENTA1)) - nowy_agent = Agent1(pole_lewe_gorne, ikona, KIERUNEK.GORA, 0) - nowy_agent.zaznacz_zajmowane_pola_na_kracie(Krata) - Agent1.Agenci.append(nowy_agent) - # print(Krata) +def dodaj_agenta(): + pole_lewe_gorne = PoleKraty(Krata, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH), + random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH)) + pom = 'test1_ikona.png' + ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)), + (BOK_AGENTA1, BOK_AGENTA1)) + nowy_agent = Agent(Krata, pole_lewe_gorne, ikona, Kierunek.GORA, 0) def main(): @@ -69,9 +25,9 @@ def main(): if event.type == pygame.QUIT: warunek_dzialania = False break - Krata.wyswietl_krate() - wyswietl_agentow() - dodaj_agenta1() + Krata.wyswietlKrate() + dodaj_agenta() + Krata.wyswietlAgenta() pygame.quit() diff --git a/stale.py b/stale.py index daa130a..35dbd3d 100644 --- a/stale.py +++ b/stale.py @@ -1,12 +1,12 @@ -FPS = 120 +FPS = 1 # SZEROKOSC_OKNA = 1500 # WYSOKOSC_OKNA = 750 -LICZBA_POL_W_POZIOMIE = 60 -LICZBA_POL_W_PIONIE = 30 +LICZBA_POL_W_POZIOMIE = 80 +LICZBA_POL_W_PIONIE = 40 BOK_POLA = 20 -ODSTEP_MIEDZY_POLAMI = 5 +ODSTEP_MIEDZY_POLAMI = 1 SZEROKOSC_OKNA = LICZBA_POL_W_POZIOMIE * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) + ODSTEP_MIEDZY_POLAMI WYSOKOSC_OKNA = LICZBA_POL_W_PIONIE * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) + ODSTEP_MIEDZY_POLAMI