JAVA五子棋代码
公共类五子棋游戏{
public static final char BLANK = ' * ';
public static final char BLACK = ' @ ';
public static final char WHITE = ' O ';
公共静态最终int MAX = 16;
私有静态final int COUNT = 5;
//棋盘
private char[][]板;
公共五子棋(){
}
//开始游戏
public void start() {
board = new char[MAX][MAX];
//用“*”填充所有二维数组
for(char[] ary: board){
Arrays.fill(ary,BLANK);
}
}
public char[][]get棋盘(){
返回板;
}
public void addBlack(int x,int y)抛出ChessExistException {
//@
//char blank = ' * ';
//System.out.println( x +","+ y + ":" + board[y][x] +","+BLANK);
If(board[y][x] == BLANK){// x,y位置必须为空才能添加棋子。
board[y][x] =黑色;
返回;
}
抛出新棋子Exception("已经有棋子了!");
}
public void addWhite(int x,int y)
抛出ChessExistException {
If(board[y][x] == BLANK){// x,y位置必须为空才能添加棋子。
board[y][x] =白色;
返回;
}
抛出新棋子Exception("已经有棋子了!");
}
//棋子:' @'/'O '
public boolean winOnY(char chess,int x,int y){
//先找到Y方向上第一块不为空的。
int top = y;
while(true){
if(y==0 || board[y-1][x]!=国际象棋){
//如果y已经是棋盘的边缘,或者前一个不是棋。
//我就不继续找了。
打破;
}
y-;
top = y;
}
//倒计数所有国际象棋的数量。如果算的话,你赢了。
int count = 0;
y = top
while(true){
if(y==MAX || board[y][x]!=国际象棋){
//如果找到头或者下一个子不是棋,就不继续统计。
打破;
}
count++;
y++;
}
返回计数= =计数;
}
//棋子:' @'/'O '
public boolean winOnX(char chess,int x,int y){
//先找到X方向第一个非空的棋子。
int top = x;
while(true){
if(x==0 || board[y][x-1]!=国际象棋){
//如果X已经是棋盘的边缘,或者前一个不是棋。
//我就不继续找了。
打破;
}
x-;
top = x;
}
//倒计数所有国际象棋的数量。如果算的话,你赢了。
int count = 0;
x =顶部;
while(true){
if(x==MAX || board[y][x]!=国际象棋){
//如果找到头或者下一个子不是棋,就不继续统计。
打破;
}
count++;
x++;
}
返回计数= =计数;
}
//棋子:' @'/'O '
public boolean winOnXY(char chess,int x,int y){
//先找到MAX到第一个非空的棋子。
int top = y;
int left = x;
while(true){
if(x = = 0 | | y = = 0 | | board[y-1][x-1]!=国际象棋){
//如果X已经是棋盘的边缘,或者前一个不是棋。
//我就不继续找了。
打破;
}
x-;
y-;
top = y;
左= x;
}
//倒计数所有国际象棋的数量。如果算的话,你赢了。
int count = 0;
x =左;
y =顶部;
while(true){
if(x==MAX || y==MAX || board[y][x]!=国际象棋){
//如果找到头或者下一个子不是棋,就不继续统计。
打破;
}
count++;
x++;
y++;
}
返回计数= =计数;
}
//棋子:' @'/'O '
public boolean winOnYX(char chess,int x,int y){
//先找到X方向第一个非空的棋子。
int top = y;
int left = x;
while(true){
if(x = = MAX-1 | | y = = 0 | | board[y-1][x+1]!=国际象棋){
//如果X已经是棋盘的边缘,或者前一个不是棋。
//我就不继续找了。
打破;
}
x++;
y-;
top = y;
左= x;
}
//倒计数所有国际象棋的数量。如果算的话,你赢了。
int count = 0;
x =左;
y =顶部;
while(true){
if(x==0 || y==MAX || board[y][x]!=国际象棋){
//如果找到头或者下一个子不是棋,就不继续统计。
打破;
}
count++;
x-;
y++;
}
返回计数= =计数;
}
public boolean whiteIsWin(int x,int y) {
//任何方向赢了就赢了。
返回winOnY(白色,x,y) ||
winOnX(白色,x,y) ||
winOnXY(白色,x,y) ||
winOnYX(白色,x,y);
}
public boolean blackIsWin(int x,int y) {
return winOnY(BLACK,x,y) ||
winOnX(黑色,x,y) ||
winOnXY(黑色,x,y) ||
winOnYX(黑色,x,y);
}
}
自己看看这个行不行。应该符合你的要求。