def generate(self): pp, dp = self.generateRand() pp_keys = self.buildings.__getitem__(pp).__dict__ dp_keys = self.buildings.__getitem__(dp).__dict__ print("- New delivery at x: {}, y: {}, pos={}.".format( pp_keys.get('x'), pp_keys.get('y'), pp)) print("- Drop point: x:{}, y:{}, pos={}".format( dp_keys.get('x'), dp_keys.get('y'), dp_keys.get('pos'))) d = type( 'obj', (object, ), { 'pos': pp, 'x': pp_keys.get('x'), 'y': pp_keys.get('y'), 'dp_pos': dp_keys.get('pos'), 'dp_x': dp_keys.get('x'), 'dp_y': dp_keys.get('y') }) self.deliveries.append(d) setattr(self.buildings.__getitem__(pp), 'delivery', not self.buildings.__getitem__(pp).__dict__.get('delivery')) utils.setRect(pp_keys.get('x'), pp_keys.get('y'), self.surface, constants.MAROON)
def pickUpDelivery(self): self.startD = time.perf_counter() #start "timer" for delivery entity = world.World.getWorldObject( world.World, (self.x + self.dx), (self.y + self.dy)).__dict__ # get entity in front of agent id = entity.get( 'info' ) # get id of delivery that this entity has. if it has a delivery, the 'info' attribute has its id. deli = world.deliveries[ id].__dict__ # get delivery - for now, the pos and id are the same print(" [{}] has delivery: {}. Pp: ({}, {}), Dp:({}, {})".format( self.name, deli.get('id'), deli.get('x'), deli.get('y'), deli.get('dp_x'), deli.get('dp_y'))) self.updateAgent(deli.get( 'id')) # update agent, so it knows it has a cargo and the id world.World.updateDelivery( world.World, deli.get('id'), 'agent', self.name + '-' + self.myCompany ) # update delivery, so it knows which agents is delivering world.World.updateBuilding( world.World, deli.get('x'), deli.get('y') ) # update building (remove delivery from it) -> set to false in objects, dont remove from deliveries list # change color of building -> didnt work in world.py utils.setRect(deli.get('x'), deli.get('y'), self.surface, constants.DARKSLATEGRAY)
def setCell(self, x, y, typeCell, obs=False, delivery=False, isFree=False, marked=None, info=''): e = WorldObject.WorldObject(x, y, typeCell, obs, delivery, isFree, marked, info) world.objects[x][y] = e utils.setRect(x, y, self.surface, self.color)
def __init__(self, world_map, surface): super().__init__() self.buildings = [] pos = 0 for col, tiles in enumerate(world_map): for row, tile in enumerate(tiles): if tile == 'b': pos+=1 b = type('obj', (object,), {'pos': pos, 'x': row, 'y': col, 'delivery': False}) #b = Building(pos, row, col, False) self.buildings.append(b) e = WorldObject.WorldObject(row, col, 'building', False, False, False, None, '') world.objects[row][col] = e utils.setRect(row, col, surface, constants.DARKSLATEGRAY)
def __init__(self, world_map, surface): super().__init__() self.walls = [] for col, tiles in enumerate(world_map): for row, tile in enumerate(tiles): if tile == 'w': w = type('obj', (object, ), {'x': row, 'y': col}) self.walls.append(w) e = WorldObject.WorldObject(row, col, 'wall', False, False, False, None, '') world.objects[row][col] = e utils.setRect(row, col, surface, constants.BLACK)