Solution Review: Task IV
Let’s look at the solution to the challenge in the previous lesson.
We'll cover the following...
Task IV: Make the user’s move
The task was to validate the player’s input, represented with row and col values, and update the board accordingly.
Let’s review the solution for this task in the code playground below:
import java.util.Scanner;
class Main {
public static void move(char c, char[][] game_board) {
//Indexes that correspond to a position on our board
int row = 0;
int col = 0;
while(true) {
Scanner in = new Scanner(System.in);
System.out.print("Enter a row number (0, 1, or 2): ");
row = in.nextInt();
System.out.print("Enter a column number (0, 1, or 2): ");
col = in.nextInt();
//Check if the row and col are 0, 1, or 2
if(row < 0 || col < 0 || row > 2 || col > 2) {
System.out.println("This position is off the bounds of the board! Try again.");
}
//Check if the position on the board the user entered is empty (has a -) or not
else if(game_board[row][col] != '-') {
System.out.println("Someone has already made a move at this position! Try again.");
}
//Otherwise, the position is valid so break out of the while loop
else {
System.out.println("\nInput is valid!");
game_board[row][col] = c;
System.out.println("\nGame board updated.");
return;
}
}
}
public static void main(String[] args) {
//Let's create a 3x3 character array that represents our tic tac toe board
char[][] game_board = new char[3][3];
//variables to keep track of players
char c = '-';
boolean p1Turn = true;
//Initialize our board with '-'
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
game_board[i][j] = '-';
}
}
displayBoard(game_board);
c = checkTurn(c, p1Turn);
move(c,game_board);
}
//Method to display the Tic-Tac-Toe board
public static void displayBoard(char[][] game_board) {
System.out.println("\nTic Tac Toe Board");
//Outer loop will follow the row-major order
for(int i = 0; i < 3; i++) {
//Inner loop will follow the column-major order
for(int j = 0; j < 3; j++) {
System.out.print(game_board[i][j]+" ");
}
//This will make a new line after every row so that each row is printed on a separate line
System.out.println();
}
}
//Method to check whose turn it is
public static char checkTurn(char c, boolean p1Turn){
if(p1Turn) {
System.out.println("Player1's Turn (x):");
c = 'x';
}
else {
System.out.println("Player2's Turn (o):");
c = 'o';
}
return c;
}
}Taking, validating and implementing the user's input
-
Line 20: ...
Ask