python五子棋人机对战,python实现五子棋对弈

  python五子棋人机对战,python实现五子棋对弈

  这篇文章主要为大家详细介绍了大蟒实现单机五子棋对战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了大蟒实现单机五子棋对战的具体代码,供大家参考,具体内容如下

  引入简介及安装模块

  # 1、引入简介及安装和pygame.locals

  导入简介及安装

  从pygame.locals导入*

  导入时间

  导入系统

  initcheslist=[]

  initRole=1 #代表白子下2:代表当前是黑子下

  结果标志=0

  userFlag=True

  类StornPoint():

  def __init__(self,x,y,value=0):

  :参数x:代表x轴坐标

  :参数y:代表y轴坐标

  :参数值:当前坐标点的棋子:0:没有棋子1:白子2:黑子

  self.x=x

  self.y=y

  自我价值=价值

  及格

  def initChessSquare(x,y):

  初始化棋盘的坐标

  :参数x:

  :参数y:

  :返回:

  # 使用二维列表保存了棋盘是的坐标系,和每个落子点的数值

  对于范围(15): #中的我每一行的交叉点坐标

  rowList=[]

  对于范围(15): #中的j每一列的交叉点坐标

  pointX=x j*40

  尖=y i*40

  #值=0

  sp=StornPoint(pointX,pointY,0)

  rowList.append

  及格

  initcheslist。追加(行列表)

  及格

  # 处理事件

  极好的事件处理程序():

  全局用户标志

  监听各种事件

  :返回:

  用于pygame.event.get():中的事件

  全局初始化角色

  # 监听点积退出按钮事件

  if event.type==QUIT:

  pygame.quit()

  sys.exit()

  及格

  # 监听鼠标点积事件

  如果事件。type==mousebuttondown :

  x,y=pygame.mouse.get_pos() #

  打印((x,y))

  i=j=0

  对于initChessList:中的临时雇员

  对于温度:中的点

  如果x=点x - 15且x=point.x 15 \

  y=point.y - 15,y=point.y 15:

  # 当前区域没有棋子,并且是白子下

  如果点值==0且initRole==1且用户标志:

  point.value=1

  判断结果(I,j,1)

  initRole=2 #切换棋子颜色

  及格

  elif point.value==0,initRole==2,userFlag:

  point.value=2

  批判的

  t(i, j, 2)

                              initRole = 1    # 切换棋子颜色

                              pass

                          break

                          pass

                      j += 1

                      pass

                  i += 1

                  j = 0

              pass

          pass

      pass

  # 判断输赢函数

  def judgeResult(i, j, value):

      global resultFlag

      flag = False  # 用于判断是否已经判决出输赢

      for  x in  range(j - 4, j + 5):  # 水平方向有没有出现5连

          if x >= 0 and x + 4 < 15 :

              if initChessList[i][x].value == value and \

                  initChessList[i][x + 1].value == value and \

                  initChessList[i][x + 2].value == value and \

                  initChessList[i][x + 3].value == value and \

                  initChessList[i][x + 4].value == value :

                  flag = True

                  break

                  pass

      for x in range(i - 4, i + 5):  # 垂直方向有没有出现5连

          if x >= 0 and x + 4 < 15:

              if initChessList[x][j].value == value and \

                      initChessList[x + 1][j].value == value and \

                      initChessList[x + 2][j].value == value and \

                      initChessList[x + 3][j].value == value and \

                      initChessList[x + 4][j].value == value:

                  flag = True

                  break

                  pass

      # 判断东北方向的对角线是否出现了5连

      for x, y in zip(range(j + 4, j - 5, -1), range(i - 4, i + 5)):

          if x >= 0 and x+4  < 15 and y + 4 >= 0 and y < 15:

              if initChessList[y][x].value == value and \

                      initChessList[y - 1][x + 1].value == value and \

                      initChessList[y - 2][x + 2].value == value and \

                      initChessList[y - 3][x + 3].value == value and \

                      initChessList[y - 4][x + 4].value == value:

                  flag = True

                  break

                  pass

              pass

          pass

      # 判断西北方向的对角是否出现了五连

      for x, y in zip(range(j - 4, j + 5), range(i - 4, i + 5)):

          if x >= 0 and x + 4 < 15 and y >= 0 and y + 4 < 15:

              if initChessList[y][x].value == value and \

                      initChessList[y + 1][x + 1].value == value and \

                      initChessList[y + 2][x + 2].value == value and \

                      initChessList[y + 3][x + 3].value == value and \

                      initChessList[y + 4][x + 4].value == value:

                  flag = True

                  break

                  pass

              pass

          pass

      if flag:

          resultFlag = value

          pass

      pass

  # 加载素材

  def main():

      global resultFlag, initChessList

      initChessSquare(27, 27)  # 初始化棋牌

      pygame.init()            # 初始化游戏环境

      # 创建游戏窗口

      screen = pygame.display.set_mode((620,620), 0, 0) # 第一个参数是元组:窗口的长和宽

      # 添加游戏标题

      pygame.display.set_caption("五子棋小游戏")

      # 图片的加载

      background = pygame.image.load(images/bg.png)

      blackStorn = pygame.image.load(images/storn_black.png)

      whiteStorn = pygame.image.load(images/storn_white.png)

      winStornW = pygame.image.load(images/result.jpg)

      winStornB = pygame.image.load(images/result.jpg)

      rect = blackStorn.get_rect()

      while True:

          screen.blit(background, (0, 0))

          # 更新棋盘棋子

          for temp in initChessList:

              for point in temp:

                  if point.value == 1:

                      screen.blit(whiteStorn, (point.x - 18, point.y - 18))

                      pass

                  elif point.value == 2:

                      screen.blit(blackStorn, (point.x - 18, point.y - 18))

                      pass

                  pass

              pass

          # 如果已经判决出输赢

          if resultFlag > 0:

              initChessList = []      # 清空棋盘

              initChessSquare(27, 27) # 重新初始化棋盘

              if resultFlag == 1:

                  screen.blit(winStornW, (50,100))

              else:

                  screen.blit(winStornB, (50,100))

              pass

          pygame.display.update()

          if resultFlag >0:

              time.sleep(3)

              resultFlag = 0

              pass

          eventHandler()

          pass

      pass

  if __name__ == "__main__":

      main()

      pass

  

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

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

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