Agent porusza się losowo po kracie zajmując 9 pól.
This commit is contained in:
parent
adece3ebc9
commit
21fccb422f
138
agent.py
138
agent.py
@ -1,22 +1,49 @@
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
from klasy import *
|
from krata import *
|
||||||
|
|
||||||
|
|
||||||
class Agent:
|
class Agent:
|
||||||
bok = BOK_AGENTA1
|
bok = BOK_AGENTA1
|
||||||
bokWPolach = BOK_AGENTA1_W_POLACH
|
bokWPolach = BOK_AGENTA1_W_POLACH
|
||||||
|
|
||||||
def __init__(self, Krata, poleStartoweGorne, tekstura, kierunek, droga):
|
def __init__(self, Krata, poleStartoweGorne, tekstura):
|
||||||
self.krata = Krata
|
self.krata = Krata
|
||||||
self.poleStartoweGorne = poleStartoweGorne
|
self.poleStartoweGorne = poleStartoweGorne
|
||||||
self.okreslHitbox()
|
|
||||||
self.okreslPoleKoncoweDolne()
|
|
||||||
self.tekstura = tekstura
|
self.tekstura = tekstura
|
||||||
self.kierunek = kierunek
|
self.okreslPolozenie()
|
||||||
self.droga = droga
|
self.obierzNowyKierunek()
|
||||||
|
self.okreslDlugoscDrogi()
|
||||||
Krata.agent = self
|
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):
|
def okreslHitbox(self):
|
||||||
self.hitbox = pygame.Rect(self.poleStartoweGorne.start, self.poleStartoweGorne.gora, self.bok, self.bok)
|
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
|
kolumna = self.poleStartoweGorne.kolumna + self.bokWPolach - 1
|
||||||
self.poleKoncoweDolne = PoleKraty(self.krata, wiersz, kolumna)
|
self.poleKoncoweDolne = PoleKraty(self.krata, wiersz, kolumna)
|
||||||
|
|
||||||
def obierzNowyKierunek(self):
|
def wyszedlemPozaKrate(self):
|
||||||
self.kierunek = Kierunek(random.randint(0, 3))
|
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):
|
def zawroc(self):
|
||||||
losowa_droga = None
|
|
||||||
if self.kierunek == Kierunek.GORA:
|
if self.kierunek == Kierunek.GORA:
|
||||||
losowa_droga = random.randint(0, self.poleStartoweGorne.wiersz)
|
self.kierunek = Kierunek.DOL
|
||||||
elif self.kierunek == Kierunek.DOL:
|
elif self.kierunek == Kierunek.DOL:
|
||||||
losowa_droga = random.randint(0, (self.krata.liczbaPolPionowo - 1) - (
|
self.kierunek = Kierunek.GORA
|
||||||
self.poleStartoweGorne.wiersz + self.bokWPolach - 1))
|
|
||||||
elif self.kierunek == Kierunek.LEWO:
|
elif self.kierunek == Kierunek.LEWO:
|
||||||
losowa_droga = random.randint(0, self.poleStartoweGorne.kolumna)
|
self.kierunek = Kierunek.PRAWO
|
||||||
elif self.kierunek == Kierunek.PRAWO:
|
elif self.kierunek == Kierunek.PRAWO:
|
||||||
losowa_droga = random.randint(0, (self.krata.liczbaPolPoziomo - 1) - (
|
self.kierunek = Kierunek.LEWO
|
||||||
self.poleStartoweGorne.wiersz + self.bokWPolach - 1))
|
|
||||||
self.droga = losowa_droga
|
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):
|
def idzWGore(self):
|
||||||
self.poleStartoweGorne.wiersz -= 1
|
self.poleStartoweGorne.wiersz -= 1
|
||||||
@ -53,45 +115,3 @@ class Agent:
|
|||||||
|
|
||||||
def idzWPrawo(self):
|
def idzWPrawo(self):
|
||||||
self.poleStartoweGorne.kolumna += 1
|
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
|
|
||||||
|
@ -55,14 +55,19 @@ class Krata:
|
|||||||
self.krata[rzad].append(ZawartoscPola.PUSTE)
|
self.krata[rzad].append(ZawartoscPola.PUSTE)
|
||||||
|
|
||||||
def wyswietlKrate(self):
|
def wyswietlKrate(self):
|
||||||
|
self.narysujKrate()
|
||||||
|
self.narysujAgenta()
|
||||||
|
pygame.display.update()
|
||||||
|
|
||||||
|
def narysujKrate(self):
|
||||||
self.okno.fill(SZARY1)
|
self.okno.fill(SZARY1)
|
||||||
for rzad in range(self.liczbaPolPionowo):
|
for rzad in range(self.liczbaPolPionowo):
|
||||||
for kolumna in range(self.liczbaPolPoziomo):
|
for kolumna in range(self.liczbaPolPoziomo):
|
||||||
start = (self.odstepMiedzyPolami + self.bokPola) * kolumna + self.odstepMiedzyPolami
|
start = (self.odstepMiedzyPolami + self.bokPola) * kolumna + self.odstepMiedzyPolami
|
||||||
gora = (self.odstepMiedzyPolami + self.bokPola) * rzad + self.odstepMiedzyPolami
|
gora = (self.odstepMiedzyPolami + self.bokPola) * rzad + self.odstepMiedzyPolami
|
||||||
pygame.draw.rect(self.okno, BIALY, [start, gora, self.bokPola, self.bokPola])
|
pygame.draw.rect(self.okno, BIALY, [start, gora, self.bokPola, self.bokPola])
|
||||||
pygame.display.update()
|
|
||||||
|
|
||||||
def wyswietlAgenta(self):
|
def narysujAgenta(self):
|
||||||
self.okno.blit(self.agent.tekstura, (self.agent.hitbox.x, self.agent.hitbox.y))
|
if self.agent is not None:
|
||||||
pygame.display.update()
|
self.okno.blit(self.agent.tekstura, (self.agent.hitbox.x, self.agent.hitbox.y))
|
||||||
|
self.agent.ruszSie()
|
6
main.py
6
main.py
@ -6,6 +6,7 @@ Okno = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
|
|||||||
pygame.display.set_caption("Okno1")
|
pygame.display.set_caption("Okno1")
|
||||||
Krata = Krata(Okno)
|
Krata = Krata(Okno)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
def dodaj_agenta():
|
def dodaj_agenta():
|
||||||
pole_lewe_gorne = PoleKraty(Krata, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
|
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'
|
pom = 'test1_ikona.png'
|
||||||
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
|
ikona = pygame.transform.scale(pygame.image.load(os.path.join('Ikony', pom)),
|
||||||
(BOK_AGENTA1, BOK_AGENTA1))
|
(BOK_AGENTA1, BOK_AGENTA1))
|
||||||
Agent(Krata, pole_lewe_gorne, ikona, Kierunek.GORA, 0)
|
Agent(Krata, pole_lewe_gorne, ikona)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
dodaj_agenta()
|
||||||
klatkaz = pygame.time.Clock()
|
klatkaz = pygame.time.Clock()
|
||||||
warunek_dzialania = True
|
warunek_dzialania = True
|
||||||
while warunek_dzialania:
|
while warunek_dzialania:
|
||||||
@ -26,8 +28,6 @@ def main():
|
|||||||
warunek_dzialania = False
|
warunek_dzialania = False
|
||||||
break
|
break
|
||||||
Krata.wyswietlKrate()
|
Krata.wyswietlKrate()
|
||||||
dodaj_agenta()
|
|
||||||
Krata.wyswietlAgenta()
|
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user