Wózki nie najeżdżają na siebie. Dodanie funkcjonalności agentom.
This commit is contained in:
parent
e7d28ad14a
commit
61c8f63437
95
agenci.py
95
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
|
||||
|
36
main.py
36
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()
|
||||
|
Loading…
Reference in New Issue
Block a user