diff --git a/agent.py b/agent.py new file mode 100644 index 0000000..ec82f44 --- /dev/null +++ b/agent.py @@ -0,0 +1,117 @@ +import random + +from krata import * + + +class Agent: + bok = BOK_AGENTA1 + bokWPolach = BOK_AGENTA1_W_POLACH + + def __init__(self, Krata, poleStartoweGorne, tekstura): + self.krata = Krata + self.poleStartoweGorne = poleStartoweGorne + self.tekstura = tekstura + 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) + + 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 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 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 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 + + def idzWDol(self): + self.poleStartoweGorne.wiersz += 1 + + def idzWLewo(self): + self.poleStartoweGorne.kolumna -= 1 + + def idzWPrawo(self): + self.poleStartoweGorne.kolumna += 1 diff --git a/enumy.py b/enumy.py new file mode 100644 index 0000000..7c52fa5 --- /dev/null +++ b/enumy.py @@ -0,0 +1,14 @@ +from enum import Enum + + +class Kierunek(Enum): + GORA = 0 + DOL = 1 + LEWO = 2 + PRAWO = 3 + + +class ZawartoscPola(Enum): + PUSTE = 0 + AGENT = 1 + LAWA = 2 diff --git a/etykieta.py b/etykieta.py new file mode 100644 index 0000000..fe67a4c --- /dev/null +++ b/etykieta.py @@ -0,0 +1,5 @@ +nazwa_paczki ="" +producent ="" +numer_paczki=int +cecha_paczki ="" +data_wysylki= "" diff --git a/krata.py b/krata.py new file mode 100644 index 0000000..ba69cfd --- /dev/null +++ b/krata.py @@ -0,0 +1,73 @@ +import pygame + +from enumy import * +from stale import * + + +class PoleKraty: + 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) + + +class 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.krata = self.utworzPustaKrate() + self.agent = None + + def utworzPustaKrate(self): + self.krata = [] + for rzad in range(self.liczbaPolPionowo): + self.krata.append([]) + for kolumna in range(self.liczbaPolPoziomo): + 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]) + + 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 new file mode 100644 index 0000000..9649589 --- /dev/null +++ b/main.py @@ -0,0 +1,35 @@ +import os + +from agent import * +import etykieta + +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), + 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)) + Agent(Krata, pole_lewe_gorne, ikona) + + +def main(): + dodaj_agenta() + klatkaz = pygame.time.Clock() + warunek_dzialania = True + while warunek_dzialania: + klatkaz.tick(FPS) + for event in pygame.event.get(): + if event.type == pygame.QUIT: + warunek_dzialania = False + break + Krata.wyswietlKrate() + pygame.quit() + + +main()