Esempio n. 1
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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)