最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)五子棋算法

 更新時間:2022年05月02日 10:45:23   作者:碼來的小朋友  
這篇文章主要為大家詳細介紹了python實現(xiàn)五子棋算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

python五子棋原創(chuàng)算法,供大家參考,具體內容如下

我們都見過五子棋,但是在我看來五子棋單機游戲中,邏輯贏法很重要,經(jīng)常用到的算法是五子連珠算法,但是很多五子連珠算法很不全面,不是最后一個子落在四個字的中間出錯誤就是,下載四個字最前面出錯誤,網(wǎng)上的五子連珠很讓人頭疼,于是我就自創(chuàng)了一個五子棋連珠判斷的算法,完全覆蓋任何棋盤上出錯的情況。

if (j+4<n && A[i][j]==A[i][j+1] && A[i][j]==A[i][j+2] && A[i][j]==A[i][j+3] && A[i][j]==A[i][j+4])//向右搜索?
?? ??? ??? ??? ?win = A[i][j];

上面是c語言五子連珠算法的一部分,這種算法會經(jīng)常遇到游戲出錯的情況,很不全面。

于是我們就就原創(chuàng)一個算法來改進,全面整改。

#贏法
?? ?def IsWinner(p,index,fun):
?? ??? ?chessValue = 0 #為>=4就會贏棋

?? ??? ?if index - fun < 0 or pos[index-fun][2] != p[2]: #當前點擊的格子是第一行 或 不在第一行,在假設的首個格子中
?? ??? ??? ?print('----------第一個格子')
?? ??? ??? ?for i in range(1,5): # (1-4)
?? ??? ??? ??? ?if index + (fun * i) <= 191 and pos[index + (fun*i)][2] == p[2]:
?? ??? ??? ??? ??? ?chessValue = chessValue + 1
?? ??? ??? ?if chessValue >= 4:
?? ??? ??? ??? ?if p[2] == 1:
?? ??? ??? ??? ??? ?print('最后一下為第一個格子--黑贏')
?? ??? ??? ??? ??? ?ShowAllChess()#顯示所有已經(jīng)放置了的棋子
?? ??? ??? ??? ??? ?ResultShow(1)
?? ??? ??? ??? ?if p[2] == 2:
?? ??? ??? ??? ??? ?print('最后一下為第一個格子--白贏')
?? ??? ??? ??? ??? ?ShowAllChess()#顯示所有已經(jīng)放置了的棋子
?? ??? ??? ??? ??? ?ResultShow(2)

?? ??? ?elif index + fun > 191 or pos[index + fun][2] != p[2]: #當前點擊的格子是最后一行 或 不在最后一行,在最后個格子中
?? ??? ??? ?print('----------最后一個格子')
?? ??? ??? ?for i in range(1,5): # (1-4)
?? ??? ??? ??? ?if pos[index - (fun * i)][2] == p[2]:
?? ??? ??? ??? ??? ?chessValue = chessValue + 1
?? ??? ??? ?if chessValue >= 4:
?? ??? ??? ??? ?if p[2] == 1:
?? ??? ??? ??? ??? ?print('最后一下為最后一個格子--黑贏')
?? ??? ??? ??? ??? ?ShowAllChess()#顯示所有已經(jīng)放置了的棋子
?? ??? ??? ??? ??? ?ResultShow(1)
?? ??? ??? ??? ?if p[2] == 2:
?? ??? ??? ??? ??? ?print('最后一下為最后一個格子--白贏')
?? ??? ??? ??? ??? ?ShowAllChess()#顯示所有已經(jīng)放置了的棋子
?? ??? ??? ??? ??? ?ResultShow(2)

?? ??? ?else: #不是第一個和不是最后一個,那就是當前點擊的是五子連珠的中間的棋子了
?? ??? ??? ?print('----------中間一個格子')
?? ??? ??? ?'''
?? ??? ??? ?第一個循環(huán)檢測中上部分位置的格子是否有同類棋子
?? ??? ??? ?'''
?? ??? ??? ?for i in range(1,4): #(1-3) 三個循環(huán)?
?? ??? ??? ??? ?if index - (fun * i) >= 0 and pos[index - (fun * i)][2] == p[2]:?
?? ??? ??? ??? ??? ?chessValue = chessValue + 1
?? ??? ??? ??? ?elif index - (fun * i) >= 0 and (pos[index - (fun * i)][2] != p[2] \
?? ??? ??? ??? ?and pos[index - (fun * i)][2] != 0): #這里的邏輯就是上方為對手棋子
?? ??? ??? ??? ??? ?chessValue = 0 #連珠數(shù)歸零
?? ??? ??? ?'''
?? ??? ??? ?第二個循環(huán)檢測中下部分位置的格子是否有同類棋子
?? ??? ??? ?'''
?? ??? ??? ?for i in range(1,4): #(1-3) 三個循環(huán)
?? ??? ??? ??? ?if index + (fun * i) <= 191 and pos[index + (fun * i)][2] == p[2]:?
?? ??? ??? ??? ??? ?chessValue = chessValue + 1
?? ??? ??? ??? ?elif index + (fun * i) <= 191 and (pos[index + (fun * i)][2] != p[2] \
?? ??? ??? ??? ?and pos[index + (fun * i)][2] != 0): #這里的邏輯就是上方為對手棋子
?? ??? ??? ??? ??? ?chessValue = 0 #連珠數(shù)歸零

