基于python的五子棋游戏的设计和实现,Python五子棋人机对战算法

  基于python的五子棋游戏的设计和实现,Python五子棋人机对战算法

  本文主要介绍了五子棋算法在python中的实现,文中的示例代码非常详细,具有一定的参考价值。感兴趣的朋友可以参考一下。

  Python五子棋原算法,供大家参考,具体内容如下

  我们都看过五子棋,但在我看来,五子棋单机游戏靠逻辑取胜很重要。常用的算法是五子棋算法,但是很多五子棋算法并不全面。要么最后一个落在四个字中间出错,要么下载前四个字出错,在线五子棋很头疼,所以我创建了一个判断五子棋的算法,完全覆盖了棋盘上的任何错误。

  if(J4NA[I][J]==A[I][J 1]A[I][J]==A[I][J 2]A[I][J 3]A[I][J]==A[

  win=A[I][j];

  以上是C语言五子五子棋算法的一部分,经常遇到游戏错误,不全面。

  于是我们创造了一个原创算法对其进行改进,进行全面整改。

  #获胜方法

  def IsWinner(p,index,fun):

  ChessValue=0 #=4会赢棋。

  如果index - fun 0或者pos[index-fun][2]!=p[2]: #当前点击的网格是否是第一行,在假设的第一个网格中。

  打印(-第一个网格)

  对于(1,5): # (1-4)范围内的I

  如果index (fun * i)=191而pos[index(fun * I)][2]==p[2]:

  chessValue=chessValue 1

  如果chessValue=4:

  如果p[2]==1:

  打印(“最后一次点击是第一个网格-黑色获胜”)

  Showchess () #显示所有已放置的棋子。

  结果显示(1)

  如果p[2]==2:

  打印(“最后一次点击是第一个网格-白赢”)

  Showchess () #显示所有已放置的棋子。

  结果显示(2)

  elif指数基金191或pos[指数基金][2]!=p[2]: #当前点击的网格是不是最后一行,在最后一个网格里。

  打印(-最后一个网格)

  对于(1,5): # (1-4)范围内的I

  if pos[index-(fun * I)][2]==p[2]:

  chessValue=chessValue 1

  如果chessValue=4:

  如果p[2]==1:

  打印(“最后一次点击是最后一个网格-黑色获胜”)

  Showchess () #显示所有已放置的棋子。

  结果显示(1)

  如果p[2]==2:

  打印(“最后一次点击是最后一个网格-白赢”)

  Showchess () #显示所有已放置的棋子。

  结果显示(2)

  Else: #不是第一个也不是最后一个,就是当前点击的是五子连珠中间的棋子。

  打印(-中间有网格)

  第一个循环检测在网格的上部是否有相似的块。

  对于范围(1,4): #(1-3)中的I,三个循环

  如果index - (fun * i)=0且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 #连珠数归零

              第二个循环检测中下部分位置的格子是否有同类棋子

              for i in range(1,4): #(1-3) 三个循环

                  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 #连珠数归零

              if chessValue >= 4:

                  if p[2] == 1:

                      print(最后一下为中间一个格子--黑赢)

                      ShowAllChess()#显示所有已经放置了的棋子

                      ResultShow(1)

                  if p[2] == 2:

                      print(最后一下为中间一个格子--白赢)

                      ShowAllChess()#显示所有已经放置了的棋子

                      ResultShow(2)

      #赢棋入口

      def WinChess(p):

           此算法预测是不是在合适的条件下,如果是就响应,如果不是就不响应

              1.p为当前最后按下的棋子坐标,不管是黑子还是白子

              2.pos为棋盘上所有的坐标 一个坐标有[x坐标,y坐标,status状态]

          #首先查找棋盘中对应值的下标

          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) #当前的坐标 ,当前的下标,当前的查找算法

  如上就是我自己根据python原创出来的五子连珠算法,通过四中子算法分析所有下棋的方式。【反斜杠查找法 、竖向查找法、斜杠查找法、横向查找法】
反斜杠查找法:"" 顾名思义就是根据坐上的棋子往右下查找判断是否大于五子。
斜杠查找法:/ 和反斜杠类似。
竖向查找法:"" 顾名思义就是从上往下查找,最简单。
横向查找法:— 和竖向一样只是变成了横向。

  通过这四种算法就可以全面覆盖棋盘下子方式,而且不会有遗漏产生。

  

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: