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