import java.util.
Scanner;
public class TicTacToeGame {
public static void main(String[] args) {
char[] board = {'0', '1', '2', '3', '4', '5', '6', '7', '8'};
Scanner scanner = new Scanner(System.in);
System.out.println("Welcome to the Tic-Tac-Toe (X/O) game");
while (true) {
displayBoard(board);
System.out.print("Player 1, choose the location for X: ");
int playerOneMove = scanner.nextInt();
if (playerOneMove < 0 || playerOneMove >= board.length ||
board[playerOneMove] == 'X' || board[playerOneMove] == 'O') {
System.out.println("Invalid move. Please try again.");
continue;
}
board[playerOneMove] = 'X';
if (checkWinner(board, 'X')) {
displayBoard(board);
System.out.println("Player 1 (X) wins!");
break;
}
if (isBoardFull(board)) {
displayBoard(board);
System.out.println("It's a draw!");
break;
}
System.out.print("Player 2, choose the location for O: ");
int playerTwoMove = scanner.nextInt();
if (playerTwoMove < 0 || playerTwoMove >= board.length ||
board[playerTwoMove] == 'X' || board[playerTwoMove] == 'O') {
System.out.println("Invalid move. Please try again.");
continue;
}
board[playerTwoMove] = 'O';
if (checkWinner(board, 'O')) {
displayBoard(board);
System.out.println("Player 2 (O) wins!");
break;
}
if (isBoardFull(board)) {
displayBoard(board);
System.out.println("It's a draw!");
break;
}
}
scanner.close();
}
static void displayBoard(char[] board) {
System.out.println();
for (int i = 0; i < board.length; i++) {
System.out.print(board[i] + " ");
if ((i + 1) % 3 == 0) {
System.out.println();
}
}
}
static boolean checkWinner(char[] board, char player) {
return (board[0] == player && board[1] == player && board[2] == player) ||
(board[3] == player && board[4] == player && board[5] == player) ||
(board[6] == player && board[7] == player && board[8] == player) ||
(board[0] == player && board[3] == player && board[6] == player) ||
(board[1] == player && board[4] == player && board[7] == player) ||
(board[2] == player && board[5] == player && board[8] == player) ||
(board[0] == player && board[4] == player && board[8] == player) ||
(board[2] == player && board[4] == player && board[6] == player);
}
static boolean isBoardFull(char[] board) {
for (int i = 0; i < board.length; i++) {
if (board[i] != 'X' && board[i] != 'O') {
return false;
}
}
return true;
}
}