Dodanie readme, oraz pola Agent.is_loaded
This commit is contained in:
parent
440aab0adc
commit
4bce97c9e7
51
Readme.md
Normal file
51
Readme.md
Normal 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.
|
2
agent.py
2
agent.py
@ -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:
|
||||||
|
3
main.py
3
main.py
@ -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
BIN
srodowisko_agenta.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 92 KiB |
Loading…
Reference in New Issue
Block a user