closest_item (最近的物品)

closest_item(items)

将物品按寻路算法测得的距离排序,返回离我最近的物品实例。入参 items 为一个列表, 其中的每个元素是一个物品 Item 的实例。如果某个物品无法到达,则会被认定为无穷远。

参数

items (list[Item]) – 物品实例 Item 列表

返回

路途最近的物品实例 Item,如果没有可抵达的物品,返回 None

返回类型

Item

../_images/check_closest_item.png

实际案例

>>> import api
>>> # 获取地图信息
>>> api.get_context().maze
[['WALL', 'WALL', 'WALL', 'WALL', 'WALL'],
 ['WALL', 'ROAD', 'ROAD', 'ROAD', 'WALL'],
 ['WALL', 'ROAD', 'ROAD', 'ROAD', 'WALL'],
 ['WALL', 'ROAD', 'ROAD', 'ROAD', 'WALL'],
 ['WALL', 'ROAD', 'WALL', 'ROAD', 'WALL']]
>>> # 获取当前回合自己(企鹅)的信息
>>> api.get_context().me
Player(
    id=0, row=1, col=1, direction='D', energy=100.0, score=0.0,
    finished=False, item_count={'pink_gem': 0}, order=0
)
>>> # 获取地图中的物品信息
>>> api.get_context().items
{
    'pink_gem': [Item(row=2, col=2), Item(row=3, col=2)],
    'red_gem': [],
    'yellow_gem': [],
    'purple_gem': [],
    'blue_gem': [],
    'box': []
}
>>> # 获取名称为 "pink_gem" 的物品信息
>>> context.items["pink_gem"]
[Item(row=2, col=2), Item(row=3, col=2)]
>>> # 获取 "pink_gem" 物品中距离你最近的物品
>>> api.check.closest_item(context.items["pink_gem"])
Item(row=2, col=2)
>>> # 如果没有物品,返回 None
>>> api.check.closest_item([])
None
引发

TypeError – 如果入参 items 不是列表类型,或列表中的元素不是 Item 类型,触发此报错