From d3387c820cd000712fde3f6088f01a533c35a6c7 Mon Sep 17 00:00:00 2001 From: s464931 Date: Sun, 27 Mar 2022 23:08:35 +0200 Subject: [PATCH] =?UTF-8?q?Szafki=20z=20p=C3=B3=C5=82kami=20jako=20=C5=9Bc?= =?UTF-8?q?iany?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/Sztuczna_Inteligencja_Gr16.iml | 2 +- .idea/misc.xml | 2 +- agent.py | 14 ++++++------ main.py | 20 ++++++++++++++++- ramy_czyli_wiedza_agenta.py | 32 ++++++++++++++++++++++++++-- stale.py | 2 ++ 6 files changed, 60 insertions(+), 12 deletions(-) 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)