diff --git a/.idea/Sztuczna_Inteligencja_Gr16.iml b/.idea/Sztuczna_Inteligencja_Gr16.iml
index 74d515a..2f5c6a2 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 94f623a..f65f09f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/agent.py b/agent.py
index 3a9553d..bb90851 100644
--- a/agent.py
+++ b/agent.py
@@ -23,7 +23,7 @@ class Agent:
self.zrobKrokWMoimKierunku()
self.droga -= 1
self.okreslPolozenie()
- if self.wyszedlemPozaKrate():
+ if self.wyszedlemPozaKrate() or self.wszedlemWSciane():
self.cofnijSie()
self.zawroc()
self.okreslDlugoscDrogi()
@@ -65,12 +65,12 @@ class Agent:
return False
# ZROBIC sciany
- # def wszedlemWSciane(self):
- # for wiersz in range (self.poleStartoweGorne.wiersz,self.poleKoncoweDolne.wiersz):
- # for kolumna in range(self.poleStartoweGorne.kolumna,self.poleKoncoweDolne.kolumna):
- # if self.krata.krata[wiersz][kolumna]==ZawartoscPola.SCIANA:
- # return True
- # return False
+ def wszedlemWSciane(self):
+ for wiersz in range (self.poleStartoweGorne.wiersz,self.poleKoncoweDolne.wiersz+1):
+ for kolumna in range(self.poleStartoweGorne.kolumna,self.poleKoncoweDolne.kolumna+1):
+ if self.krata.krata[wiersz][kolumna]==ZawartoscPola.SCIANA:
+ return True
+ return False
def zawroc(self):
if self.kierunek == Kierunek.GORA:
diff --git a/main.py b/main.py
index 9b8b187..dd66029 100644
--- a/main.py
+++ b/main.py
@@ -1,11 +1,18 @@
import os
+import ctypes
from agent import *
+from ramy_czyli_wiedza_agenta import *
+
+#aby działalo w oknie + rozdzielczość ekranu
+ctypes.windll.shcore.SetProcessDpiAwareness(1)
+
+
Okno = pygame.display.set_mode((SZEROKOSC_OKNA, WYSOKOSC_OKNA))
pygame.display.set_caption("Okno1")
Krata = Krata(Okno)
-
+Pomieszczenie=Pomieszczenie(0,0)
def dodaj_agenta():
# pole_lewe_gorne = PoleKraty(Krata, random.randint(0, LICZBA_POL_W_PIONIE - BOK_AGENTA1_W_POLACH),
@@ -16,8 +23,19 @@ def dodaj_agenta():
(BOK_AGENTA1, BOK_AGENTA1))
Agent(Krata, pole_lewe_gorne, ikona)
+def dodaj_szafke(poczatek_wiersz1, poczatek_kolumna,ilosc_polek):
+ #bardzo prosta szafka, później do zmiany i uzupełnienia
+ #tworzymy jeden typ szafki składającej się z dużych półek(to znaczy jest jedna półka oraz kilka miejsc na niej), każda z półek zajmuje po 3 pola z każdego boku
+ wymiary_szafki = Wymiary(0, 0, 0)
+ szafka = Szafka(wymiary_szafki, ilosc_polek, poczatek_wiersz1, poczatek_kolumna, Krata)
+ Pomieszczenie.dodajSzafke(szafka)
+
def main():
+ dodaj_szafke(0, 20, 8)
+ dodaj_szafke(0, 40, 8)
+ dodaj_szafke(0, 60, 8)
+ dodaj_szafke(0, 80, 8)
dodaj_agenta()
klatkaz = pygame.time.Clock()
warunek_dzialania = True
diff --git a/ramy_czyli_wiedza_agenta.py b/ramy_czyli_wiedza_agenta.py
index e783aeb..c5bd758 100644
--- a/ramy_czyli_wiedza_agenta.py
+++ b/ramy_czyli_wiedza_agenta.py
@@ -1,5 +1,6 @@
from enumy_i_slowniki import *
from stale import *
+from krata import *
class Wymiary:
@@ -48,20 +49,47 @@ class Polka:
self.wymiary = wymiary
self.udzwig = udzwig
self.wysokoscOdPodlogi = wysokoscOdPodlogi
+ # zakładamy że aby położyć paczkę na półkę, agent musi stać dokładnie na polach kraty, określonych w atrybucie dostęp
+ # atrybut dostęp składa się z 9 pól ponieważ tyle miejsca na kracie zajmuje agent
+ # utworzyłam szafki "wertykalnie" oraz zakładam że do półki można się dostać tylko z jednej strony (na razie tylko z lewej, ale można teżdodać, że tylko z prawej)
+ self.dostep = []
+ self.zajmowanePola = []
+
+ def dodajPole(self, pole: PoleKraty):
+ self.zajmowanePola.append(pole)
+
+ def dodajDostep(self, pole: PoleKraty):
+ self.dostep.append(pole)
class Szafka:
- def __init__(self, wymiary: Wymiary):
+ def __init__(self, wymiary: Wymiary, ilosc_polek, poczatek_kolumna, poczatek_wiersz1, Krata: Krata):
self.wymiary = wymiary
self.Polki = []
self.zajmowanePola = []
+ self.utworzPustaSzafke(ilosc_polek, poczatek_kolumna, poczatek_wiersz1, Krata)
def dodajPolke(self, polka: Polka):
self.Polki.append(polka)
- def dodajPole(self, pole: PoleMapy):
+ def dodajPole(self, pole: PoleKraty):
self.zajmowanePola.append(pole)
+ def utworzPustaSzafke(self, ilosc_polek, poczatek_wiersz1, poczatek_kolumna, Krata: Krata):
+ for i in range(ilosc_polek):
+ wymiar_polki = Wymiary(0, 0, 0)
+ polka = Polka(wymiar_polki, 0, 0)
+ for m in range(DUZA_SZAFA): # wiersz
+ poczatek_wiersz = poczatek_wiersz1 + i * 3 + m
+ for n in range(DUZA_SZAFA): # kolumna
+ Krata.krata[poczatek_wiersz][poczatek_kolumna + n] = ZawartoscPola.SCIANA
+ pole = PoleKraty(Krata, poczatek_wiersz, poczatek_kolumna)
+ polka.dodajPole(pole)
+ self.dodajPole(pole)
+ pole_dostepu = PoleKraty(Krata, poczatek_wiersz, poczatek_kolumna + n - BOK_AGENTA1_W_POLACH) #dostęp z lewej strony
+ polka.dodajDostep(pole_dostepu)
+ self.dodajPolke(polka)
+
class Pomieszczenie:
def __init__(self, warunkiPowietrza: WarunkiPowietrza, wysokoscSufitu):
diff --git a/stale.py b/stale.py
index 0d126b5..08dc53e 100644
--- a/stale.py
+++ b/stale.py
@@ -13,6 +13,8 @@ WYSOKOSC_OKNA = LICZBA_POL_W_PIONIE * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) + ODSTEP
BOK_AGENTA1_W_POLACH = 3
BOK_AGENTA1 = BOK_AGENTA1_W_POLACH * (BOK_POLA + ODSTEP_MIEDZY_POLAMI) - ODSTEP_MIEDZY_POLAMI
#
+DUZA_SZAFA=3
+#
BIALY = (255, 255, 255)
JASNOSZARY1 = (200, 200, 200)
SZARY1 = (150, 150, 150)