From 321ac8490e3a8eb5a76b5f07bee4c04ed086b1eb Mon Sep 17 00:00:00 2001 From: s464931 Date: Fri, 1 Apr 2022 18:18:30 +0200 Subject: [PATCH] =?UTF-8?q?Szafki=20z=20p=C3=B3=C5=82kami=20i=20miejscami?= =?UTF-8?q?=20na=20p=C3=B3=C5=82kach?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 21 +++++++------ ramy_czyli_wiedza_agenta.py | 61 +++++++++++++++++++++---------------- 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/main.py b/main.py index dd66029..89a4aca 100644 --- a/main.py +++ b/main.py @@ -17,25 +17,26 @@ Pomieszczenie=Pomieszczenie(0,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)) - pole_lewe_gorne = PoleKraty(Krata, 1, 1) + pole_lewe_gorne = PoleKraty(Krata, LICZBA_POL_W_PIONIE-BOK_AGENTA1_W_POLACH, int(LICZBA_POL_W_POZIOMIE/2)) pom = 'traktor_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_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 +def dodaj_szafke(numerSzafki, iloscPolek, iloscMiejscNaPolce, dostepZeStrony, poczatek_kolumna, poczatek_wiersz1): wymiary_szafki = Wymiary(0, 0, 0) - szafka = Szafka(wymiary_szafki, ilosc_polek, poczatek_wiersz1, poczatek_kolumna, Krata) + szafka = Szafka(numerSzafki,wymiary_szafki, iloscPolek, iloscMiejscNaPolce, dostepZeStrony, poczatek_kolumna, poczatek_wiersz1, 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_szafke("A", 2, 10, "L", 0, 20) #przykładowe wartości dla szafek + dodaj_szafke("B", 2, 10, "P", 0, 24) + dodaj_szafke("C", 2, 10, "L", 0, 40) + dodaj_szafke("D", 2, 10, "P", 0, 44) + dodaj_szafke("E", 2, 10, "L", 0, 60) + dodaj_szafke("F", 2, 10, "P", 0, 64) + dodaj_szafke("G", 2, 10, "L", 0, 80) + dodaj_szafke("H", 2, 10, "P", 0, 84) dodaj_agenta() klatkaz = pygame.time.Clock() warunek_dzialania = True diff --git a/ramy_czyli_wiedza_agenta.py b/ramy_czyli_wiedza_agenta.py index c5bd758..4b8632b 100644 --- a/ramy_czyli_wiedza_agenta.py +++ b/ramy_czyli_wiedza_agenta.py @@ -44,15 +44,14 @@ class WarunkiPowietrza: self.wilgotnosc = wilgotnosc -class Polka: - def __init__(self, wymiary: Wymiary, udzwig, wysokoscOdPodlogi): +class Miejsce: #wcześniej półka + def __init__(self, numer, wymiary: Wymiary, udzwig, wysokoscOdPodlogi): + self.numer=numer 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.status = 'wolne' + self.dostep=[] self.zajmowanePola = [] def dodajPole(self, pole: PoleKraty): @@ -63,33 +62,43 @@ class Polka: class Szafka: - def __init__(self, wymiary: Wymiary, ilosc_polek, poczatek_kolumna, poczatek_wiersz1, Krata: Krata): + def __init__(self, numerSzafki, wymiary: Wymiary, iloscPolek, iloscMiejscNaPolce, dostepZeStrony, poczatek_kolumna, poczatek_wiersz1, Krata: Krata): + self.numerSzafki=numerSzafki self.wymiary = wymiary - self.Polki = [] + self.iloscPolek = iloscPolek + self.iloscMiejscNaPolce = iloscMiejscNaPolce + self.dostepZeStrony=dostepZeStrony + self.Miejsca = [] self.zajmowanePola = [] - self.utworzPustaSzafke(ilosc_polek, poczatek_kolumna, poczatek_wiersz1, Krata) + self.utworzPustaSzafke(numerSzafki,iloscPolek, iloscMiejscNaPolce, dostepZeStrony, poczatek_kolumna, poczatek_wiersz1,Krata) - def dodajPolke(self, polka: Polka): - self.Polki.append(polka) + def dodajMiejsce(self, miejsce: Miejsce): + self.Miejsca.append(miejsce) 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) - + def utworzPustaSzafke(self, numerSzafki, iloscPolek, iloscMiejscNaPolce, dostępZeStrony, poczatek_wiersz1, poczatek_kolumna, Krata: Krata): + for i in range(iloscPolek): + for j in range(iloscMiejscNaPolce): + wymiar_miejsca = Wymiary(0, 0, 0) + numerMiejsca = self.numerSzafki + "/" + str(i) + "/" + str(j) + miejsce = Miejsce(numerMiejsca,wymiar_miejsca, 0, 0) + #wypełnianie pól "zajmowane miejsca" i "dostęp" + for m in range(DUZA_SZAFA): # wiersz + poczatek_wiersz = poczatek_wiersz1 + j * 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+n) + miejsce.dodajPole(pole) + self.dodajPole(pole) + if dostępZeStrony=="L": + pole_dostepu = PoleKraty(Krata, poczatek_wiersz, poczatek_kolumna + n - BOK_AGENTA1_W_POLACH) #dostęp z lewej strony + miejsce.dodajDostep(pole_dostepu) + elif dostępZeStrony == "P": + pole_dostepu = PoleKraty(Krata, poczatek_wiersz, poczatek_kolumna + n + BOK_AGENTA1_W_POLACH) # dostęp z prawej strony strony + miejsce.dodajDostep(pole_dostepu) + self.dodajMiejsce(miejsce) class Pomieszczenie: def __init__(self, warunkiPowietrza: WarunkiPowietrza, wysokoscSufitu):