TicTacToe
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