南京市浦口区城乡建设局网站/山东自助seo建站
给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,
0表示没有棋子,-1表示对方玩家棋子。
当一方棋子在横竖斜方向有连城排的获胜(井字棋规则)
返回当前玩家是否胜出
eg:[[1,0,1],[1,-1,-1],[1,-1,0]]
返回true
public boolean checkWon(int[][] board) {//通过int h= board.length;//棋盘的行int l=board[0].length;//棋盘的列for(int i=0;i<h;i++){//判断是否有一列 结束游戏int tmp=board[i][0]; //如果是行结束游戏,那这行的数都应该相同int bj=0;//标记相同棋子个数for(int j=0;j<l;j++){if(board[i][j]!=tmp){break;}else{bj++;if(bj==l){//该行结束游戏return tmp==1?true:false;}}}}for(int j=0;j<l;j++){//判断是否有一行 结束游戏int tmp=board[0][j];int bj=0;for(int i=0;i<h;i++){if(board[i][j]!=tmp){break;}else{bj++;if(bj==h){//该行结束游戏return tmp==1?true:false;}}}}//判断是否是右斜线 结束游戏//从左上角开始判断int i=0,j=0;int bj=0;//标记行数while (i<h-1&&j<l-1){if(board[i][j]!=board[i+1][j+1]){break;}else{i++;j++;bj++;if(bj==h-1){return board[i][j]==1?true:false;}}}//判断是否左斜线,结束游戏//从右上角开始判断bj=0;//标记行数while(h-1>=1&&l-1>=1){if(board[h][l]!=board[h-1][l-1]){break;}else{h--;l--;bj++;if(bj==h-1){return board[h][l]==1?true:false;}}}//上面的都不符合,说明是平局return false;}