我们以一个二位数组表示五子棋,通过x、y坐标,表示一个棋子的位置。
1、基本原理:
五子棋判断输赢,其实就是一个二维坐标上,判断上下、左右、两个45度直线,是否有五个相同的直连棋子。
2、判断时机:
一般情况下,我们可以通过遍历棋盘的每个点,从这个点出发,判断是否有五连子。但是实际上,我们并不需要这样做,因为我们在落子时,肯定当前其他地方没有五连子。我们要做的,就是从当前落子的位置判断,4个方向上是否有五连子。
3、算法实现:
private boolean checkByStep(Point p, Listarray, int xdiff, int ydiff) {
Point tmp = new Point(0, 0);
int i;
int cnt = 0;
//向反方向找到颜色相同的点
for (i = 1; i < 5; i++){
tmp.x = p.x - xdiff * i;
tmp.y = p.y - ydiff * i;
if (!array.contains(tmp))
break;
cnt++;
}
Log.e(TAG, "checkByStep: reverse cnt = " + cnt);
// Log.e(TAG, "checkByStep: reverse i = " + i + " begin (" +