1. 棋盘一共9个位置, A玩家、B玩家轮流执棋,若是有三子在一条横线、竖线、斜线,则该玩家取胜。
2. 程序使用MVC设计模式,ChessModel使用观察者模式,若有model变化,会更新view。ChessView打印提示信息,获取用户输入;ChessController使用获取的数据改变model。
3. 程序代码如下:
ChessModel:
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by niweimin on 2014/12/26.
*/
public class ChessModel {
private int [] [] chessBoard = new int[3][3];
private ArrayList<ModelListener> lisArr = new ArrayList<ModelListener>();
public ChessModel(){
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
chessBoard[i][j] = 0;
}
public void register(ModelListener listener){
lisArr.add(listener);
}
public void setChess(int row, int column, int player) {
this.chessBoard[row][column] = player;
chessBoardChanged();
if(checkGameOver()) gameOver();
}
public void clear(){
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
chessBoard[i][j] = 0;
chessBoardChanged();
}
private boolean checkGameOver() {
//check row and column
for(int i = 0; i < 3; i++){
boolean row = true;