求java五子棋源代码可以运行的那种

2024-07-16 10:26:21作者:饭克斯

以前在远标学java时做过:importjava.util.Arrays;

publicclassGoBangGame{

publicstaticfinalcharBLANK='*';

publicstaticfinalcharBLACK='@';

publicstaticfinalcharWHITE='O';

publicstaticfinalintMAX=16;

privatestaticfinalintCOUNT=5;

//棋盘

privatechar[][]board;

publicGoBangGame(){

}

//开始游戏

publicvoidstart(){

board=newchar[MAX][MAX];

//把二维数组都填充‘*’

for(char[]ary:board){

Arrays.fill(ary,BLANK);

}

}

publicchar[][]getChessBoard(){

returnboard;

}

publicvoidaddBlack(intx,inty)throwsChessExistException{

//@

//charblank='*';

//System.out.println(x+,+y+:+board[y][x]+,+BLANK);

if(board[y][x]==BLANK){//x,y位置上必须是空的才可以添棋子

board[y][x]=BLACK;

return;

}

thrownewChessExistException(已经有棋子了!);

}

publicvoidaddWhite(intx,inty)

throwsChessExistException{

if(board[y][x]==BLANK){//x,y位置上必须是空的才可以添棋子

board[y][x]=WHITE;

return;

}

thrownewChessExistException(已经有棋子了!);

}

//chess棋子:'@'/'O'

publicbooleanwinOnY(charchess,intx,inty){

//先找到y方向第一个不是blank的棋子

inttop=y;

while(true){

if(y==0||board[y-1][x]!=chess){

//如果y已经是棋盘的边缘,或者的前一个不是chess

//就不再继续查找了

break;

}

y--;

top=y;

}

//向回统计所有chess的个数,如果是COUNT个就赢了

intcount=0;

y=top;

while(true){

if(y==MAX||board[y][x]!=chess){

//如果找到头或者下一个子不是chess就不再继续统计了

break;

}

count++;

y++;

}

returncount==COUNT;

}

//chess棋子:'@'/'O'

publicbooleanwinOnX(charchess,intx,inty){

//先找到x方向第一个不是blank的棋子

inttop=x;

while(true){

if(x==0||board[y][x-1]!=chess){

//如果x已经是棋盘的边缘,或者的前一个不是chess

//就不再继续查找了

break;

}

x--;

top=x;

}

//向回统计所有chess的个数,如果是COUNT个就赢了

intcount=0;

x=top;

while(true){

if(x==MAX||board[y][x]!=chess){

//如果找到头或者下一个子不是chess就不再继续统计了

break;

}

count++;

x++;

}

returncount==COUNT;

}

//chess棋子:'@'/'O'

publicbooleanwinOnXY(charchess,intx,inty){

//先找MAX向第一个不是blank的棋子

inttop=y;

intleft=x;

while(true){

if(x==0||y==0||board[y-1][x-1]!=chess){

//如果x已经是棋盘的边缘,或者的前一个不是chess

//就不再继续查找了

break;

}

x--;

y--;

top=y;

left=x;

}

//向回统计所有chess的个数,如果是COUNT个就赢了

intcount=0;

x=left;

y=top;

while(true){

if(x==MAX||y==MAX||board[y][x]!=chess){

//如果找到头或者下一个子不是chess就不再继续统计了

break;

}

count++;

x++;

y++;

}

returncount==COUNT;

}

//chess棋子:'@'/'O'

publicbooleanwinOnYX(charchess,intx,inty){

//先找到x方向第一个不是blank的棋子

inttop=y;

intleft=x;

while(true){

if(x==MAX-1||y==0||board[y-1][x+1]!=chess){

//如果x已经是棋盘的边缘,或者的前一个不是chess

//就不再继续查找了

break;

}

x++;

y--;

top=y;

left=x;

}

//向回统计所有chess的个数,如果是COUNT个就赢了

intcount=0;

x=left;

y=top;

while(true){

if(x==0||y==MAX||board[y][x]!=chess){

//如果找到头或者下一个子不是chess就不再继续统计了

break;

}

count++;

x--;

y++;

}

returncount==COUNT;

}

publicbooleanwhiteIsWin(intx,inty){

//在任何一个方向上赢了,都算赢

returnwinOnY(WHITE,x,y)||

winOnX(WHITE,x,y)||

winOnXY(WHITE,x,y)||

winOnYX(WHITE,x,y);

}

publicbooleanblackIsWin(intx,inty){

returnwinOnY(BLACK,x,y)||

winOnX(BLACK,x,y)||

winOnXY(BLACK,x,y)||

winOnYX(BLACK,x,y);

}

}

展开全文

热门推荐

相关攻略