Advertisement
Eclipse913

TicTacToe.java

Oct 9th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.27 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3. public class TicTacToe {
  4.     //Default constructor for class
  5.     TicTacToe(){
  6.  
  7.     }
  8.  
  9.     //Variables  needed throughout the class
  10.     BoardState[][] board = new BoardState[3][3];
  11.     enum BoardState {EMPTY, X, O, SCRATCH, CONTINUE}
  12.     Random random = new Random();
  13.  
  14.     void randomPlacement(BoardState turn) {
  15.         int row;
  16.         int column;
  17.         do {
  18.             row = random.nextInt(3);
  19.             column = random.nextInt(3);
  20.         } while (board[row][column] != BoardState.EMPTY);
  21.         board[row][column] = turn;
  22.     }
  23.     private BoardState checkWin() {
  24.  
  25.         for (int column = 0; column < board[0].length; column++) {
  26.             if ((board[0][column] == board[1][column]) && (board[1][column] == board[2][column])) {
  27.                 return board[0][column];
  28.             }
  29.         }
  30.  
  31.         for (int row = 0; row < board[0].length; row++) {
  32.             if ((board[row][0] == board[row][1]) && (board[row][1] == board[row][2])) {
  33.                 return board[row][0];
  34.             }
  35.         }
  36.  
  37.         if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2])) {
  38.             return board[0][0];
  39.         } else if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0])) {
  40.             return board[0][2];
  41.         }
  42.  
  43.         for (int row = 0; row < board.length; row++) {
  44.             for (int column = 0; column < board[row].length; column++) {
  45.                 if (board[row][column] == BoardState.EMPTY) {
  46.                     return BoardState.CONTINUE;
  47.                 }
  48.             }
  49.         }
  50.         return BoardState.SCRATCH;
  51.     }
  52.     int getTotalWins() {
  53.         int wins = 0;
  54.         if (checkWin() == BoardState.X) {
  55.             wins = wins + 1;
  56.         }
  57.         return wins;
  58.     }
  59.     void printBoard() {
  60.         System.out.println("-------------");
  61.         //Prints current game board
  62.         for (int row = 0; row < (board.length); row++) {
  63.             System.out.print("| ");
  64.             for (int column = 0; column < board[row].length; column++) {
  65.                 if (board[row][column] == BoardState.X) {
  66.                     System.out.print("X | ");
  67.                 } else if (board[row][column] == BoardState.O) {
  68.                     System.out.print("O | ");
  69.                 } else if (board[row][column] == BoardState.EMPTY) {
  70.                     System.out.print("  | ");
  71.                 }
  72.             }
  73.             System.out.println("\n-------------");
  74.         }
  75.         if (checkWin() == BoardState.SCRATCH) {
  76.             System.out.println("It is a draw!");
  77.         } else {
  78.             System.out.println("The winner is " + checkWin() + "!");
  79.         }
  80.     }
  81.     void playGame() {
  82.  
  83.         for (int row = 0; row < board.length; row++) {
  84.             for (int column = 0; column < board[row].length; column++) {
  85.                 board[row][column] = BoardState.EMPTY;
  86.  
  87.             }
  88.         }
  89.  
  90.         BoardState turn = BoardState.X;
  91.         do {
  92.             this.randomPlacement(turn);
  93.             if (turn == BoardState.X) {
  94.                 turn = BoardState.O;
  95.             } else {
  96.                 turn = BoardState.X;
  97.             }
  98.         } while (this.checkWin() == BoardState.CONTINUE || this.checkWin() == BoardState.EMPTY);
  99.         this.printBoard();
  100.     }
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement