python井字棋游戏人机对战_用Python做一个井字棋小游戏
井字棋是一個經典的小游戲,在九宮格上玩家輪流畫OXO,當每列或每行或是兩個對角成一線時便是獲勝。
今天就用Python編寫一個井字棋小游戲,與電腦對戰。
程序執行畫面如下圖所示:
程序提供了兩種人工智能選擇,一個是強人工智能另一個是弱人工智能,選擇強人工智能,如果計算機先下,玩家可以說是沒有贏的可能,因此特地弄出一個弱人工智能選項,一來增加游戲的趣味,一來可以比較這兩者在程序設計上的差異。選擇弱人工智能,玩家通常可以簡單的獲勝。
游戲一開始還須得選擇O或X,然后會隨機選擇玩家先下或是計算機先下。
整個程序最主要的核心在于如何決定計算機如何落子,也就是人工智能實現的部分,這部分的程序落在底下程序,function:getComputerMove(self,board) 是實現強人工智能的方法。他有幾個判斷步驟,首先:
第一步驟:程序代碼165~170 ,先判斷該次落子"計算機"是否有獲勝的可能,用循環尋訪所有
可落子地方,若有可獲勝的可能則在該地方落子
第二步驟:程序代碼172~178 ,先判斷該次落子"玩家"是否有獲勝的可能,用循環尋訪所有
可落子地方,若"玩家"有可獲勝的可能則在該地方落子,目的是為了阻止玩家獲勝
若上述兩個動作都不成立,則接著判斷以下步驟落子
第三步驟:程序代碼180~183,[1,3,7,9]代表著在九宮格的四個角的編號,此段程序在此四個角落隨機選擇一地方下子
第四步驟:程序代碼185~187,[5]代表著在九宮格的中間位置的編號,此段程序判斷中間位置是否可落子
第五步驟:程序代碼189~190,[2,4,6,8]代表著在九宮格的四個邊的編號,此段程序在此四個邊落隨機選擇一地方下子
透過判斷以上五個步驟的落子選擇ˊ,可以讓計算機無論是先手或是后手都可以處于不敗之地。
底下程序,function:getComputerMove_2(self,board) 則是實現弱人工智能的方法,其實也就是改變上述強人工智能的方法,只保留第一步驟規則,其余落子則是隨機選擇。
另一個重要的程序片段如下266~276,用來判斷是否勝出,也就是判斷每列或每行或是對角線是否有相同的O或X即可獲勝。
這是一個小游戲的范例,或許也稱不上人工智能,主要是拿來練習Python程序的應用。
作者:Ashing Tsai
更多精彩文章請關注微信公眾號?易心Microbit編程
總結
以上是生活随笔為你收集整理的python井字棋游戏人机对战_用Python做一个井字棋小游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 郑州财税金融职业学院的计算机考试,郑州财
- 下一篇: dax 筛选 包含某个字_筛选状态(AL