diff --git a/.idea/Sztuczna_Inteligencja_Gr16.iml b/.idea/Sztuczna_Inteligencja_Gr16.iml
index f754d4e..74d515a 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/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/agent.py b/agent.py
deleted file mode 100644
index 509f288..0000000
--- a/agent.py
+++ /dev/null
@@ -1,95 +0,0 @@
-import random
-
-from stale import *
-
-
-class Agent1:
- def __init__(self, hitbox, tekstura, kierunek, droga):
- self.hitbox = hitbox
- self.tekstura = tekstura
- self.kierunek = kierunek
- self.droga = droga
-
- 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)
- elif self.kierunek == KIERUNEK.DOL:
- losowa_droga = random.randint(0, WYSOKOSC_OKNA - self.hitbox.y)
- elif self.kierunek == KIERUNEK.LEWO:
- losowa_droga = random.randint(0, self.hitbox.x)
- elif self.kierunek == KIERUNEK.PRAWO:
- losowa_droga = random.randint(0, SZEROKOSC_OKNA - self.hitbox.x)
- self.droga = losowa_droga - losowa_droga % KROK_AGENTA1
-
- 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:
- 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.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
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/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
index f880f93..ef5b553 100644
--- a/main.py
+++ b/main.py
@@ -1,68 +1,24 @@
import os
-import pygame
from agent import *
-from stale import *
-import stale
-OKNO = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
+Okno = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
pygame.display.set_caption("Okno1")
-Agenci1 = []
-
-def kratka(surface):
- for i in range(stale.NUMBER_OF_BLOCKS_WIDE):
- new_height=round(i*BLOCK_HEIGHT)
- new_width =round(i*BLOCK_HEIGHT)
- pygame.draw.line(surface, BLACK,(0,new_height),(SZEROKOSC_OKNA,new_height),2)
- pygame.draw.line(surface,BLACK,(new_width,0),(new_width,WYSOKOSC_OKNA),2)
-
-def wyswietl_okno():
- OKNO.fill(JASNOSZARY1)
- 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)
- kratka(OKNO)
- pygame.display.update()
+Krata = Krata(Okno)
-def dodaj_agenta1():
- los = None
- if len(Agenci1) in range(0, 1):
- 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 (3, 4):
- pom = 'wozek_ze_skrzynka.png'
- 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:
- 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 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 dodaj_agenta2():
- los = None
- if len(Agenci1) in range(0, 1):
- los = random.randint(1, 15)
- pom = 'wozek.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)
def main():
+ dodaj_agenta()
klatkaz = pygame.time.Clock()
warunek_dzialania = True
while warunek_dzialania:
@@ -71,8 +27,7 @@ def main():
if event.type == pygame.QUIT:
warunek_dzialania = False
break
- wyswietl_okno()
- dodaj_agenta1()
+ Krata.wyswietlKrate()
pygame.quit()
diff --git a/stale.py b/stale.py
index 9ec458f..62d8244 100644
--- a/stale.py
+++ b/stale.py
@@ -1,13 +1,24 @@
-from enum import Enum
+FPS = 10
-FPS = 120
+# SZEROKOSC_OKNA = 1500
+# WYSOKOSC_OKNA = 750
+
+LICZBA_POL_W_POZIOMIE = 60
+LICZBA_POL_W_PIONIE = 30
+BOK_POLA = 20
+ODSTEP_MIEDZY_POLAMI = 2
+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 = 1080
-WYSOKOSC_OKNA = 760
-BOK_AGENTA1 = 100
+
BIALY = (255, 255, 255)
JASNOSZARY1 = (200, 200, 200)
+SZARY1 = (150, 150, 150)
ZIELONY1 = (26, 122, 26)
+
GREY =(150,150,150)
RED =(255,0,0)
BLUE=(55,55,255)
@@ -24,10 +35,4 @@ NUMBER_OF_BLOCKS_HIGH=8
BLOCK_HEIGHT=round(SZEROKOSC_OKNA/NUMBER_OF_BLOCKS_HIGH)
BLOCK_WIDTH=round(WYSOKOSC_OKNA/NUMBER_OF_BLOCKS_WIDE)
MAPFILE="map.txt"
-TITLE ="Gierka"
-
-class KIERUNEK(Enum):
- GORA = 0
- DOL = 1
- LEWO = 2
- PRAWO = 3
+TITLE ="Gierka"
\ No newline at end of file