Wózki nie najeżdżają na siebie. Dodanie funkcjonalności agentom.
This commit is contained in:
parent
9ca4f821e1
commit
e8aa87ff54
@ -4,7 +4,7 @@
|
|||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="jdk" jdkName="Python 3.9 (sztucznosc)" jdkType="Python SDK" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (sztucznosc)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (Sztuczna_Inteligencja_Gr16)" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
13
agenci.py
13
agenci.py
@ -1,6 +1,7 @@
|
|||||||
import random
|
import random
|
||||||
|
|
||||||
import pygame
|
import pygame
|
||||||
|
from enumy import *
|
||||||
|
|
||||||
from stale import *
|
from stale import *
|
||||||
|
|
||||||
@ -8,6 +9,7 @@ from stale import *
|
|||||||
class Agent1:
|
class Agent1:
|
||||||
bok = BOK_AGENTA1
|
bok = BOK_AGENTA1
|
||||||
bok_w_polach = BOK_AGENTA1_W_POLACH
|
bok_w_polach = BOK_AGENTA1_W_POLACH
|
||||||
|
Agenci = []
|
||||||
|
|
||||||
def __init__(self, pole_lewe_gorne, tekstura, kierunek, droga):
|
def __init__(self, pole_lewe_gorne, tekstura, kierunek, droga):
|
||||||
self.pole_lewe_gorne = pole_lewe_gorne
|
self.pole_lewe_gorne = pole_lewe_gorne
|
||||||
@ -15,6 +17,7 @@ class Agent1:
|
|||||||
self.tekstura = tekstura
|
self.tekstura = tekstura
|
||||||
self.kierunek = kierunek
|
self.kierunek = kierunek
|
||||||
self.droga = droga
|
self.droga = droga
|
||||||
|
Agent1.Agenci.append(self)
|
||||||
|
|
||||||
def obierzNowyKierunek(self):
|
def obierzNowyKierunek(self):
|
||||||
self.kierunek = KIERUNEK(random.randint(0, 3))
|
self.kierunek = KIERUNEK(random.randint(0, 3))
|
||||||
@ -59,13 +62,13 @@ class Agent1:
|
|||||||
else:
|
else:
|
||||||
self.droga = 0
|
self.droga = 0
|
||||||
|
|
||||||
def czyWszedlesWInnegoAgenta(self, Agenci):
|
def czyWszedlesWInnegoAgenta(self):
|
||||||
for a in Agenci:
|
for a in self.Agenci:
|
||||||
if a.hitbox.colliderect(self.hitbox) and a != self:
|
if a.hitbox.colliderect(self.hitbox) and a != self:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def ruszSie(self, Agenci):
|
def ruszSie(self):
|
||||||
if self.kierunek == KIERUNEK.GORA:
|
if self.kierunek == KIERUNEK.GORA:
|
||||||
self.idzWGore()
|
self.idzWGore()
|
||||||
elif self.kierunek == KIERUNEK.DOL:
|
elif self.kierunek == KIERUNEK.DOL:
|
||||||
@ -74,7 +77,7 @@ class Agent1:
|
|||||||
self.idzWLewo()
|
self.idzWLewo()
|
||||||
elif self.kierunek == KIERUNEK.PRAWO:
|
elif self.kierunek == KIERUNEK.PRAWO:
|
||||||
self.idzWPrawo()
|
self.idzWPrawo()
|
||||||
if self.czyWszedlesWInnegoAgenta(Agenci):
|
if self.czyWszedlesWInnegoAgenta():
|
||||||
self.cofnijSie()
|
self.cofnijSie()
|
||||||
self.zawroc()
|
self.zawroc()
|
||||||
self.okreslDlugoscDrogi()
|
self.okreslDlugoscDrogi()
|
||||||
@ -103,4 +106,4 @@ class Agent1:
|
|||||||
def zaznacz_zajmowane_pola_na_kracie(self, Krata):
|
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 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):
|
for kolumna in range(self.pole_lewe_gorne.kolumna, self.pole_lewe_gorne.kolumna + self.bok_w_polach):
|
||||||
Krata[wiersz][kolumna] = POLE.AGENT
|
Krata.krata[wiersz][kolumna] = POLE.AGENT
|
||||||
|
40
main.py
40
main.py
@ -1,30 +1,16 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
|
from klasy import *
|
||||||
|
|
||||||
from agenci import *
|
from agenci import *
|
||||||
from stale import *
|
|
||||||
|
|
||||||
OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
|
OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
|
||||||
pygame.display.set_caption("Okno1")
|
pygame.display.set_caption("Okno1")
|
||||||
Agenci1 = []
|
Krata = Krata(OKNO)
|
||||||
|
|
||||||
Krata = []
|
|
||||||
for rzad in range(LICZBA_POL_W_PIONIE):
|
|
||||||
Krata.append([])
|
|
||||||
for kolumna in range(LICZBA_POL_W_POZIOMIE):
|
|
||||||
Krata[rzad].append(POLE.PUSTE)
|
|
||||||
|
|
||||||
|
|
||||||
def wyswietl_krate():
|
|
||||||
OKNO.fill(SZARY1)
|
|
||||||
for rzad in range(LICZBA_POL_W_PIONIE):
|
|
||||||
for kolumna in range(LICZBA_POL_W_POZIOMIE):
|
|
||||||
pygame.draw.rect(OKNO, BIALY, [(ODSTEP_MIEDZY_POLAMI + BOK_POLA) * kolumna + ODSTEP_MIEDZY_POLAMI,
|
|
||||||
(ODSTEP_MIEDZY_POLAMI + BOK_POLA) * rzad + ODSTEP_MIEDZY_POLAMI,
|
|
||||||
BOK_POLA, BOK_POLA])
|
|
||||||
|
|
||||||
|
|
||||||
def wyswietl_agentow():
|
def wyswietl_agentow():
|
||||||
for a in Agenci1:
|
for a in Agent1.Agenci:
|
||||||
OKNO.blit(a.tekstura, (a.hitbox.x, a.hitbox.y))
|
OKNO.blit(a.tekstura, (a.hitbox.x, a.hitbox.y))
|
||||||
if a.droga == 0:
|
if a.droga == 0:
|
||||||
a.obierzNowyKierunek()
|
a.obierzNowyKierunek()
|
||||||
@ -37,7 +23,7 @@ def czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne):
|
|||||||
wynik = True
|
wynik = True
|
||||||
for wiersz in range(pole_lewe_gorne.wiersz, pole_lewe_gorne.wiersz + BOK_AGENTA1_W_POLACH):
|
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):
|
for kolumna in range(pole_lewe_gorne.kolumna, pole_lewe_gorne.kolumna + BOK_AGENTA1_W_POLACH):
|
||||||
if Krata[wiersz][kolumna] != POLE.PUSTE:
|
if Krata.krata[wiersz][kolumna] != POLE.PUSTE:
|
||||||
wynik = False
|
wynik = False
|
||||||
break
|
break
|
||||||
if wynik == False:
|
if wynik == False:
|
||||||
@ -47,30 +33,30 @@ def czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne):
|
|||||||
|
|
||||||
def dodaj_agenta1():
|
def dodaj_agenta1():
|
||||||
los = None
|
los = None
|
||||||
if len(Agenci1) in range(0, 40):
|
if len(Agent1.Agenci) in range(0, 40):
|
||||||
los = random.randint(1, 150)
|
los = random.randint(1, 150)
|
||||||
elif len(Agenci1) in range(40, 50):
|
elif len(Agent1.Agenci) in range(40, 50):
|
||||||
los = random.randint(1, 15)
|
los = random.randint(1, 15)
|
||||||
if los != None:
|
if los != None:
|
||||||
pom = None
|
pom = None
|
||||||
if los in (1, 2) or len(Agenci1) == 0:
|
if los in (1, 2) or len(Agent1.Agenci) == 0:
|
||||||
pom = 'wozek.png'
|
pom = 'wozek.png'
|
||||||
elif los in (3, 4):
|
elif los in (3, 4):
|
||||||
pom = 'wozek_ze_skrzynka.png'
|
pom = 'wozek_ze_skrzynka.png'
|
||||||
elif los == 5 and len(Agenci1) > 6:
|
elif los == 5 and len(Agent1.Agenci) > 6:
|
||||||
pom = 'traktor_ikona.png'
|
pom = 'traktor_ikona.png'
|
||||||
if pom != None:
|
if pom != None:
|
||||||
pole_lewe_gorne = Pole(random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
|
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))
|
random.randint(0, LICZBA_POL_W_POZIOMIE - BOK_AGENTA1_W_POLACH))
|
||||||
if len(Agenci1) == 0:
|
if len(Agent1.Agenci) == 0:
|
||||||
pole_lewe_gorne = Pole(0, 0)
|
pole_lewe_gorne = Pole(0, 0)
|
||||||
if czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne):
|
if czy_wylosowane_dla_agenta_pola_sa_puste(pole_lewe_gorne):
|
||||||
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))
|
||||||
nowy_agent = Agent1(pole_lewe_gorne, ikona, KIERUNEK.GORA, 0)
|
nowy_agent = Agent1(pole_lewe_gorne, ikona, KIERUNEK.GORA, 0)
|
||||||
nowy_agent.zaznacz_zajmowane_pola_na_kracie(Krata)
|
nowy_agent.zaznacz_zajmowane_pola_na_kracie(Krata)
|
||||||
Agenci1.append(nowy_agent)
|
Agent1.Agenci.append(nowy_agent)
|
||||||
# print(Krata)
|
# print(Krata)
|
||||||
|
|
||||||
|
|
||||||
@ -83,7 +69,7 @@ def main():
|
|||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
warunek_dzialania = False
|
warunek_dzialania = False
|
||||||
break
|
break
|
||||||
wyswietl_krate()
|
Krata.wyswietl_krate()
|
||||||
wyswietl_agentow()
|
wyswietl_agentow()
|
||||||
dodaj_agenta1()
|
dodaj_agenta1()
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
|
25
stale.py
25
stale.py
@ -1,5 +1,3 @@
|
|||||||
from enum import Enum
|
|
||||||
|
|
||||||
FPS = 120
|
FPS = 120
|
||||||
|
|
||||||
# SZEROKOSC_OKNA = 1500
|
# SZEROKOSC_OKNA = 1500
|
||||||
@ -20,26 +18,3 @@ BIALY = (255, 255, 255)
|
|||||||
JASNOSZARY1 = (200, 200, 200)
|
JASNOSZARY1 = (200, 200, 200)
|
||||||
SZARY1 = (150, 150, 150)
|
SZARY1 = (150, 150, 150)
|
||||||
ZIELONY1 = (26, 122, 26)
|
ZIELONY1 = (26, 122, 26)
|
||||||
|
|
||||||
|
|
||||||
class KIERUNEK(Enum):
|
|
||||||
GORA = 0
|
|
||||||
DOL = 1
|
|
||||||
LEWO = 2
|
|
||||||
PRAWO = 3
|
|
||||||
|
|
||||||
|
|
||||||
class POLE(Enum):
|
|
||||||
PUSTE = 0
|
|
||||||
AGENT = 1
|
|
||||||
LAWA = 2
|
|
||||||
|
|
||||||
|
|
||||||
class Pole():
|
|
||||||
bok = BOK_POLA
|
|
||||||
|
|
||||||
def __init__(self, wiersz, kolumna):
|
|
||||||
self.wiersz = wiersz
|
|
||||||
self.kolumna = kolumna
|
|
||||||
self.x_lewego_boku = (Pole.bok + ODSTEP_MIEDZY_POLAMI) * kolumna + ODSTEP_MIEDZY_POLAMI
|
|
||||||
self.y_gory = (Pole.bok + ODSTEP_MIEDZY_POLAMI) * wiersz + ODSTEP_MIEDZY_POLAMI
|
|
||||||
|
Loading…
Reference in New Issue
Block a user