I'm making a tic tac toe game in Java with a customizable dimension feature (user can choose to play 3x3, 4x4, 5x5, etc.) and was working on the logic regarding finding a winner. Currently I'm trying to figure out checking for wins horizontally.
I've had the idea to make a nested for-loop to check the 2d array that hosts the board, but am not sure how to execute this. The problem with this code:
for (int i = 0; i < dimension; i ) {
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != '-') {
// you won!
}
}
...Is that its logic is fixed for a 3x3 game, not for any other dimensions. I only know how to add values into 2d arrays, so how can I check if these values are equal? Thank you in advance.
CodePudding user response:
I'm not sure about the rules for winning tic tac toe in higher dimensions, so let's say you have to fill the whole row/column to win.
Divide the if in two parts: The check for the first chararacter and the comparisons. Then use a second for-loop for the comparisons, like this:
for (int i = 0; i < dimension; i ) { // iterate rows
// check for first character
if (board[i][0] == '-') { // if wrong character...
continue; // ... check next row
}
boolean won = true;
for (int j = 0; j < dimension - 1; j ) { // iterate columns
if (board[i][j] != board[i][j 1]) { // if other character...
won = false; // ...not winnable with this column and...
break; // ...stop iteration of columns
}
}
if (won) {
// you won!
}
}
If you win with less crosses 'X' in all dimensions, you would have to add a third loop to go through the possible start points or you could count the amount of crosses in the column and reset the number if there is an 'O'.