TicTacToe

 avatar
unknown
java
5 months ago
4.3 kB
8
Indexable
import java.util.Scanner;

class Board {
    private char[][] grid;
    private final int size = 3;

    public Board() {
        grid = new char[size][size];
        initializeBoard();
    }

    private void initializeBoard() {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                grid[i][j] = '-';
            }
        }
    }

    public void printBoard() {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                System.out.print(grid[i][j] + " ");
            }
            System.out.println();
        }
    }

    public boolean makeMove(int row, int col, char playerSymbol) {
        if (row < 0 || col < 0 || row >= size || col >= size || grid[row][col] != '-') {
            return false;
        }
        grid[row][col] = playerSymbol;
        return true;
    }

    public boolean checkWin(char playerSymbol) {
        // Check rows
        for (int i = 0; i < size; i++) {
            if (grid[i][0] == playerSymbol && grid[i][1] == playerSymbol && grid[i][2] == playerSymbol) {
                return true;
            }
        }

        // Check columns
        for (int j = 0; j < size; j++) {
            if (grid[0][j] == playerSymbol && grid[1][j] == playerSymbol && grid[2][j] == playerSymbol) {
                return true;
            }
        }

        // Check diagonals
        if (grid[0][0] == playerSymbol && grid[1][1] == playerSymbol && grid[2][2] == playerSymbol) {
            return true;
        }
        if (grid[0][2] == playerSymbol && grid[1][1] == playerSymbol && grid[2][0] == playerSymbol) {
            return true;
        }

        return false;
    }

    public boolean isFull() {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                if (grid[i][j] == '-') {
                    return false;
                }
            }
        }
        return true;
    }
}

class Player {
    private String name;
    private char symbol;

    public Player(String name, char symbol) {
        this.name = name;
        this.symbol = symbol;
    }

    public String getName() {
        return name;
    }

    public char getSymbol() {
        return symbol;
    }
}

public class TicTacToe {
    private Board board;
    private Player player1;
    private Player player2;

    public TicTacToe(String name1, char symbol1, String name2, char symbol2) {
        board = new Board();
        player1 = new Player(name1, symbol1);
        player2 = new Player(name2, symbol2);
    }

    public void startGame() {
        Player currentPlayer = player1;
        Scanner scanner = new Scanner(System.in);

        while (true) {
            board.printBoard();
            System.out.println(currentPlayer.getName() + "'s turn. Enter row and column (0-2): ");
            int row = scanner.nextInt();
            int col = scanner.nextInt();

            if (board.makeMove(row, col, currentPlayer.getSymbol())) {
                if (board.checkWin(currentPlayer.getSymbol())) {
                    board.printBoard();
                    System.out.println(currentPlayer.getName() + " wins!");
                    break;
                } else if (board.isFull()) {
                    board.printBoard();
                    System.out.println("It's a draw!");
                    break;
                }

                currentPlayer = (currentPlayer == player1) ? player2 : player1;
            } else {
                System.out.println("Invalid move. Try again.");
            }
        }

        scanner.close();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter Player 1 name and symbol: ");
        String name1 = scanner.next();
        char symbol1 = scanner.next().charAt(0);

        System.out.println("Enter Player 2 name and symbol: ");
        String name2 = scanner.next();
        char symbol2 = scanner.next().charAt(0);

        TicTacToe game = new TicTacToe(name1, symbol1, name2, symbol2);
        game.startGame();
        scanner.close();
    }
}
Editor is loading...
Leave a Comment