我有这种方法来检查井字游戏的获胜者
public boolean hasWinner(Cell shape, int row, int col) {
int count = 0;
for(int i=0;i<WIDTH;i++){
if(this.board[row][i]==shape){
count++;
}
else{
count=0;
}
if(count>=5){
return true;
}
}
count=0;
for(int i=0;i<HEIGHT;i++){
if(this.board[i][col]==shape){
count++;
}
else{
count=0;
}
if(count>=5){
return true;
}
}
我已经写了检查代码,如果在最后添加的符号的行和列上连续有5个相同的符号,现在我需要检查两个对角线,最后添加的符号位于该对角线上。有什么花招,还是我必须写board[row+1][col+1]==shape && board[row+2][col+2]==shape...
之类的东西?
答案 0 :(得分:0)
我现在无法真正为您编写解决方案,但我认为您正在询问此周期:
Cell shape = null;
boolean win = true;
for(int j=0, k = 0; j < WIDTH) {
if(shape == null) {
shape = this.board[j][k];
} else {
win = win && this.board[j][k] == shape;
}
}
贯穿主对角线,因此您无需手动编写东西。那你需要对第二对角线做同样的事情
但是,老实说,如果我是你,并且我有3个或更少的行/列,那么我将按照您的建议出于可读性目的进行操作