import java.util.Random; import java.util.Scanner; public class TwoDimensionalArraysTicTacToe{ private static Scanner scan = new Scanner (System.in); public static void print(char b[][]){ for (int i = 0; i <3; i++){ for (int j = 0; j <3; j++){ System.out.print (b[i][j] + " "); } System.out.println(); } } public static void start(char b[][]){ for (int i = 0; i <3; i++){ for (int j = 0; j <3; j++){ b[i][j] = '-'; } } } public static int checkGameStatus(char b[][]) { if (b[0][0] == 'X' && b[0][1] == 'X' && b[0][2] == 'X') { return 1; } else if (b[1][0] == 'X' && b[1][1] == 'X' && b[1][2] == 'X') { return 1; } else if (b[2][0] == 'X' && b[2][1] == 'X' && b[2][2] == 'X') { return 1; } else if (b[0][0] == 'X' && b[1][0] == 'X' && b[2][0] == 'X') { return 1; } else if (b[0][1] == 'X' && b[1][1] == 'X' && b[2][1] == 'X') { return 1; } else if (b[0][2] == 'X' && b[1][2] == 'X' && b[2][2] == 'X') { return 1; } else if (b[0][0] == 'X' && b[1][1] == 'X' && b[2][2] == 'X') { return 1; } else if (b[2][0] == 'X' && b[1][1] == 'X' && b[0][2] == 'X') { return 1; } else if (b[0][0] == 'O' && b[0][1] == 'O' && b[0][2] == 'O') { return 1; } else if (b[1][0] == 'O' && b[1][1] == 'O' && b[1][2] == 'O') { return 1; } else if (b[2][0] == 'O' && b[2][1] == 'O' && b[2][2] == 'O') { return 1; } else if (b[0][0] == 'O' && b[1][0] == 'O' && b[2][0] == 'O') { return 1; } else if (b[0][1] == 'O' && b[1][1] == 'O' && b[2][1] == 'O') { return 1; } else if (b[0][2] == 'O' && b[1][2] == 'O' && b[2][2] == 'O') { return 1; } else if (b[0][0] == 'O' && b[1][1] == 'O' && b[2][2] == 'O') { return 1; } else if (b[2][0] == 'O' && b[1][1] == 'O' && b[0][2] == 'O') { return 1; } else{ return 2; } } public static int play(char a[][], String name){ System.out.println (name + " - Enter your row"); int row = scan.nextInt(); System.out.println (name + " - Enter your column"); int col = scan.nextInt(); if ((row < 0 || row > 2) || (col < 0 || col > 2)){ System.out.println(); System.out.println (name + " : You have lost your turn"); System.out.println ("Row/Column values should be 0, 1 or 2"); return -1; } else { if ((a[row][col] == 'X') || (a[row][col] == 'O')) { System.out.println(); System.out.println (name + " : You have lost your turn"); System.out.println (row + " " + col + " has been previously selected"); return -1; } else { if (name.equals("Player#1")){ a[row][col] = 'X'; } else{ a[row][col] = 'O'; } System.out.println(); print(a); int value = checkGameStatus(a); return value; } } } public static void main (String args[]){ System.out.println ("TIC TAC TOE"); int row = 0, col = 0, status = 0; char a[][] = new char [3][3]; System.out.println ("BASIC RULES: "); System.out.println ("#1 Player#1's selections will appear as 'X'"); System.out.println ("#2 Player#2's selections will appear as 'O'"); System.out.println ("#3 Whoever goes first is Player#1"); System.out.println ("#4 You will lose your turn if you:"); System.out.println (" A) Enter an illegal row# and col#"); System.out.println (" 1) Legal Values for Rows/Columns are 0, 1 and 2"); System.out.println (" B) Enter a row# and col# that has been previously selected"); System.out.println(); System.out.println("Initial State of the Board"); start(a); print(a); System.out.println("---------------------------------Start of Game ---------------------------------------------- "); System.out.println(); int turn = 0, choice = 0; String player = ""; while (true){ turn++; if (turn % 2 == 1){ player = "Player#1"; } else{ player = "Player#2"; } status = play(a, player); if (status == 1){ System.out.println (player + " wins!"); break; } else if (status == 2){ choice++; System.out.println ("Choice = " + choice); if (choice == 9){ System.out.println ("Stalemate"); break; } } } } }