在本章中我们要为一个名为 Python Battle 的游戏开发 AI。Python Battle 是一个规则很简单的游戏。在每一回合中,你可以向前移动、向左右转或者攻击对方。当一个角色攻击另一个角色时,被攻击的一方会减少一点“血量”。血量先降为 0 者输掉游戏。角色只可以攻击正前方。
但 Python Battle 有一个特殊之处:它是由机器人玩的游戏。你必须要编码一个控制机器人的策略,或者叫 AI,然后运行游戏,看看它和另一个 AI 对抗的效果如何。当然,AI 部分的代码和 Python Battle 游戏本身的代码都使用 Python 来编写。
注意,如果你之前运行了本书的安装程序,那么你的计算机中应该已经有 Python Battle 的代码了。我放了三个 AI 程序,你可以一一尝试:CircleAI(在游戏区域中转圈)、RandomAI(随机移动和转向)和 NullAI(什么也不做)。我们来一一运行一下,看看谁会赢。
运行 Python Battle
按以下步骤运行。
1. 将你想运行的 AI 脚本放到与 PythonBattle.py 相同的目录下。
2. 运行 PythonBattle.py。
3. 你会看见一个提示框:
Enter red AI:
输入你想使用的 AI 脚本的名字,结尾不用带 .py 后缀。例如,如果你想测试 CircleAI.py,就输入 circleai
。
4. 针对蓝色的 AI 进行同样的操作。
5. 观察游戏,看看谁会赢。
6. 最后关掉 Pygame 窗口。
游戏规则
现在你应该看过了好几场 Python Battle 了,我们来仔细看一下游戏是怎么运行 的。每一回合,机器人都可以做以下 6 件事之一:
向前移动一格
向后移动一格
左转
右转
攻击正前方的格子
什么都不做
此外,机器人可以随时获取双方的血量。游戏的目标是成功攻击敌人 10 次。
你在观察 CircleAI 和 RandomAI 对抗时,有没有留意红色和蓝色的方块?当机器人经过一个方块时,这个方块会变成和机器人一样的颜色(红色或者蓝色)。如果 1000 个回合之后还没有机器人成功攻击对方,或者双方打成了平局,则拥有和自己颜色一致的方块较多者获胜。