Welcome to 迷宫寻宝’s documentation!
查看迷宫使用教学: 《迷宫寻宝Python基础语法手册》.
基本介绍
api 库是迷宫游戏中提供给用户获取环境信息和控制企鹅移动的库,你可以使用 api 提供的接口来协助你进行编程。
你必须通过编写 update 函数来控制你的企鹅的移动,并且通过 return 返回值来控制你的企鹅的移动方向。
(一)控制企鹅移动
比赛中规定,玩家只能控制自己的企鹅(通过控制企鹅收集物品或者控制企鹅到达终点)。
提示
控制企鹅移动的动作只有五个,分别为”S”:停在原地(保持不动)、”U”:向上移动一个网格、”D”:向下移动一个网格、”L”:向左移动一个网格、”R”:向右移动一个网格。
- 为了能够控制你的企鹅,你需要编写 update(context) 函数,并且在 update(context) 中通过 return 返回需要控制企鹅移动的动作(五个动作中的任意一个:”S”/”U”/”D”/”L”/”R”)。
游戏引擎会在每个回合中获取 update(context) 函数 return 的值来控制你的企鹅的移动;
update(context) 中的 context 包含了场上的所有信息,如:迷宫地图详情、我方企鹅所在位置/剩余体力/已收集物品等、对方企鹅所在位置等信息,具体详细信息可以从 api 文档详细查看;
>>> # 示例代码:控制己方企鹅一直向右移动
>>> import api
>>> def update(context): # 你编写的函数必须包含 update() 函数,且必须有参数,这里的参数名为context,为了方便,你可以使用 c ,如 update(c)
>>> return "R" # 在 update() 函数需要通过 return 返回你想要企鹅执行的动作,游戏引擎会通过 update() 函数 return 的动作来控制你的企鹅移动
>>> # 示例代码:控制己方企鹅在前五个回合向左移动,剩余回合向右移动
>>> import api
>>> def update(context): # 你编写的函数必须包含 update() 函数,且必须有参数,这里的参数名为context,为了方便,你可以使用 c ,如 update(c)
>>> if context.step < 5: # 控制企鹅在前五个回合向左移动
>>> return "L"
>>> return "R" # 控制企鹅在剩余回合向右移动
(二)获取场上信息
在我们编写 update() 函数时,一定要在update()中传入一个参数,系统默认提供的是 update(context),在你编程过程中,你可以修改这个参数名,可以修改为 c,或者其它任何符合 Python 语法的名字都可以。
>>> # 示例代码:修改 update() 中的 context 为其它任何符合 Python 命名语法的名字
>>> def update(c): # 这里 c 的功能和系统默认代码提供的 context 是一样的,可以通过 c/context 来获取环境信息
>>> if c.step < 5: # 控制企鹅在前五个回合向左移动
>>> return "L"
>>> return "R" # 控制企鹅在剩余回合向右移动
- 在编写程序过程中,我们需要根据场上的待收集的物品信息、我方企鹅情况、对方情况来编写程序,在这里,我们提供了两种获取场上信息的方法:
通过 api.get_context() 来获取场上信息;
通过 update(context) 中的 context 来获取场上信息;
>>> # 示例代码:通过 api.get_context() 来获取场上信息
>>> import api
>>> def update(context): # context 中包含了大量的信息,你可以通过查阅 api 文档来获得更详细的使用方法
>>> c = api.get_context()
>>> if c.step < 5:
>>> return "L"
>>> return "R"
>>> # 示例代码:通过 context 来获取场上信息
>>> import api
>>> def update(context): # context 中包含了大量的信息,你可以通过查阅 api 文档来获得更详细的使用方法
>>> if context.step < 5:
>>> return "L"
>>> return "R"
(三)设计策略
- 一局比赛中中有多个回合,每个回合游戏引擎都会调用 update(context) 获取控制企鹅运动的动作,因此你编写的程序需要能够综合考虑各种情况:
当你的企鹅的剩余体力足够多时,你应该控制你的企鹅去收集场上的宝石(或其它)物品,不断提高你的分数;
当你的企鹅的剩余体力刚好能够控制企鹅到达终点时,控制你的企鹅向终点移动;
>>> # 示例代码:根据企鹅的剩余体力来控制企鹅执行不同的任务
>>> import api
>>> def update(context):
>>> me = context.me # 获取你自己的信息
>>> exit = context.exit # 获取你的出口坐标
>>> me_exit_path = api.check.path(start=(me.row, me.col), end=(exit.orw, exit.col)) # 获取你的企鹅从当前位置到出口的路径信息
>>> if me.energy > len(me_exit_path): # 你的企鹅剩余体力足够多,暂时不考虑前往出口
>>> # 编写收集宝石(或其它)物品的代码逻辑
>>> return "S"
>>> else:
>>> # 编写控制你的企鹅向出口移动的代码逻辑
>>> return "S"
在编程过程中,除了必须编写的 update(context) 函数外,你可以自定义函数,并且可以在 update(context) 中调用你自定义的函数。
>>> # 示例代码:自定义函数,并在 update(context) 中进行调用
>>> import api
>>>
>>> def func(): # 自定义函数
>>> print("Hello world!")
>>>
>>> def update(context):
>>> func() # 在 update() 调用自定义函数
>>> return "S"
更多有关 api 库的信息请通过文档进行查看。