遊戲是人們可以使用的一種娛樂形式。 各種遊戲都可以在線、在移動設備、台式電腦等上獲得。現在不是創建這些具有挑戰性的遊戲之一的時候。
使用 Python,我們將製作一個 CLI 井字遊戲。 讓我們使用 Python 構建一個簡單的井字遊戲。 它將幫助您創建遊戲邏輯並學習如何組織代碼。
井字棋
在我們開始編碼之前,我想我應該快速總結一下游戲並討論我的開發計劃。
首先,我們將建立Xs總是主動並先行動的假設,給用戶行動的機會。
從控制台,將輸入 1 到 9 之間的數字。 在一個網格中,每個數字對應一個不同的數字(左上角是 1,右下角是 9)。
一旦用戶移動,計算機將自動確定並移動。 我將使用一個調用許多不同例程的主要遊戲循環。
這個基於文本的課程的每個標題中可能會指出正在完成哪個功能。
設計電路板
正如我之前指出的,我們將使用網格佈局來描述我們的電路板。 我們將在 Python 中創建一個名為 board 的列表來執行此操作,它將以 10 個空值開頭。
因為用戶只能輸入數字 1 到 9,而不是 0 到 8,所以我們有 10 個空值而不是 9。所以,為了簡化事情,我們將給列表的第一個條目值“empty text”。
通過這種方式,我們可以使用 1-9 而不是 0-8 來索引列表中的條目。
插入字母()
Letter 和 Pos 將是此函數的兩個輸入。 它只會將請求的信件放在請求的位置。
spaceIsFree(位置)
簡單地說,這個方法會通知我們指定區域是否空閒。 因此,那裡已經沒有一封信。 Pos,它的唯一參數,將是 1 到 9 之間的整數。
印刷板(板)
該板作為參數發送到此方法,該方法將其顯示在控制台上。
是贏家()
根據目前的棋盤,這個函數會告訴我們提供的字母是否中獎。 它有兩個參數:le 和 board(字母)。
它必須是“X”或“O”。 只需查看指定的字母是否出現在板上每條潛在的獲勝線上。
主要()
當我們要開始遊戲時,我們會調用這個方法。 它將調用我們程序的許多函數中的每一個,並指導程序應該如何運行。
isBoardFull()
當作為輸入給出板時,如果板已滿,則此方法將簡單地返回 True,否則返回 False。
播放器移動()
在此方法中,我們將請求用戶移動並對其進行驗證。 如果此舉是合法的,這封信將被添加到董事會。 如果沒有,我們將繼續徵求用戶的反饋意見。
CompMove()——人工智能
AI 現在將開始。 計算機的移動將受此功能控制。 它將評估董事會並選擇最佳行動。
以下是我們將用於執行此操作的算法列表。
- 如果當前步驟無法完成,請繼續執行下一個步驟。
- 如果可以,請採取獲勝的舉措。
- 如果玩家有可能獲勝的舉動,則在下一回合移動到該位置。
- 選擇一個角落並轉動它。 如果有多個選項,請隨機選擇。
- 把自己放在中間。
- 考慮其中一條邊。 如果有多個選項,請隨機選擇。
- 如果無法移動,則遊戲以平局結束。
選擇隨機()
給定一個潛在位置列表,此函數將隨機選擇要採取的行動。
遊戲開始
現在我們已經完成了所有的任務,現在可以開始遊戲了。 如果我們只想運行遊戲一次,我們需要做的就是調用 main。
但在我們的情況下,我們希望遊戲繼續運行,直到用戶決定不再玩,所以我們將在主線中添加一個小的 while 循環。
完整的代碼
這是我們遊戲的完整代碼,現在已經完成。
產量
結論
歡呼!
您完全從頭開始製作的遊戲。 這不是我們經常玩的遊戲。 但它有助於編寫邏輯和維護清晰的代碼結構。
編碼愉快!
發表評論