?? ??? ??? ?if chessValue >= 4:
?? ??? ??? ??? ?if p[2] == 1:
?? ??? ??? ??? ??? ?print('最后一下為中間一個格子--黑贏')
?? ??? ??? ??? ??? ?ShowAllChess()#顯示所有已經(jīng)放置了的棋子
?? ??? ??? ??? ??? ?ResultShow(1)
?? ??? ??? ??? ?if p[2] == 2:
?? ??? ??? ??? ??? ?print('最后一下為中間一個格子--白贏')
?? ??? ??? ??? ??? ?ShowAllChess()#顯示所有已經(jīng)放置了的棋子
?? ??? ??? ??? ??? ?ResultShow(2)

?? ?#贏棋入口
?? ?def WinChess(p):
?? ??? ?''' 此算法預測是不是在合適的條件下,如果是就響應,如果不是就不響應
?? ??? ??? ?1.p為當前最后按下的棋子坐標,不管是黑子還是白子
?? ??? ??? ?2.pos為棋盤上所有的坐標 一個坐標有[x坐標,y坐標,status狀態(tài)]'''
?? ??? ?#首先查找棋盤中對應值的下標
?? ??? ?index = 0
?? ??? ?for po in pos:
?? ??? ??? ?if [po[0],po[1]] == [p[0],p[1]]:
?? ??? ??? ??? ?break #找到了下標為index 退出
?? ??? ??? ?index = index + 1

?? ??? ?#【反斜杠查找法 、豎向查找法、斜杠查找法、橫向查找法】
?? ??? ?for fun in [17,16,15,1]:
?? ??? ??? ?IsWinner(p, index, fun) #當前的坐標 ,當前的下標,當前的查找算法

如上就是我自己根據(jù)python原創(chuàng)出來的“五子連珠”算法,通過四中子算法分析所有下棋的方式。【反斜杠查找法 、豎向查找法、斜杠查找法、橫向查找法】
反斜杠查找法:"" 顧名思義就是根據(jù)坐上的棋子往右下查找判斷是否大于五子。
斜杠查找法:“/” 和反斜杠類似。
豎向查找法:"|" 顧名思義就是從上往下查找,最簡單。
橫向查找法:“—” 和豎向一樣只是變成了橫向。

通過這四種算法就可以全面覆蓋棋盤下子方式,而且不會有遺漏產生。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解Python 爬取13個旅游城市,告訴你五一大家最愛去哪玩?

    詳解Python 爬取13個旅游城市,告訴你五一大家最愛去哪玩?

    這篇文章主要介紹了Python 爬取13個旅游城市,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • python 列表推導和生成器表達式的使用

    python 列表推導和生成器表達式的使用

    這篇文章主要介紹了python 列表推導和生成器表達式的使用方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python實戰(zhàn)之自動發(fā)送郵件的實現(xiàn)

    Python實戰(zhàn)之自動發(fā)送郵件的實現(xiàn)

    自動發(fā)送郵件能應用于許多場景,下面本文就來和大家講講怎么用Python構建一個自動發(fā)送郵件的腳本。感興趣的小伙伴可以動手嘗試一下
    2022-05-05
  • Python機器學習利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線

    Python機器學習利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線

    這篇文章主要為大家介紹了Python機器學習利用鳶尾花數(shù)據(jù)繪制ROC和AUC曲線實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Python 查看文件的讀寫權限方法

    Python 查看文件的讀寫權限方法

    下面小編就為大家分享一篇Python 查看文件的讀寫權限方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Python為什么要保留顯式的self

    Python為什么要保留顯式的self

    本文主要介紹了Python為什么要保留顯式的self,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • 轉換科學計數(shù)法的數(shù)值字符串為decimal類型的方法

    轉換科學計數(shù)法的數(shù)值字符串為decimal類型的方法

    今天小編就為大家分享一篇轉換科學計數(shù)法的數(shù)值字符串為decimal類型的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python實現(xiàn)API開發(fā)的詳細教程

    Python實現(xiàn)API開發(fā)的詳細教程

    在現(xiàn)代軟件開發(fā)中,API扮演著至關重要的角色,API接口用于不同軟件組件之間的通信和數(shù)據(jù)交換,實現(xiàn)了系統(tǒng)之間的互操作性,Python作為一種簡單易用且功能強大的編程語言,廣泛應用于API接口的開發(fā),本文將詳細介紹如何使用Python開發(fā)API接口,需要的朋友可以參考下
    2024-12-12
  • python源碼剖析之PyObject詳解

    python源碼剖析之PyObject詳解

    Python實現(xiàn)了完全的面向對象的語言特性,所有的類均繼承自object基類,對應著實現(xiàn)層面的PyObject.為了實現(xiàn)多態(tài)的特性,Python的實現(xiàn)過程維護了一個類型對象系統(tǒng),用來記錄類型信息和維護類的函數(shù)成員,本文為大家詳細介紹了PyObject,需要的朋友可以參考下
    2021-05-05
  • python使用socket制作聊天室詳細源碼(可以直接運行)

    python使用socket制作聊天室詳細源碼(可以直接運行)

    Python是一個非常靈活的編程語言,我們現(xiàn)在到處可見用Python編寫的應用程序,下面這篇文章主要給大家介紹了關于python使用socket制作聊天室的相關資料,文中的代碼可以直接運行,需要的朋友可以參考下
    2023-12-12

最新評論

贵德县| 阿鲁科尔沁旗| 阜阳市| 秭归县| 新营市| 长治县| 莫力| 阿鲁科尔沁旗| 昌乐县| 阿城市| 左云县| 双江| 韩城市| 元江| 高邮市| 扶沟县| 上蔡县| 西华县| 贵州省| 武宣县| 垦利县| 绥芬河市| 拉萨市| 大宁县| 明光市| 南陵县| 松江区| 伊吾县| 韶关市| 丹巴县| 嵩明县| 界首市| 台东县| 五大连池市| 德化县| 富裕县| 崇文区| 普兰店市| 亳州市| 江西省| 扬州市|