用python實現五子棋簡單人機模式的練習過程,供大家參考,具體內容如下
第一次寫博客,我盡力把它寫好。
最近在初學python,今天就用自己的一些粗淺理解,來記錄一下這幾天的python簡單人機五子棋游戲的練習,下面是實現過程的理解(是在cmd中運行的):
主要流程: *重點內容*
- 首先是模塊及類的劃分
- 棋子類和棋盤類的方法
- 對策略類里的功能進行細分,調用棋子類和棋盤類
- 寫出判斷輸贏的方法
- 用main函數進行整個游戲進度的控制
模塊及類的劃分
類的劃分涉及到了面向對象的內容,根據五子棋游戲的設定,人和機器依次在一個棋盤里下棋,一方五子連線為贏,初步分為 棋子類、棋盤類 和 策略類 ,每個類單獨放一個模塊,加上main模塊一共四個模塊。
- 棋子類包含棋子的坐標和棋子顏色(陣營),及相關get、set方法
- 棋盤類包含了棋盤的大小和棋盤的狀態 ,及相關get、set方法
- 棋盤類的功能:接收要放入的棋子,清空棋盤,打印(顯示)棋盤,給出對應位置的狀態
- 策略類:一個策略類對應一個棋盤類,在構造器里導入一個棋盤類
-
策略類的功能:人把棋子放入棋盤、機器把棋子放入棋盤、判斷棋局的輸贏
棋子類和棋盤類
棋子類 比較簡單,在棋子的角度,只要接收位置和顏色(陣營),傳出位置和顏色(陣營)即可,其中位置用元組打包傳遞
棋盤類
需要用到棋子類,在這之前,先要進行棋盤的設定
在這里棋盤是用列表來構建,分為兩層,實現x,y的位置,棋盤大小設為類屬性
清空棋盤類似
打印也差不多,注意在坐標軸旁放上序列號,這里縱坐標為1-15,橫坐標為a-o
效果為如下
接下來是棋子的放入:
這個可分為兩個方法,一個根據傳入的位置放置傳入的顏色;另一個接收一個棋子類的實例對象,獲取該實例的位置和顏色,調用第一個方法并傳入數值,一定要注意在傳參的時候驗證
接下來的根據棋盤位置獲取棋子顏色的方法主要是為了策略類的判定輸贏準備的
策略類
策略類要用到前面兩類,有更多名稱的方法或屬性的要用,所以要更仔細一點搞清楚哪個是哪個
首先傳入一個棋盤實例對象
人下棋:策略類負責把人輸入的東西字符串變成x,y坐標,寫入棋子對象
機器下棋:這里具體策略暫用隨機數代替了(有空在想,略過略過~)
判斷當前棋局的勝負:每一方下棋都要判斷一次,因此可根據當前下的一子的范圍來判斷是否在上下左右和兩斜排有連續五子,如果有則勝利。
斜排主要是x,y的判斷范圍比較難定,其他的差不多。以下是本寶寶絞盡腦汁想到的判斷方法(特別是斜排的),檢查到目前是沒有問題的,或許還有更好的方法:
接下來再用一個判斷勝利方的方法調用上面的策略
main模塊
main模塊用來對整個游戲的玩法格局進行控制。
main函數實現一局的流程,這里用循環來實現簡單的人機輪流下棋。因為添加了用戶選擇先后的功能,所以代碼暫時被我弄得繁瑣了(捂臉)還可以精簡的,這里就先放這個:
主線程作為程序入口操控每個棋局:
五子棋的簡單人機模式就是綜上所述的了,不過這個代碼中輸入的地方沒加檢查,所以坐標輸入一定要是數字加逗號加字母的格式才行,可以加正則表達式進行判斷。放上效果圖:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
