JAVA五子棋代码

导入Java . util . arrays;

公共类五子棋游戏{

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);

}

}

自己看看这个行不行。应该符合你的要求。