context (环境信息)
context 是游戏的上下文信息。因为迷宫是以帧更新来运作的,每一帧都有每一帧独特的信息。比如当前帧,我的位置是什么等。
程序中,在每帧被重复调用的是你定义的 update() 函数。在 update 每次被游戏主程序中调用时。 都会传入当帧新的 context 信息。
>>> def update(context):
>>> print(context.me)
Player(
id=0, row=0, col=0, direction="D", energy=100, score=23, finished=False,
item_count={"red_gem": 0, "blue_gem": 0, "pink_gem": 0, "yellow_gem": 0, "purple_gem": 0, "box": 0},
order=0
)
下面的示例用法展示了一些编程策略。
示例用法(一):使用
get_context()
和 context 获取关卡的环境信息示例用法(二):学会获取己方(自己)玩家的信息
示例用法(三):学会获取对方玩家的信息
示例用法(四):获取与己方(自己)玩家距离最近的物品(宝石/宝箱)信息
示例用法(五):获取与己方(自己)玩家距离最远的物品(宝石/宝箱)信息
示例用法(六):获取与对方玩家距离最近的物品(宝石/宝箱)信息
示例用法(七):获取与对方玩家距离最远的物品(宝石/宝箱)信息
示例用法(八):计算己方(自己)与指定物品(宝石/宝箱)的距离
示例用法(九):计算对方玩家与指定物品(宝石/宝箱)的距离
示例用法
(一)使用 get_context()
和 context 获取关卡的环境信息
提示
在编程的时候,有两种方法可以获取关卡的环境信息。可以使用 api.get_context() 获取或者通过 update(context) 的 context 来获取。
可以使用 api.get_context().height 或者 update(context) 的 context.height 来获取关卡(地图)的高度(行数)。
>>> # 示例代码一:获取关卡(地图)的高度(行数)
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 使用 api.get_context().height 获取关卡地图的高度(地图的行数)
>>> height = api.get_context().height
>>>
>>> # 使用 context.height 获取关卡地图的高度(地图的行数)
>>> height = context.height
>>>
>>> return "S" # "S" 表示静止不动
可以使用 api.get_context().width 或者 update(context) 的 context.width 来获取关卡(地图)的宽度(列数)。
>>> # 示例代码二:获取关卡(地图)的宽度(列数)
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 使用 api.get_context().width 获取关卡地图的宽度(地图的列数)
>>> width = api.get_context().width
>>>
>>> # 使用 context.width 获取关卡地图的宽度(地图的列数)
>>> width = context.width
>>>
>>> return "S" # "S" 表示静止不动
可以使用 api.get_context().exit 或者 update(context) 的 context.exit 来获取己方(自己)出口(Exit)信息。
>>> # 示例代码三:使用 api.get_context().exit 获取己方(自己)出口(Exit)信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取己方(自己)出口(Exit)信息,注意目前并没有获取对方玩家(企鹅)的出口(Exit)信息的接口
>>> self_exit = api.get_context().exit
>>>
>>> return "S" # "S" 表示静止不动
>>> # 示例代码四:使用 context.exit 获取己方(自己)出口(Exit)信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取己方(自己)出口(Exit)信息,注意目前并没有获取对方玩家(企鹅)的出口(Exit)信息的接口
>>> sel_exit = context.exit
>>>
>>> return "S" # "S" 表示静止不动
可以使用 api.get_context().maze 或者 update(context) 的 context.maze 来获取关卡的地图信息。
目前 api 库中没有提供可以获取对方玩家(企鹅)的出口(Exit)信息的接口,你只能通过目测获取对方玩家(企鹅)的出口(Exit)信息。
>>> # 示例代码五:使用 api.get_context().maze 获取获取关卡的地图信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取关卡的地图信息
>>> maze_map = api.get_context().maze
>>>
>>> return "S" # "S" 表示静止不动
>>> # 示例代码六:使用 context.maze 获取关卡的地图信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取关卡的地图信息
>>> maze_map = context.maze
>>>
>>> return "S" # "S" 表示静止不动
可以使用 api.get_context() 或者 update(context) 的 context 来获取己方(自己)玩家(企鹅)的信息,有两种方法,通过 me 或者 players[0]。
>>> # 示例代码七:使用 api.get_context() 获取己方(自己)玩家(企鹅)的信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取己方(自己)玩家(企鹅)的信息,有两种方法,通过 me 或者 players[0]
>>> me = api.get_context().me
>>> me = api.get_context().players[0] # players 中第一个对象永远是自己(企鹅)
>>>
>>> return "S" # "S" 表示静止不动
>>> # 示例代码八:使用 context 获取己方(自己)玩家(企鹅)的信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取己方(自己)玩家(企鹅)的信息,有两种方法,通过 me 或者 players[0]
>>> me = context.me
>>> me = context.players[0] # players 中第一个对象永远是自己(企鹅)
>>>
>>> return "S" # "S" 表示静止不动
可以使用 api.get_context().players[1] 或者 update(context) 的 context.players[1] 来获取对方玩家(企鹅)的信息。
>>> # 示例代码九:使用 api.get_context() 获取对方玩家(企鹅)的信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取对方玩家(企鹅)的信息
>>> enemy = api.get_context().players[1] # players 中第二个对象永远是对方玩家(企鹅)
>>>
>>> return "S" # "S" 表示静止不动
>>> # 示例代码十:使用 context 获取对方玩家(企鹅)的信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取对方玩家(企鹅)的信息
>>> enemy = context.players[1] # players 中第二个对象永远是对方玩家(企鹅)
>>>
>>> return "S" # "S" 表示静止不动
可以使用 api.get_context().items 或者 update(context) 的 context.items 来获取关卡中当前回合所有物品(宝石/宝箱)的信息。
>>> # 示例代码十一:使用 api.get_context() 获取关卡中当前回合的物品信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取关卡中当前回合的物品信息
>>> items = api.get_context().items
>>> box = items["box"] # 获取宝箱信息
>>> pink_gem = items["pink_gem"] # 获取粉色宝石信息
>>> red_gem = items["red_gem"] # 获取红色宝石信息
>>> yellow_gem = items["yellow_gem"] # 获取黄色宝石信息
>>> purple_gem = items["purple_gem"] # 获取紫色宝石信息
>>> blue_gem = items["blue_gem"] # 获取蓝色宝石信息
>>>
>>> return "S" # "S" 表示静止不动
>>> # 示例代码十二:使用 context 获取关卡中当前回合的物品信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取关卡中当前回合的物品信息
>>> items = context.items
>>> box = items["box"] # 获取宝箱信息
>>> pink_gem = items["pink_gem"] # 获取粉色宝石信息
>>> red_gem = items["red_gem"] # 获取红色宝石信息
>>> yellow_gem = items["yellow_gem"] # 获取黄色宝石信息
>>> purple_gem = items["purple_gem"] # 获取紫色宝石信息
>>> blue_gem = items["blue_gem"] # 获取蓝色宝石信息
>>>
>>> return "S" # "S" 表示静止不动
可以使用 api.get_context().round 或者 update(context) 的 context.round 来获取当前所处回合。
>>> # 示例代码十三:使用 api.get_context() 获取当前所处回合
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取当前所处回合
>>> game_round = api.get_context().round
>>>
>>> return "S" # "S" 表示静止不动
>>> # 示例代码十四:使用 context 获取当前所处回合
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取当前所处回合
>>> game_round = context.round
>>>
>>> return "S" # "S" 表示静止不动
有关 get_context()
和 Context
的更详细用法可以在文档中查看。
(二)学会获取己方(自己)玩家的信息
提示
在和对方 PK 过程中,我们可能需要根据己方(自己)已收集的物品来调整我们的决策;
可以使用 context.me 或者 api.get_context().me 获取己方(自己)的信息
>>> # 示例代码一:获取己方(自己)玩家(企鹅)的信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)的信息,两种方法
>>> me = context.me
>>> me = api.get_context().me
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.me.id 或者 api.get_context().me.id 获取己方(自己)的 id 信息
>>> # 示例代码二:获取己方(自己)玩家(企鹅)的id
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)的信息,两种方法
>>> me = context.me
>>> me = api.get_context().me
>>>
>>> # 获取己方(自己)玩家(企鹅)的 id
>>> id = me.id
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.me.row 或者 api.get_context().me.row 获取自己的行坐标信息
>>> # 示例代码三:获取己方(自己)玩家(企鹅)的行坐标和列坐标
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)的信息,两种方法
>>> me = context.me
>>> me = api.get_context().me
>>>
>>> # 获取己方(自己)玩家(企鹅)的行坐标
>>> row = me.row
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.me.col 或者 api.get_context().me.col 获取自己的列坐标信息
>>> # 示例代码四:获取己方(自己)玩家(企鹅)的行坐标和列坐标
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)的信息,两种方法
>>> me = context.me
>>> me = api.get_context().me
>>>
>>> # 获取己方(自己)玩家(企鹅)的列坐标
>>> col = me.col
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.me.enemy 或者 api.get_context().me.enemy 获取自己的剩余体力
>>> # 示例代码五:获取己方(自己)玩家(企鹅)的剩余体力
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)的信息,两种方法
>>> me = context.me
>>> me = api.get_context().me
>>>
>>> # 获取己方(自己)玩家(企鹅)的剩余体力
>>> energy = me.energy
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.me.score 或者 api.get_context().me.score 获取自己的得分信息
>>> # 示例代码六:获取己方(自己)玩家(企鹅)截止到当前回合的得分
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)的信息,两种方法
>>> me = context.me
>>> me = api.get_context().me
>>>
>>> # 获取己方(自己)玩家(企鹅)截止到当前回合的得分
>>> score = me.score
>>>
>>> return "S" # "S" 表示静止不动
使用 context.me.item_count 或者 api.get_context().me.item_count 获取自己收集的物品(宝石和宝箱)信息
>>> # 示例代码七:获取己方(自己)玩家(企鹅)截止到当前回合收集的物品(宝石和宝箱)信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)的信息,两种方法
>>> me = context.me
>>> me = api.get_context().me
>>>
>>> # 获取己方(自己)玩家企鹅截止到当前回合收集到的物品(宝石/宝箱)信息
>>> item_count = me.item_count
>>>
>>> return "S" # "S" 表示静止不动
有关 Player
的更详细的用法可以在文档中查看。
(三)学会获取对方玩家的信息
提示
在和对方 PK 过程中,我们可能需要根据对方已收集的物品信息/得分信息/位置(坐标)信息来调整我们的决策;
可以使用 context.players[1] 或者 api.get_context().players[1] 获取对方玩家的信息
>>> # 示例代码一:获取对方玩家(企鹅)的信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家(企鹅)的信息,两种方法
>>> enemy = context.players[1]
>>> enemy = api.get_context().players[1]
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.players[1].id 或者 api.get_context().players[1].id 获取对方玩家的 id 信息
>>> # 示例代码二:获取己方(自己)玩家(企鹅)的id
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家(企鹅)的信息,两种方法
>>> enemy = context.players[1]
>>> enemy = api.get_context().players[1]
>>>
>>> # 获取对方玩家(企鹅)的 id
>>> id = enemy.id
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.players[1].row 或者 api.get_context().players[1].row 获取对方的行坐标信息
>>> # 示例代码三:获取对方玩家(企鹅)的行坐标
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家(企鹅)的信息,两种方法
>>> enemy = context.players[1]
>>> enemy = api.get_context().players[1]
>>>
>>> # 获取对方玩家(企鹅)的行坐标
>>> row = enemy.row
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.players[1].col 或者 api.get_context().players[1].col 获取对方的列坐标信息
>>> # 示例代码四:获取对方玩家(企鹅)的列坐标
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家(企鹅)的信息,两种方法
>>> enemy = context.players[1]
>>> enemy = api.get_context().players[1]
>>>
>>> # 获取对方玩家(企鹅)的列坐标
>>> col = enemy.col
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.players[1].energy 或者 api.get_context().players[1].energy 获取对方玩家的剩余体力
>>> # 示例代码五:获取对方玩家(企鹅)的剩余体力
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家(企鹅)的信息,两种方法
>>> enemy = context.players[1]
>>> enemy = api.get_context().players[1]
>>>
>>> # 获取对方玩家(企鹅)的剩余体力
>>> energy = enemy.energy
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.players[1].score 或者 api.get_context().players[1].score 获取对方玩家的得分信息
>>> # 示例代码六:获取对方玩家(企鹅)截止到当前回合的得分
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家(企鹅)的信息,两种方法
>>> enemy = context.players[1]
>>> enemy = api.get_context().players[1]
>>>
>>> # 获取对方玩家(企鹅)截止到当前回合的得分
>>> score = enemy.score
>>>
>>> return "S" # "S" 表示静止不动
可以使用 context.players[1].item_count 或者 api.get_context().players[1].item_count 获取对方玩家收集的物品(宝石和宝箱)信息
>>> # 示例代码七:获取对方玩家(企鹅)截止到当前回合收集的物品(宝石和宝箱)信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家(企鹅)的信息,两种方法
>>> enemy = context.players[1]
>>> enemy = api.get_context().players[1]
>>>
>>> # 获取对方玩家企鹅截止到当前回合收集到的物品(宝石/宝箱)信息
>>> item_count = enemy.item_count
>>>
>>> return "S" # "S" 表示静止不动
有关 Player
的更详细的用法可以在文档中查看。
(四)获取与己方(自己)玩家距离最近的物品(宝石/宝箱)信息
可以使用 closest_item()
来获取距离己方(自己)玩家(企鹅)最近的宝石信息。
>>> # 示例代码一:获取与己方(自己)玩家(企鹅)距离最近的宝石信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取当前回合中所有宝石的信息
>>> items = context.items
>>> gem_list = items["yellow_gem"] + items["pink_gem"] + items["blue_gem"] + items["red_gem"] + items["purple_gem"]
>>>
>>> # 使用 api.check.closest_item 获取距离自己最近的宝石信息
>>> target_gem = api.check.closest_item(gem_list)
>>>
>>> return "S" # "S" 表示静止不动
可以使用 closest_item()
来获取距离己方(自己)玩家(企鹅)最近的宝箱信息。
>>> # 示例代码二:获取与己方(自己)玩家(企鹅)距离最近的宝箱信息
>>>
>>> import api
>>>
>>> def update(context):
>>>
>>> # 获取当前回合中所有宝箱的信息
>>> items = context.items
>>> box_list = items["box"]
>>>
>>> # 使用 api.check.closest_item 获取距离自己最近的宝箱信息
>>> target_box = api.check.closest_item(box_list)
>>>
>>> return "S" # "S" 表示静止不动
有关 Item
的更详细的用法可以在文档中查看。
(五)获取与己方(自己)玩家距离最远的物品(宝石/宝箱)信息
可以使用 for 循环 和 path()
的方法来获取与己方(自己)距离最远的宝石信息。
>>> # 示例代码一:获取与己方(自己)玩家(企鹅)距离最远的宝石信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)信息
>>> me = context.me
>>>
>>> # 获取关卡中当前回合所有物品的信息
>>> items = context.items
>>> pink_gem_list = items["pink_gem"] # 获取粉色宝石信息
>>> red_gem_list = items["red_gem"] # 获取红色宝石信息
>>> yellow_gem_list = items["yellow_gem"] # 获取黄色宝石信息
>>> purple_gem_list = items["purple_gem"] # 获取紫色宝石信息
>>> blue_gem_list = items["blue_gem"] # 获取蓝色宝石信息
>>>
>>> # 遍历所有的宝石,获取与己方(自己)玩家(企鹅)距离最远的宝石
>>> farthest_gem = None
>>> max_dist = -float("inf")
>>> for gem in pink_gem_list + red_gem_list + yellow_gem_list + purple_gem_list + blue_gem_list:
>>> dist = len(api.check.path(start=(me.row, me.col), end=(gem.row, gem.col)))
>>> if dist > max_dist:
>>> farthest_gem = gem
>>> max_dist = dist
>>>
>>> return "S" # "S" 表示静止不动
可以使用 for 循环 和 path()
的方法来获取与己方(自己)距离最远的宝箱信息。
>>> # 示例代码二:获取与己方(自己)玩家(企鹅)距离最远的宝箱信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取己方(自己)玩家(企鹅)信息
>>> me = context.me
>>>
>>> # 获取关卡中当前回合所有物品的信息
>>> items = context.items
>>> box_list = items["box"] # 获取宝箱信息
>>>
>>> # 遍历所有的宝箱(box),获取与己方(自己)玩家(企鹅)距离最远的宝箱(box)
>>> farthest_box = None
>>> max_dist = -float("inf")
>>> for box in box_list:
>>> dist = len(api.check.path(start=(me.row, me.col), end=(box.row, box.col)))
>>> if dist > max_dist:
>>> farthest_box = box
>>> max_dist = dist
>>>
>>> return "S" # "S" 表示静止不动
有关 Item
的更详细的用法可以在文档中查看。
(六)获取与对方玩家距离最近的物品(宝石/宝箱)信息
可以使用 for 循环 和 path()
的方法来获取与对方玩家(企鹅)距离最近的宝石信息。
>>> # 示例代码一:获取与对方玩家(企鹅)距离最近的宝石信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家信息
>>> enemy = context.players[1]
>>>
>>> # 获取关卡中当前回合所有物品的信息
>>> items = context.items
>>> pink_gem_list = items["pink_gem"] # 获取粉色宝石信息
>>> red_gem_list = items["red_gem"] # 获取红色宝石信息
>>> yellow_gem_list = items["yellow_gem"] # 获取黄色宝石信息
>>> purple_gem_list = items["purple_gem"] # 获取紫色宝石信息
>>> blue_gem_list = items["blue_gem"] # 获取蓝色宝石信息
>>>
>>> # 遍历所有的宝石,获取与对方玩家(企鹅)距离最近的宝石
>>> closest_gem = None
>>> min_dist = float("inf")
>>> for gem in pink_gem_list + red_gem_list + yellow_gem_list + purple_gem_list + blue_gem_list:
>>> dist = len(api.check.path(start=(enemy.row, enemy.col), end=(gem.row, gem.col)))
>>> if dist < min_dist:
>>> closest_gem = gem
>>> min_dist = dist
>>>
>>> return "S" # "S" 表示静止不动
可以使用 for 循环 和 path()
的方法来获取与对方玩家(企鹅)距离最近的宝箱信息。
>>> # 示例代码三:获取与对方玩家(企鹅)距离最近的宝箱(box)信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家信息
>>> enemy = context.players[1]
>>>
>>> # 获取关卡中当前回合所有物品的信息
>>> items = context.items
>>> box_list = items["box"] # 获取宝箱信息
>>>
>>> # 遍历所有宝箱(box),获取与对方玩家(企鹅)距离最近的宝箱(box)
>>> closest_box = None
>>> min_dist = float("inf")
>>> for box in box_list:
>>> dist = len(api.check.path(start=(enemy.row, enemy.col), end=(box.row, box.col)))
>>> if dist < min_dist:
>>> closest_box = box
>>> min_dist = dist
>>>
>>> return "S" # "S" 表示静止不动
有关 Item
的更详细的用法可以在文档中查看。
(七)获取与对方玩家距离最远的物品(宝石/宝箱)信息
可以使用 for 循环 和 path()
的方法来获取与对方玩家(企鹅)距离最远的宝石信息。
>>> # 示例代码二:获取与对方玩家(企鹅)距离最远的宝石信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家信息
>>> enemy = context.players[1]
>>>
>>> # 获取关卡中当前回合所有物品的信息
>>> items = context.items
>>> pink_gem_list = items["pink_gem"] # 获取粉色宝石信息
>>> red_gem_list = items["red_gem"] # 获取红色宝石信息
>>> yellow_gem_list = items["yellow_gem"] # 获取黄色宝石信息
>>> purple_gem_list = items["purple_gem"] # 获取紫色宝石信息
>>> blue_gem_list = items["blue_gem"] # 获取蓝色宝石信息
>>>
>>> # 遍历所有的宝石,获取与对方玩家(企鹅)距离最远的宝石
>>> farthest_gem = None
>>> max_dist = -float("inf")
>>> for gem in pink_gem_list + red_gem_list + yellow_gem_list + purple_gem_list + blue_gem_list:
>>> dist = len(api.check.path(start=(enemy.row, enemy.col), end=(gem.row, gem.col)))
>>> if dist > max_dist:
>>> farthest_gem = gem
>>> max_dist = dist
>>>
>>> return "S" # "S" 表示静止不动
可以使用 for 循环 和 path()
的方法来获取与对方玩家(企鹅)距离最远的宝箱信息。
>>> # 示例代码四:获取与对方玩家(企鹅)距离最远的宝箱(box)信息
>>>
>>> import api
>>>
>>> def update(context):
>>> # 获取对方玩家信息
>>> enemy = context.players[1]
>>>
>>> # 获取关卡中当前回合所有物品的信息
>>> items = context.items
>>> box_list = items["box"] # 获取宝箱信息
>>>
>>> # 遍历所有宝箱(box),获取与对方玩家(企鹅)距离最远的宝箱(box)
>>> farthest_box = None
>>> max_dist = -float("inf")
>>> for box in box_list:
>>> dist = len(api.check.path(start=(enemy.row, enemy.col), end=(box.row, box.col)))
>>> if dist > max_dist:
>>> farthest_box = box
>>> max_dist = dist
>>>
>>> return "S" # "S" 表示静止不动
有关 Item
的更详细的用法可以在文档中查看。
(八)计算己方(自己)与指定物品(宝石/宝箱)的距离
计算己方(自己)玩家与指定宝石的距离
>>> # 示例代码一:计算己方(自己)玩家与指定宝石的距离
>>>
>>> import api
>>> import math
>>>
>>> def update(context):
>>> # 己方玩家(自己)
>>> me = context.me
>>>
>>> items = context.items
>>> # 假设指定宝石为第一个粉色宝石
>>> target_gem = items["pink_gem"][0]
>>>
>>> # 计算己方玩家(自己)到指定宝石的距离
>>> me_dist = len(api.check.path(start=(me.row, me.col), end=(target_gem.row, target_gem.col)))
>>>
>>> return "S" # "S" 表示静止不动
计算己方(自己)玩家与指定宝箱的距离
>>> # 示例代码二:计算己方(自己)玩家到指定宝箱的距离
>>>
>>> import api
>>> import math
>>>
>>> def update(context):
>>> # 己方玩家(自己)
>>> me = context.me
>>>
>>> items = context.items
>>> # 假定目标宝箱是第一个宝箱
>>> target_box = items["box"][0]
>>>
>>> # 计算己方玩家(自己)到指定宝箱的距离
>>> me_dist = len(api.check.path(start=(me.row, me.col), end=(target_box.row, target_box.col)))
>>>
>>> return "S" # "S" 表示静止不动
(九)计算对方玩家与指定物品(宝石/宝箱)的距离
计算对方玩家与指定宝石的距离
>>> # 示例代码一:计算对方玩家到指定宝石的距离
>>>
>>> import api
>>> import math
>>>
>>> def update(context):
>>> # 对方玩家
>>> enemy = context.players[1]
>>>
>>> items = context.items
>>> # 假设指定宝石为第一个粉色宝石
>>> target_gem = items["pink_gem"][0]
>>>
>>> # 计算对方玩家到指定宝石的距离
>>> enemy_dist = len(api.check.path(start=(enemy.row, enemy.col), end=(target_gem.row, target_gem.col)))
>>>
>>> return "S" # "S" 表示静止不动
计算对方玩家与指定宝箱的距离
>>> # 示例代码二:计算对方玩家与指定宝箱的距离
>>>
>>> import api
>>> import math
>>>
>>> def update(context):
>>> # 对方玩家
>>> enemy = context.players[1]
>>>
>>> items = context.items
>>> # 假定目标宝箱是第一个宝箱
>>> target_box = items["box"][0]
>>>
>>> # 计算对方玩家到指定宝箱的距离
>>> enemy_dist = len(api.check.path(start=(enemy.row, enemy.col), end=(target_box.row, target_box.col)))
>>>
>>> return "S" # "S" 表示静止不动
Functions
获取环境上下文信息。上下文信息的用法,请见 |
|
|
自定义 items 类名。默认情况下,items 类名为 "pink_gem", "red_gem", "yellow_gem", "purple_gem", "blue_gem", "box"。 |
Classes
|
环境上下文信息 |
|
Player 类,包含用户 id,行列坐标,当前朝向,体力。context.me 或者 context.players 中存储的信息都是 Player 类的实例, 我们可以通过此类接口查看 player 的各项信息。 |
|
Item 类,可访问具体物品的行列坐标。使用 context.items 可获得场上所有物品的实例,并查看其实例信息。 |
|
Exit 类,可访问出口的行列坐标。使用 context.exit 是 Exit 的一个实例,可以查看我方出口的横纵坐标。 |
Variables
上下文信息实例,请见 |