Выполняется 3D-игра TicTacToe, но она не определяет горизонталь.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Выполняется 3D-игра TicTacToe, но она не определяет горизонталь.

Сообщение Anonymous »

Я разрабатываю 3D-игру «Крестики-нолики». Есть 4 слоя, и представьте, что они расположены друг над другом. Каждый ключ связан друг с другом, чтобы выиграть игру. Например, в 1-м слое вы взяли все крестики, кроме поля в левом верхнем углу. На втором уровне вы выиграете, если напишете x в левом верхнем углу. Моя игра примерно такая, и мой код следующий. Однако когда я выигрываю по горизонтали между слоями, он этого не определяет и не пишет, что х выиграл. Пишет, когда выигрываю другие условия. Как вы думаете, в чем может быть причина? (Кроме того, есть ли более простой способ написать методы check__Win()?)
public boolean checkWin() {
return checkHorizontalWin() || checkVerticalWin() || checkDiagonalWin() ||
checkLevelVerticalWin() || checkLevelHorizontalWin() || checkLevelCrossWin();
}

private boolean checkHorizontalWin() {
for (int level = 0; level < 4; level++) {
for (int row = 0; row < 4; row++) {
if (board[level][row][0] == currentPlayer && board[level][row][1] == currentPlayer &&
board[level][row][2] == currentPlayer && board[level][row][3] == currentPlayer) {
return true;
}
}
}
return false;
}

private boolean checkLevelHorizontalWin() {
for (int level = 0; level < 4; level++) { /* there */
for (int row = 0; row < 4; row++) {
if (board[level][row][0] == currentPlayer && board[level][row][1] == currentPlayer &&
board[level][row][2] == currentPlayer && board[level][row][3] == currentPlayer) {
return true;
}
}
}
return false;
}

}
public void play() {
boolean gameWon = false;
int level, row, col;

while (!gameWon) {
printBoard();
System.out.println("Player " + currentPlayer + ", enter level (1-4), row (1-4) and column (1-4):");

level = scanner.nextInt() - 1;
row = scanner.nextInt() - 1;
col = scanner.nextInt() - 1;

if (board[level][row][col] != ' ') {
System.out.println("This cell is already occupied! Choose a different cell.");
} else if (makeMove(level, row, col)) {
gameWon = checkWin();
if (!gameWon) {
switchPlayer();
}
} else {
System.out.println("Invalid move, try again.");
}
}
printBoard();
System.out.println("Player " + currentPlayer + " wins!");
scanner.close();
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... horizontal
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»