TicTacToe
unknown
java
a year ago
4.3 kB
11
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