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; } }