저는 Java를 처음 접했고 TicTacToe의 확장 버전을 만들고 있습니다. (기본적으로 게임 필드의 크기에 따라 일반적인 3x3 버전과 다릅니다 4x4, 5x5 등이 될 수 있습니다. 플레이어는 최종 승리를 위해 연속적으로 몇 번 이기어야합니다. 사용자는 게임을 사용자 정의 할 수 있습니다.) 몇 가지 확인 방법이 있습니다.확대 된 Tic-Tac-Toe, 승자를 확인하는 데 문제가 있습니다. (Java)
// 1. 행의 경우 :
boolean checkHorizontal(String[][] field) {
boolean valid = true;
for (int i = 0; i < field.length; i++) {
for (int j = 1; j < field[i].length; j++) {
if (!field[i][0].equals(field[i][j]) && !field[i][0].equals("[ ]")) {
valid = false;
}
}
}
return valid;
}
// 2 열의 경우 :
boolean checkVertical(String[][] field) {
boolean valid = true;
for (int i = 0; i < field.length; i++) {
for (int j = 1; j < field[i].length; j++) {
if (!field[0][i].equals(field[j][i]) && !field[0][i].equals("[ ]")) {
valid = false;
}
}
}
return valid;
}
// 3 그리고 '\'와 '/'대각선 두 가지 방법 :
boolean checkDiagonal(String[][] field) {
boolean valid = true;
for (int i = 0; i < field.length; i++) {
if (!field[0][0].equals(field[i][i]) && !field[0][0].equals("[ ]")) {
valid = false;
}
}
return valid;
}
boolean checkAnotherDiagonal(String[][] field) {
boolean valid = true;
for (int i = 0, j = field.length - 1; i < field.length; i++, j--) {
if (!field[0][field.length - 1].equals(field[i][j]) && !field[i][0].equals("[ ]")) {
valid = false;
}
}
return valid;
}
는 여기에 문제가 있습니다. 같은 빈 필드 또는 필드의 경우 :
는{"[ ]", " X ", "[ ]"},
{"[ ]", " X ", "[ ]"},
{"[ ]", " X ", "[ ]"}
checkHorizontal(String[][] field)
의 결과는 true
입니다. 그것은 일치가 있다는 것을 의미하지만 그렇지 않습니다.
boolean validate(String[][] field) {
boolean valid = false;
if (checkHorizontal(field)
|| checkVertical(field)
|| checkDiagonal(field)
|| checkAnotherDiagonal(field)) {
valid = true;
}
return valid;
}
그러나 문제의, 프로그램이 제대로 작동하지 않기 때문에 :
{"[ ]", "[ ]", "[ ]"},
{" X ", " X ", " X "},
{"[ ]", "[ ]", "[ ]"}
내가 하나 이러한 방법을 결합 : 같은 같은 checkVertical(String[][] field)
및 현장입니다.
이 문제를 해결하는 방법을 모르겠습니다. 2D 배열의 행, 열 및 대각선을 검사하는 다른 방법이 있습니까? 어쩌면 하나의 보편적 인 방법으로 그것을하는 방법이 있습니다.