Python教程

当前位置:小码王 > 学习教程 > Python教程

Python教程:黑白棋小游戏
导读:今天交大家做一个黑白棋小游戏,想必下过五子棋和围棋的小朋友都知道,他们有两个颜色黑和白,黑和白轮流下子,黑色下子后白色再下,直到决出最后的胜利,今天南京小码王Python培训机构的老师就和小朋友一起来玩这个游戏。

  今天交大家做一个黑白棋小游戏,想必下过五子棋和围棋的小朋友都知道,他们有两个颜色黑和白,黑和白轮流下子,黑色下子后白色再下,直到决出最后的胜利,今天南京小码王Python培训机构的老师就和小朋友一起来玩这个游戏。

s11.jpg


  判断一次落子是否有效:


  defisValidMove(self,board,tile,xstart,ystart):


  为了成为一个有效的移动,在该方向上的移动第一步必须满足以下条件,(1)位置必须在游戏棋盘上,(2)必须至少能够翻转对手一个棋子,否则若没有任何可供翻转的棋子,该落子点就不是有效的落子位置,于是下面程序就是用来判断落子位置是否为有效位置,如果是有效位置还会记录需翻转的棋子位置到tilesToFlip[]串行清单。


  棋盘数据为一二维的串行结构board[x][y],x与y分别代表0~7.


  第192行为一循环,目的是会从落子点沿着,上、下、左、右、右斜上、右斜下、左斜上、左斜下、八个方向寻找及判断是否有对手的棋子,8次循环的执行,每一次便是寻找同一方向上是否有对手的棋子,如果有则记录每一个经过的x,y坐标,直到碰到同颜色的棋子为止,最后会存入tilesToFlip[]串行清单,若最后tilesToFlip[]串行没有纪录任何x,y坐标资料,则返回False,表示该次落子非有效落子点。

1.jpeg


  计算棋盘得分:


  def getScoreOfBoard(self,board):


  以下程序则是计算每下一子,玩家与计算机A.I的得分,也就是棋子数,该函数简单,其作用可以用来判断最后谁输谁赢,以及另一个重要的作用则是作为计算机A.I下子的判断依据。

2.jpeg


  计算机A.I的下子:


  def getComputerMove(self,board,computerTile):


  计算机AI落子的判断如下,其实并不复杂,首先在271行从self.getValidMoves(board,computerTile)函数得到可落子的的位置列表,并将所有可下的位置随机洗牌,接下来两点策略判断决定了计算机的落子(1)如果可落子清单里,有可下在最角落的四个点,那么就下在那个位置。


  不然的话,(2)计算该落子是否可获得较高的得分,这时便会使用到上述getScoreOfBoard()函数来仿真得分,如果该落子点可得分最高,便落在该点。

3.jpeg


  南京小码王Python编程培训机构的老师,和大家一起玩的这个黑白棋小游戏,不知大家可都明白呢?大家做出的效果是什么样子的呢?当然如果您对Python培训课感兴趣,可以和我们在线老师联系一下!