pudlles implementation without weights

This commit is contained in:
Makrellka 2022-04-28 14:03:53 +02:00
parent f6a07386a8
commit 7324fc47d9
6 changed files with 21 additions and 4 deletions

View File

@ -17,7 +17,7 @@ from util.PathDefinitions import GridLocation, GridWithWeights
class GameModel(Model):
def __init__(self, width, height, graph: GridWithWeights):
def __init__(self, width, height, graph: GridWithWeights, graph2: GridWithWeights):
# self.num_agents = 5
self.running = True
self.grid = MultiGrid(height, width, True)
@ -33,7 +33,8 @@ class GameModel(Model):
self.game_constants = GameConstants(
width,
height,
graph.walls
graph.walls,
graph2.puddles
)
# Add the agent to a random grid cell
@ -53,6 +54,7 @@ class GameModel(Model):
self.place_patch_agents()
self.place_walls_agents(graph.walls)
self.place_puddles(graph2.puddles)
actions = pathFinder.getActionList()
print("PATHFINDING")
@ -81,6 +83,12 @@ class GameModel(Model):
self.agents.append(agent)
self.grid.place_agent(agent, w)
def place_puddles(self, puddles: List[GridLocation]):
for p in puddles:
agent = PatchAgent(self, PatchType.diffTerrain)
self.agents.append(agent)
self.grid.place_agent(agent, p)
def step(self):
self.schedule.step()

View File

@ -6,3 +6,4 @@ class PatchType(enum.Enum):
pickUp = 2
item = 3
wall = 4
diffTerrain = 5

View File

@ -12,7 +12,8 @@ class GameConstants:
# delivery_pos: GridLocation,
# order_pos: GridLocation,
# special_positions: Dict[ItemType, GridLocation],
walls: [GridLocation]
walls: [GridLocation],
puddles: [GridLocation]
):
self.grid_width = grid_width
self.grid_height = grid_height
@ -20,3 +21,4 @@ class GameConstants:
# self.order_pos = order_pos
# self.special_positions = special_positions
self.walls = walls
self.puddles = puddles

BIN
img/puddle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -38,6 +38,8 @@ def agent_portrayal(agent):
portrayal = {"Shape": "img/truck.png", "scale": 1.0, "Layer": 0}
elif agent.patch_type == PatchType.pickUp:
portrayal = {"Shape": "img/okB00mer.png", "scale": 1.0, "Layer": 0}
elif agent.patch_type == PatchType.diffTerrain:
portrayal = {"Shape": "img/puddle.png", "scale": 1.0, "Layer": 0}
else:
color = colors[random.randrange(13) + 3]
portrayal = {"Shape": "rect",
@ -58,12 +60,15 @@ if __name__ == '__main__':
diagram4 = GridWithWeights(gridWidth, gridHeight)
diagram4.walls = [(6, 5), (6, 6), (6, 7), (6, 8), (2, 3), (2, 4)]
diagram5 = GridWithWeights(gridWidth, gridHeight)
diagram5.puddles = [(2, 2), (2, 5)]
grid = CanvasGrid(agent_portrayal, gridWidth, gridHeight, scale * gridWidth, scale * gridHeight)
server = ModularServer(GameModel,
[grid],
"Automatyczny Wózek Widłowy",
{"width": gridHeight, "height": gridWidth, "graph": diagram4})
{"width": gridHeight, "height": gridWidth, "graph": diagram4, "graph2": diagram5},)
server.port = 8888
server.launch()

View File

@ -13,6 +13,7 @@ class SquareGrid:
self.width = width
self.height = height
self.walls: List[GridLocation] = []
self.puddles: List[GridLocation] = []
def in_bounds(self, id: GridLocation) -> bool:
(x, y) = id