У меня до сих пор работает игра TicTacToe, но моя проверка на метод победителя hasPlayerWon не работает. Каждый раз, когда один игрок делает ход, он уже выдает мне победителя.
Я пытался задействовать numRows иnumColumns вместо написания «i ++» и т. д., но это также не сработало.
private boolean hasPlayerWon() {
boolean winner = false;
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < numColumns; j++) {
{
if (this.board[i][j] == PLAYER_A && this.board[i++][j++] == PLAYER_A) {
System.out.println("Player A has won");
}
if (this.board[i][j] == PLAYER_A && this.board[i++][j] == PLAYER_A) {
System.out.println("Player A has won");
}
if (this.board[i][j] == PLAYER_A && this.board[i][j++] == PLAYER_A) {
System.out.println("Player A has won");
}
if (this.board[i][j] == PLAYER_B && this.board[i++][j++] == PLAYER_B) {
System.out.println("Player B has won");
}
if (this.board[i][j] == PLAYER_B && this.board[i++][j] == PLAYER_B) {
System.out.println("Player B has won");
}
if (this.board[i][j] == PLAYER_B && this.board[i][j++] == PLAYER_B) {
System.out.println("Player B has won");
}
}
}
}
return winner;
}
Конечно, я ожидаю, что он выдаст меня победителем после того, как он правильно заполнит либо диагональ по горизонтали, либо по вертикали своим знаком. Но это выводит на печать результат только после одного ввода. 1 означает «X» игрока A, а 2 - «O» игрока B. Поэтому я хочу проверить, заполнены ли по горизонтали, вертикали или диагонали 1 или 2.
На выходе я получаю:
Move: 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
Turn for Player1
Select a rowposition between 0 and 4
1
Select a columnposition between 0 and 4
1
Move: 1
0 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0
Player A has won
Turn for Player2
Select a rowposition between 0 and 4