2022-03-22 21:52:05 +01:00
from enumy_i_slowniki import *
from stale import *
2022-03-27 23:08:35 +02:00
from krata import *
2022-03-22 21:52:05 +01:00
class Wymiary :
def __init__ ( self , dlugosc , szerokosc , wysokosc ) :
self . dlugosc = dlugosc
self . szerokosc = szerokosc
self . wysokosc = wysokosc
class Mapa :
def __init__ ( self ) :
self . liczbaPolPoziomo = LICZBA_POL_W_POZIOMIE
self . liczbaPolPionowo = LICZBA_POL_W_PIONIE
self . bokPola = BOK_POLA
self . odstepMiedzyPolami = ODSTEP_MIEDZY_POLAMI
self . utworzPustaMape ( )
self . agent = None
def utworzPustaMape ( self ) :
self . krata = [ ]
for wiersz in range ( self . liczbaPolPionowo ) :
self . krata . append ( [ ] )
for kolumna in range ( self . liczbaPolPoziomo ) :
zawartosc_pola = ZawartoscPola . PUSTE
nowe_pole = PoleMapy ( self , wiersz , kolumna , zawartosc_pola )
self . krata [ wiersz ] . append ( nowe_pole )
class PoleMapy :
def __init__ ( self , mapa : Mapa , wiersz , kolumna , zawartosc : ZawartoscPola ) :
self . mapa = mapa
self . bok = self . mapa . bokPola
self . wiersz = wiersz
self . kolumna = kolumna
self . zawartosc = zawartosc
class WarunkiPowietrza :
def __init__ ( self , temperatura , wilgotnosc ) :
self . temperatura = temperatura
self . wilgotnosc = wilgotnosc
class Polka :
def __init__ ( self , wymiary : Wymiary , udzwig , wysokoscOdPodlogi ) :
self . wymiary = wymiary
self . udzwig = udzwig
self . wysokoscOdPodlogi = wysokoscOdPodlogi
2022-03-27 23:08:35 +02:00
# 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 )
2022-03-22 21:52:05 +01:00
class Szafka :
2022-03-27 23:08:35 +02:00
def __init__ ( self , wymiary : Wymiary , ilosc_polek , poczatek_kolumna , poczatek_wiersz1 , Krata : Krata ) :
2022-03-22 21:52:05 +01:00
self . wymiary = wymiary
self . Polki = [ ]
self . zajmowanePola = [ ]
2022-03-27 23:08:35 +02:00
self . utworzPustaSzafke ( ilosc_polek , poczatek_kolumna , poczatek_wiersz1 , Krata )
2022-03-22 21:52:05 +01:00
def dodajPolke ( self , polka : Polka ) :
self . Polki . append ( polka )
2022-03-27 23:08:35 +02:00
def dodajPole ( self , pole : PoleKraty ) :
2022-03-22 21:52:05 +01:00
self . zajmowanePola . append ( pole )
2022-03-27 23:08:35 +02:00
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 )
2022-03-22 21:52:05 +01:00
class Pomieszczenie :
def __init__ ( self , warunkiPowietrza : WarunkiPowietrza , wysokoscSufitu ) :
self . warunkiPowietrza = warunkiPowietrza
self . wysokoscSufitu = wysokoscSufitu
self . Szafki = [ ]
self . zajmowanePola = [ ]
def dodajSzafke ( self , szafka : Szafka ) :
self . Szafki . append ( szafka )
def dodajPole ( self , pole : PoleMapy ) :
self . zajmowanePola . append ( pole )
2022-03-24 09:01:38 +01:00
class Etykieta :
def __init__ ( self , nazwaTowaru , nazwaNadawcy , dataZapakowania , id , niePietrowac , zachowacSuchosc , ostroznie , uwagaSzklo ) :
# realistyczne? informacje na paczce
# kategoryzowanie towaru może odbywać się na podstawie jego nazwy
self . nazwaTowaru = nazwaTowaru
self . nazwaNadawcy = nazwaNadawcy
self . dataZapakowania = dataZapakowania
self . id = id
# nalepki na paczce - być może nie będą na etykiecie, a trzeba je będzie rozpoznać na obrazie
self . niePietrowac = niePietrowac
self . zachowacSuchosc = zachowacSuchosc
self . ostroznie = ostroznie
self . uwagaSzklo = uwagaSzklo
class Paczka :
def __init__ ( self , wymiary : Wymiary , waga , etykieta : Etykieta ) :
self . wymiary = wymiary
self . waga = waga
self . etykieta = etykieta
class Paleta :
def __init__ ( self ) :
self . Paczki = [ ]
def dodajPaczke ( self , paczka : Paczka ) :
self . Paczki . append ( paczka )
class Nadawca :
def __init__ ( self , nazwa , id ) :
self . nazwa = nazwa
self . id = id
# plus dodatkowe informacje mogące wpływać na priorytet rozpakowania transportu / miejsce składowania paczek?
class Transport :
def __init__ ( self , dataPrzyjecia , nadawca : Nadawca , id ) :
Palety = [ ]
self . dataPrzyjecia = dataPrzyjecia
self . nadawca = nadawca
self . id = id
# wyliczanie priorytetu rozpakowania transportu ?
# def okrescPriorytet(self):
# self.priorytet =