讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 26.1 Python Battle >

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