在本章中我們要為一個名為 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 個回合之後還沒有機器人成功攻擊對方,或者雙方打成了平局,則擁有和自己顏色一致的方塊較多者獲勝。