Как часть обучения Java в Android Studio, я практиковался в написании кода для игры CONNECT 3. Программа работает отлично, если нет выигрыша с последним счетчиком . Вместо того, чтобы объявить победителя, он показывает свою ничью. Из этого несоответствия есть только одно исключение. Только когда выигрышная комбинация равна {2,4,6}, игра правильно объявляет победителя. Для любой другой комбинации (когда счетчика больше не осталось), она объявляет игру как ничью.
{2,4,6} - это последняя из позиций, объявленных в массиве winnerPositions.
int[][]winningPositions = {{0,1,2},{3,4,5},{6,7,8},{0,3,6},{1,4,7},{2,5,8},{0,4,8},{2,4,6}};
Если я изменяю последовательность выигрышных комбинаций, комбинация, установленная в конце, работает.
Код для определения выигрышных позиций и, следовательно, победителя или розыгрыша выглядит следующим образом:
for (int[] winningPosition : winningPositions) {
if (gameState[winningPosition[0]] == gameState[winningPosition[1]] && gameState[winningPosition[0]] == gameState[winningPosition[2]] && gameState[winningPosition[0]] != 2) {
//someone has won
gameActive = false;
String winner = "";
if (activePlayer == 1) {
winner = player1;
} else {
winner = player2;
}
Button playAgainButton = (Button) findViewById(R.id.playAgainButton);
TextView winnerTextView = (TextView) findViewById(R.id.winnerTextView);
winnerTextView.setText(winner + " has won!!!");
playAgainButton.setVisibility(View.VISIBLE);
winnerTextView.setVisibility(View.VISIBLE);
} else {
boolean gameIsOver = true;
for (int counterState : gameState) {
if (counterState == 2) {
gameIsOver = false;
}
}
if (gameIsOver) {
TextView winnerTextView = (TextView) findViewById(R.id.winnerTextView);
winnerTextView.setText("IT'S A DRAW");
Button playAgainButton = (Button) findViewById(R.id.playAgainButton);
playAgainButton.setVisibility(View.VISIBLE);
winnerTextView.setVisibility(View.VISIBLE);
}
}
}
Я считаю, что с утверждением If Else есть некоторые проблемы. Как я могу настроить код, чтобы он работал при всех возможностях?