java五子棋代码

packageday17.gobang;

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

}

}

免责声明:本站发布的游戏攻略(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!