首页 » 父与子的编程之旅:与小卡特一起学Python » 父与子的编程之旅:与小卡特一起学Python全文在线阅读

《父与子的编程之旅:与小卡特一起学Python》26.1 Python Battle

关灯直达底部

在本章中我们要为一个名为 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 个回合之后还没有机器人成功攻击对方,或者双方打成了平局,则拥有和自己颜色一致的方块较多者获胜。