SI_InteligentnyWozekWidlowy/main.py

75 lines
2.7 KiB
Python
Raw Normal View History

import random
2022-03-06 22:16:21 +01:00
from mesa.visualization.ModularVisualization import ModularServer
2022-04-08 00:43:25 +02:00
from mesa.visualization.modules import CanvasGrid
2022-03-06 22:16:21 +01:00
from ForkliftAgent import ForkliftAgent
2022-04-08 00:43:25 +02:00
from GameModel import GameModel
from PatchAgent import PatchAgent
from PatchType import PatchType
2022-04-08 00:43:25 +02:00
from data.Direction import Direction
from util.PathDefinitions import GridWithWeights
2022-03-06 22:16:21 +01:00
colors = [
'blue', 'cyan', 'orange', 'yellow', 'magenta', 'purple', '#103d3e', '#9fc86c',
'#b4c2ed', '#31767d', '#31a5fa', '#ba96e0', '#fef3e4', '#6237ac', '#f9cacd', '#1e8123'
]
2022-03-06 22:16:21 +01:00
2022-04-08 00:43:25 +02:00
def agent_portrayal(agent):
if isinstance(agent, ForkliftAgent):
2022-04-08 00:43:25 +02:00
shape = ""
if agent.current_rotation == Direction.top:
shape = "img/image_top.png"
elif agent.current_rotation == Direction.right:
shape = "img/image_right.png"
elif agent.current_rotation == Direction.down:
shape = "img/image_down.png"
elif agent.current_rotation == Direction.left:
shape = "img/image_left.png"
portrayal = {"Shape": shape, "scale": 1.0, "Layer": 0}
if isinstance(agent, PatchAgent):
color = colors[0]
2022-04-16 14:55:25 +02:00
if agent.patch_type == PatchType.wall:
portrayal = {"Shape": "img/brick.webp", "scale": 1.0, "Layer": 0}
elif agent.patch_type == PatchType.dropOff:
2022-04-08 00:43:25 +02:00
portrayal = {"Shape": "img/truck.png", "scale": 1.0, "Layer": 0}
2022-04-16 14:55:25 +02:00
elif agent.patch_type == PatchType.pickUp:
2022-04-08 00:43:25 +02:00
portrayal = {"Shape": "img/okB00mer.png", "scale": 1.0, "Layer": 0}
2022-04-28 14:03:53 +02:00
elif agent.patch_type == PatchType.diffTerrain:
portrayal = {"Shape": "img/puddle.png", "scale": 1.0, "Layer": 0}
else:
2022-04-08 00:43:25 +02:00
color = colors[random.randrange(13) + 3]
2022-03-24 20:43:53 +01:00
portrayal = {"Shape": "rect",
2022-04-08 00:43:25 +02:00
"Filled": "true",
"Layer": 0,
"Color": color,
"w": 1,
"h": 1}
2022-03-06 22:16:21 +01:00
return portrayal
2022-04-08 00:43:25 +02:00
2022-04-16 15:55:43 +02:00
if __name__ == '__main__':
base = 512
gridWidth = 10
gridHeight = 10
scale = base / gridWidth
2022-04-08 00:43:25 +02:00
2022-04-16 15:55:43 +02:00
diagram4 = GridWithWeights(gridWidth, gridHeight)
diagram4.walls = [(6, 5), (6, 6), (6, 7), (6, 8), (2, 3), (2, 4), (3, 4), (4, 4), (6, 4)]
2022-03-06 22:16:21 +01:00
2022-04-28 14:03:53 +02:00
diagram5 = GridWithWeights(gridWidth, gridHeight)
2022-04-28 21:22:19 +02:00
diagram5.puddles = [(2, 2), (2, 5), (2, 6), (5, 4)]
2022-04-28 14:03:53 +02:00
2022-04-16 15:55:43 +02:00
grid = CanvasGrid(agent_portrayal, gridWidth, gridHeight, scale * gridWidth, scale * gridHeight)
2022-03-06 22:16:21 +01:00
2022-04-16 15:55:43 +02:00
server = ModularServer(GameModel,
[grid],
"Automatyczny Wózek Widłowy",
2022-04-28 14:03:53 +02:00
{"width": gridHeight, "height": gridWidth, "graph": diagram4, "graph2": diagram5},)
2022-04-28 01:50:56 +02:00
2022-04-16 15:55:43 +02:00
server.port = 8888
server.launch()