Welcome to 迷宫寻宝’s documentation!

_images/background1.png

查看迷宫使用教学: 《迷宫寻宝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 库的信息请通过文档进行查看。

Indices and tables