基于Android的五子棋的开发,供大家参考,具体内容如下
需求分析
1 棋盘和棋子绘制
2 按照五子棋的规则制定游戏胜负规则
3 鼠标响应 在对战中 需要通过鼠标点击下棋 进行游戏的基本操作
4 游戏模式 双人对战 两人交替落子 双方孰先孰后随机决定
5 棋子的形式和作用 棋子分为黑白两种棋子 双方各持一种棋子 通过黑先白后的方式来进行对局
6 通过棋子完成五连珠结束游戏
流程图
android stdio中的基本架构
CheckWinner.java
package com.example.wuziqi;
import android.graphics.Point;
import java.util.List;
/**
* Created by Linux on 2016/4/8.
*/
public class CheckWinner {
private Point point1, point2;
private int checkModel = Constants.HORIZONTAL;
public boolean checkFiveInLineWinner(List points) {
for (Point point : points) {
int x = point.x;
int y = point.y;
if (checkHorizontal(x, y, points)) {
return true;
} else if (checkVertical(x, y, points)) {
return true;
} else if (checkLeftDiagonal(x, y, points)) {
return true;
} else if (checkRighttDiagonal(x, y, points)) {
return true;
}
}
return false;
}
private boolean check(int x, int y, List points, int checkOri) {
int count = 1;
for (int i = 1; i < Constants.MAX_COUNT_IN_LINE; i++) {
switch (checkOri) {
case Constants.HORIZONTAL:
point1 = new Point(x - i, y);
break;
case Constants.VERTICAL:
point1 = new Point(x, y - i);
break;
case Constants.LEFT_DIAGONAL:
point1 = new Point(x - i, y + i);
break;
case Constants.RIGHT_DIAGONAL:
point1 = new Point(x + i, y + i);
break;
}
if (points.contains(point1)) {
count++;
} else {
break;
}
}
for (int i = 1; i < Constants.MAX_COUNT_IN_LINE; i++) {
switch (checkOri) {
case Constants.HORIZONTAL:
point2 = new Point(x + i, y);
break;
case Constants.VERTICAL:
point2 = new Point(x, y + i);
break;
case Constants.LEFT_DIAGONAL:
point2 = new Point(x + i, y - i);
break;
case Constants.RIGHT_DIAGONAL:
point2 = new Point(x - i, y - i);
break;
}
if (points.contains(point2)) {
count++;
} else {
break;
}
}
if (count == Constants.MAX_COUNT_IN_LINE) {
return true;
}
return false;
}
// 横向判断
private boolean checkHorizontal(int x, int y, List points) {
checkModel = Constants.HORIZONTAL;
return check(x, y, points, checkModel);
}
// 竖向判断
private boolean checkVertical(int x, int y, List points) {
checkModel = Constants.VERTICAL;
return check(x, y, points, checkModel);
}
// 左斜判断
private boolean checkLeftDiagonal(int x, int y, List points) {
c