Я создаю масштабируемую программу TicTacToe, и у меня возникает проблема при попытке проверить диагонали для строки.Проверьте масштабируемые диагонали матрицы для идентичной строки
Я был в состоянии проверить строки с помощью этого метода:
public boolean checkRowsForWin(String b){
//Check all the rows for a winner
for(int y = 0; y < size; y++){
for (int x = 0; x < size; x++){
if (globalGrid[y][x].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}else{
inRow = 0;
}
}
inRow = 0;
}
inRow = 0;
return false;
}
Я попытался комбинацию для петель и если заявления, и моя последняя модификация это ниже. Это сработало, если диагональ включала только верхний правый угол, когда мне нужно его проверить, даже если диагональ не находится в углу.
public boolean checkDiagForWin(String b, int c, int d){
for (int x = c, y = d; x < size && y < size; x++, y++){
if (globalGrid[y][x].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}
else{
inRow = 0;
}
inRow = 0;
for (int x2 = size - 1, y2 = 0; x2 >=0 && y2 < size; x2--, y2++){
if (globalGrid[y2][x2].equals(b)){
inRow++;
if (inRow >= neededToWin){
return true;
}
}
else{
inRow = 0;
}
}
inRow = 0;
}
inRow = 0;
return false;
}
Сумма в строке и размер платы может изменяться, так что это не так просто, как проверка только два прилегающих к позиции.
Это работает, однако оно проверяет только, находится ли оно в углу, в то время как диагональ может находиться где угодно на борту (для больших b например, 8). – Tanner
@Tanner Я пропустил это требование, я обновил свой ответ соответственно. –