What is Tic-Tac-Toe Game?
Tic-Tac-Toe is a classic paper-and-pencil game played between two players, typically called “X” and “O,” who take turns marking spaces in a 3×3 grid. The objective is to be the first to form a horizontal, vertical, or diagonal line of three of your marks.
Players take turns placing their symbol (“X” or “O”) in an empty cell of the grid, aiming to strategically create a row, column, or diagonal of their symbols while blocking their opponent from doing the same.
The game ends when one player successfully forms a line of three of their symbols or when all cells are filled without either player achieving a winning line, resulting in a draw. It’s a simple yet engaging game that often requires strategic thinking and anticipation of your opponent’s moves.
What is approach of Tic-Tac-Toe game?
- Board Representation:
- Use a 3×3 grid represented by a 2D array or another suitable data structure.
- Each cell in the grid can be empty (‘ ‘),
- contain ‘X’ for player 1, or
- ‘O’ for player 2.
- Displaying the Board:
- Create a method to print the current state of the board to the console after every move.
- Display the grid layout, updating it as players make their moves.
- Player Turns:
- Design the game to allow two players to take turns, often represented by ‘X’ and ‘O’.
- Accept player input for row and column positions to place their respective symbols on the board.
- Validating Moves:
- Check if the chosen position is within the board boundaries and not already occupied before placing the symbol.
- If the move is invalid, prompt the player to enter a new position.
- Checking for a Win:
- After every move, check if the player who just made a move has won.
- Check rows, columns, and diagonals for three consecutive symbols belonging to the same player.
- Checking for a Draw:
- If there is no win and the board is full, declare a draw.
- Game Loop:
- Enclose the game logic within a loop that continues until a player wins or the game ends in a draw.
- End of Game:
- Display a congratulatory message to the winning player or announce a draw at the end of the game.
- Allow players to restart the game if desired.
Implement tic-tac-toe game in Java
package org.example.games;
import java.util.Scanner;
public class TicTacToe {
public static void main(String[] args) {
char[][] board = {
{' ', ' ', ' '},
{' ', ' ', ' '},
{' ', ' ', ' '}
};
char currentPlayer = 'X';
boolean gameWon = false;
Scanner scanner = new Scanner(System.in);
System.out.println("Welcome to Tic-Tac-Toe!");
while (!gameWon) {
printBoard(board);
System.out.println("Player " + currentPlayer + ", enter your move (row[1-3] column[1-3]): ");
int row = scanner.nextInt() - 1;
int col = scanner.nextInt() - 1;
if (row >= 0 && row < 3 && col >= 0 && col < 3 && board[row][col] == ' ') {
board[row][col] = currentPlayer;
if (checkWin(board, currentPlayer)) {
gameWon = true;
printBoard(board);
System.out.println("Player " + currentPlayer + " wins!");
} else if (isBoardFull(board)) {
gameWon = true;
printBoard(board);
System.out.println("It's a draw!");
}
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
} else {
System.out.println("Invalid move. Try again.");
}
}
scanner.close();
}
public static void printBoard(char[][] board) {
for (int i = 0; i < 3; i++) {
System.out.println(" " + board[i][0] + " | " + board[i][1] + " | " + board[i][2]);
if (i < 2) {
System.out.println("-----------");
}
}
}
public static boolean checkWin(char[][] board, char player) {
for (int i = 0; i < 3; i++) {
if ((board[i][0] == player && board[i][1] == player && board[i][2] == player) ||
(board[0][i] == player && board[1][i] == player && board[2][i] == player)) {
return true;
}
}
if ((board[0][0] == player && board[1][1] == player && board[2][2] == player) ||
(board[0][2] == player && board[1][1] == player && board[2][0] == player)) {
return true;
}
return false;
}
public static boolean isBoardFull(char[][] board) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == ' ') {
return false;
}
}
}
return true;
}
} Output: Tic-tac-toe game in java
Welcome to Tic-Tac-Toe! | | ----------- | | ----------- | | Player X, enter your move (row[1-3] column[1-3]): 1 3 | | X ----------- | | ----------- | | Player O, enter your move (row[1-3] column[1-3]): 3 1 | | X ----------- | | ----------- O | | Player X, enter your move (row[1-3] column[1-3]): 2 2 | | X ----------- | X | ----------- O | | Player O, enter your move (row[1-3] column[1-3]): 3 2 | | X ----------- | X | ----------- O | O | Player X, enter your move (row[1-3] column[1-3]): 3 3 | | X ----------- | X | ----------- O | O | X Player O, enter your move (row[1-3] column[1-3]): 1 1 O | | X ----------- | X | ----------- O | O | X Player X, enter your move (row[1-3] column[1-3]): 2 3 O | | X ----------- | X | X ----------- O | O | X Player X wins!