diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..918faeb --- /dev/null +++ b/Readme.md @@ -0,0 +1,51 @@ +####Język i biblioteki - opis uruchomienia +Projekt piszemy w języku Python 3. +Graficzna reprezentacja jest stworzona przy użyciu biblioteki +Pygame. Oprócz tego zostały również użyte moduły: +queue, collections, +oraz itertools i enum. + + +####Środowisko agenta + +![Przykładowe środowisko agenta](srodowisko_agenta.png) + +Środowiskiem agenta jest krata o wymiarze x na y +w Pythonie reprezentowana jest przez 2-wymiarową listę +składającą się z obiektów klasy Tile, oraz Pack. \ + +#####Generowanie mapy +Generowanie mapy w ramach której będzie działać agent +odbywa się przy pomocy znacznie zmodyfikowanego algorytmu +Depth First Search, z nałożonym ograniczeniem ilości +regałów które mogą być wygenerowane na mapie. + +**Obiekt Tile** reprezentuje pole na kracie, np regał, lub podłogę. +Przechowuje on także pozycję pola na kracie + +**Obiekt Pack** to paczka, zawiera on informacje o kategorii paczki, +oraz o tym na jakim polu leży, a także jej status. +Status może przyjąć wartość LOOSE(paczka leży na podłodze), \ +STORED(paczka jest na właściwym regale we właściwym miejscu magazynu), albo STORED_BAD_LOCATION(paczka jest na regale, ale w złej lokalizacji) + +####Regał +Reprezentowany przez obiekt Tile posiadający kategorię 'rack' +Kategoria zawiera informacje czy pole danej kategorii może przechowywać paczkę, +czy agent może po nim przejść(po podłodze może, po regale nie). +Regał posiada również informacje jaka gabarytowo paczka +może być na nim przechowywana. + +###Agent +Agent jest reprezentowany przez czarny okrąg na planszy. +W kodzie programu jest on reprezentowany przez obiekt klasy Agent, +obecnie posiada on informacje o swoich współrzędnych, oraz czy właśnie transportuje paczkę czy nie. +Przy początku symulacji agent zostaje umieszczony w losowym +miejscu, które nie jest regałem, ani nie leży na nim paczka. +Możliwe ruchy do wykonania przez agenta na planszy to: +- ruch 1 pole w prawo +- ruch 1 pole w lewo +- ruch 1 pole do góry +- ruch 1 pole w dół \ +Agent może wykonywać tylko 1 z tych ruchów w jednym kroku, +czyli nie jest w stanie poruszyć się jednocześnie w +prawo i do góry. diff --git a/agent.py b/agent.py index 265b7cb..83d7fcd 100644 --- a/agent.py +++ b/agent.py @@ -5,6 +5,8 @@ class Agent: self.y = start_y self.radius = radius self.assigned_warehouse = assigned_warehouse + self.is_loaded = False + def move_right(self): self.x += 1 if self.x > self.assigned_warehouse.width - 1: diff --git a/main.py b/main.py index 1f090da..4ddf3bc 100644 --- a/main.py +++ b/main.py @@ -27,9 +27,10 @@ CIRCLE_CENTER_X, CIRCLE_CENTER_Y = int(TILE_WIDTH/2), int(TILE_HEIGHT/2) class MainGameFrame: def __init__(self): self.display = pygame.display.set_mode(WINDOW_SIZE) + agent_radius = int(TILE_WIDTH/2) self.warehouse_map = warehouse.Warehouse(20, 20, 150, 20) starting_x, starting_y = self.set_starting_agent_position() - self.agent = agent.Agent(starting_x, starting_y, self.warehouse_map, 20) + self.agent = agent.Agent(starting_x, starting_y, self.warehouse_map, agent_radius) def run(self): while True: diff --git a/srodowisko_agenta.png b/srodowisko_agenta.png new file mode 100644 index 0000000..abd17ea Binary files /dev/null and b/srodowisko_agenta.png differ