diff --git a/.idea/Sztuczna_Inteligencja_Gr16.iml b/.idea/Sztuczna_Inteligencja_Gr16.iml
index f754d4e..eeb3c1e 100644
--- a/.idea/Sztuczna_Inteligencja_Gr16.iml
+++ b/.idea/Sztuczna_Inteligencja_Gr16.iml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 89fb180..94f623a 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/Ikony/forklift.png b/Ikony/forklift.png
deleted file mode 100644
index 0ac059f..0000000
Binary files a/Ikony/forklift.png and /dev/null differ
diff --git a/agenci.py b/agenci.py
index 509f288..6b22093 100644
--- a/agenci.py
+++ b/agenci.py
@@ -1,11 +1,17 @@
import random
+import pygame
+
from stale import *
class Agent1:
- def __init__(self, hitbox, tekstura, kierunek, droga):
- self.hitbox = hitbox
+ bok = BOK_AGENTA1
+ bok_w_polach = 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)
self.tekstura = tekstura
self.kierunek = kierunek
self.droga = droga
@@ -93,3 +99,8 @@ class Agent1:
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[wiersz][kolumna] = POLE.AGENT
diff --git a/main.py b/main.py
index 2a2409e..5f859b9 100644
--- a/main.py
+++ b/main.py
@@ -1,7 +1,5 @@
import os
-import pygame
-
from agenci import *
from stale import *
@@ -9,18 +7,44 @@ OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
pygame.display.set_caption("Okno1")
Agenci1 = []
+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_okno():
- OKNO.fill(JASNOSZARY1)
+
+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():
for a in Agenci1:
OKNO.blit(a.tekstura, (a.hitbox.x, a.hitbox.y))
if a.droga == 0:
a.obierzNowyKierunek()
a.okreslDlugoscDrogi()
- a.ruszSie(Agenci1)
+ # 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[wiersz][kolumna] != POLE.PUSTE:
+ wynik = False
+ break
+ if wynik == False:
+ break
+ return wynik
+
+
def dodaj_agenta1():
los = None
if len(Agenci1) in range(0, 40):
@@ -36,17 +60,18 @@ def dodaj_agenta1():
elif los == 5 and len(Agenci1) > 6:
pom = 'traktor_ikona.png'
if pom != None:
- 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:
+ 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(Agenci1) == 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))
- Agenci1.append(Agent1(hitbox, ikona, KIERUNEK.GORA, 0))
+ nowy_agent = Agent1(pole_lewe_gorne, ikona, KIERUNEK.GORA, 0)
+ nowy_agent.zaznacz_zajmowane_pola_na_kracie(Krata)
+ Agenci1.append(nowy_agent)
+ # print(Krata)
def main():
@@ -58,7 +83,8 @@ def main():
if event.type == pygame.QUIT:
warunek_dzialania = False
break
- wyswietl_okno()
+ wyswietl_krate()
+ wyswietl_agentow()
dodaj_agenta1()
pygame.quit()
diff --git a/stale.py b/stale.py
index 7e36106..1d8be71 100644
--- a/stale.py
+++ b/stale.py
@@ -1,12 +1,24 @@
from enum import Enum
FPS = 120
+
+# SZEROKOSC_OKNA = 1500
+# WYSOKOSC_OKNA = 750
+
+LICZBA_POL_W_POZIOMIE = 60
+LICZBA_POL_W_PIONIE = 30
+BOK_POLA = 20
+ODSTEP_MIEDZY_POLAMI = 5
+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
+
+BOK_AGENTA1_W_POLACH = 3
+BOK_AGENTA1 = BOK_AGENTA1_W_POLACH * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) - ODSTEP_MIEDZY_POLAMI
KROK_AGENTA1 = 2
-SZEROKOSC_OKNA = 1280
-WYSOKOSC_OKNA = 960
-BOK_AGENTA1 = 100
+
BIALY = (255, 255, 255)
JASNOSZARY1 = (200, 200, 200)
+SZARY1 = (150, 150, 150)
ZIELONY1 = (26, 122, 26)
@@ -15,3 +27,19 @@ class KIERUNEK(Enum):
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