import java.util.Random;
import java.util.Scanner;
public class TicTacToe {
private static char[][] board = new char[3][3];
private static char currentPlayer = 'X';
public static void main(String[] args) {
initializeBoard();
printBoard();
playGame();
}
private static void initializeBoard() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
board[i][j] = ' ';
}
}
}
private static void printBoard() {
System.out.println(" 1 2 3");
for (int i = 0; i < 3; i++) {
System.out.print(i + 1 + " ");
for (int j = 0; j < 3; j++) {
System.out.print(board[i][j]);
if (j < 2) {
System.out.print("|");
}
}
System.out.println();
if (i < 2) {
System.out.println(" -+-+-");
}
}
}
private static void playGame() {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
int row, col;
while (true) {
if (currentPlayer == 'X') {
do {
System.out.println("Player " + currentPlayer + ", enter row and column (e.g., 1 2): ");
row = scanner.nextInt() - 1; // Adjust for 1-based indexing
col = scanner.nextInt() - 1;
} while (!isValidMove(row, col));
} else {
System.out.println("Computer's turn (Player " + currentPlayer + ")...");
do {
row = random.nextInt(3); // Random computer move
col = random.nextInt(3);
} while (!isValidMove(row, col));
}
board[row][col] = currentPlayer;
printBoard();
if (checkWin()) {
System.out.println("Player " + currentPlayer + " wins!");
break;
} else if (isBoardFull()) {
System.out.println("It's a draw!");
break;
}
// Switch to the other player
currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
}
scanner.close();
}
private static boolean isValidMove(int row, int col) {
return row >= 0 && row < 3 && col >= 0 && col < 3 && board[row][col] == ' ';
}
private static boolean checkWin() {
// Check rows, columns, and diagonals for a win
return checkRows() || checkColumns() || checkDiagonals();
}
private static boolean checkRows() {
for (int i = 0; i < 3; i++) {
if (board[i][0] == currentPlayer && board[i][1] == currentPlayer && board[i][2] == currentPlayer) {
return true;
}
}
return false;
}
private static boolean checkColumns() {
for (int i = 0; i < 3; i++) {
if (board[0][i] == currentPlayer && board[1][i] == currentPlayer && board[2][i] == currentPlayer) {
return true;
}
}
return false;
}
private static boolean checkDiagonals() {
return (board[0][0] == currentPlayer && board[1][1] == currentPlayer && board[2][2] == currentPlayer) ||
(board[0][2] == currentPlayer && board[1][1] == currentPlayer && board[2][0] == currentPlayer);
}
private static boolean isBoardFull() {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (board[i][j] == ' ') {
return false;
}
}
}
return true;
}
}