五子棋的棋盘Android版实现,具体上下文可以参考
上一篇的五子棋AI实现中的代码
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
//棋盘
public class Chessboard extends View implements IChessboard{
//游戏状态常量:
//已准备好,可开局
private static final int READY = 1;
//已开局
private static final int RUNNING = 2;
//已结束
private static final int PLAYER_TWO_LOST = 3;
private static final int PLAYER_ONE_LOST = 4;
//当前状态,默认为可开局状态
private int currentMode = READY;
//画笔对象
private final Paint paint = new Paint();
//代表绿色
private static final int GREEN = 0;
private static final int NEW_GREEN = 1;
//红色
private static final int RED = 2;
//黄色
private static final int NEW_RED = 3;
//点大小
private static int pointSize = 20;
//用于提示输赢的文本控件
private TextView textView = null;
//不同颜色的Bigmap数组
private Bitmap[] pointArray = new Bitmap[4];
//屏幕右下角的坐标值,即最大坐标值
private static int maxX;
private static int maxY;
//第一点偏离左上角从像数,为了棋盘居中
private static int yOffset;
private static int xOffset;
//两个玩家
//第一个玩家默认为人类玩家
private IPlayer player1 = new HumanPlayer();
//第二个则根据选择人机战还是对战模式来初始化
private IPlayer player2;
//预先初始两个第二玩家
//电脑玩家
private static IPlayer computer = AiFactory.getInstance(2);
//人类玩家
private static final IPlayer human = new HumanPlayer();
// 所有未下的空白点
private final List<Point> allFreePoints = new ArrayList<Point>();
public Chessboard(Context context, AttributeSet attrs) {
super(context, attrs);
setFocusable(true);
//把三个颜色的点准备好,并放入数组
Resources r = this.getContext().getResources();
fillPointArray