Dodanie readme, oraz pola Agent.is_loaded

This commit is contained in:
andrzej 2020-04-06 16:11:57 +02:00
parent 440aab0adc
commit 4bce97c9e7
4 changed files with 55 additions and 1 deletions

51
Readme.md Normal file
View File

@ -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.

View File

@ -5,6 +5,8 @@ class Agent:
self.y = start_y self.y = start_y
self.radius = radius self.radius = radius
self.assigned_warehouse = assigned_warehouse self.assigned_warehouse = assigned_warehouse
self.is_loaded = False
def move_right(self): def move_right(self):
self.x += 1 self.x += 1
if self.x > self.assigned_warehouse.width - 1: if self.x > self.assigned_warehouse.width - 1:

View File

@ -27,9 +27,10 @@ CIRCLE_CENTER_X, CIRCLE_CENTER_Y = int(TILE_WIDTH/2), int(TILE_HEIGHT/2)
class MainGameFrame: class MainGameFrame:
def __init__(self): def __init__(self):
self.display = pygame.display.set_mode(WINDOW_SIZE) self.display = pygame.display.set_mode(WINDOW_SIZE)
agent_radius = int(TILE_WIDTH/2)
self.warehouse_map = warehouse.Warehouse(20, 20, 150, 20) self.warehouse_map = warehouse.Warehouse(20, 20, 150, 20)
starting_x, starting_y = self.set_starting_agent_position() 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): def run(self):
while True: while True:

BIN
srodowisko_agenta.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB