Android 黑白棋游戏实现

627 查看

黑白棋

黑白棋,又叫苹果棋,最早流行于西方国家。游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。黑白棋非常易于上手,但精通则需要考虑许多因素,比如角边这样的特殊位置、稳定度、行动力等。本游戏取名为黑白棋大师,提供了8种难度等级的选择,从菜鸟、新手、入门、棋手到棋士、大师、宗师、棋圣,助你不断提升棋力。
本文将着重介绍黑白棋实现过程中用到的算法。

黑白棋游戏规则

游戏规则见黑白棋大师中的截图。

2

黑白棋大师游戏截图

游戏启动界面。

1

游戏过程中的一个截图。

3

开新局时的选项,选择先后手以及AI的水平。

4

几个关键的类

Rule

Rule类实现游戏规则相关的方法,包括

  1. 判断某一步是否合法
  2. 获取所有的合法走步
  3. 走一步并翻转敌方棋子
  4. 统计两方棋子个数

Algorithm

Algorithm类实现极小极大算法,包括

  1. 局面评估函数,对当前局面打分,越高对max越有利,越低对min越有利
  2. min()方法
  3. max()方法
  4. 获得一个好的走步

ReversiView

ReversiView继承自SurfaceView,实现棋盘的界面,在该类定义棋盘界面的绘制、更新等操作。

RenderThread

RenderThread继承自Thread,是控制ReversiView以一定fps更新、重绘界面的线程。

具体实现

棋盘表示

byte[][]二维数组存储棋盘,-1表示有黑子,1表示有白子,0表示棋格为空

游戏规则类Rule的实现

提供几个关于游戏规则的静态方法。

判断某一个位置是否位于棋盘内

判断某一方在某个位置落子是否合法

即判断该子是否能与己方棋子在某个方向上夹住敌方棋子。

某一方走一步子

将各个方向上被翻转的棋子的颜色改变,并返回这些棋子在棋盘的位置,方便显示翻转动画。