import java.util.Scanner; import java.util.Random; /** * @author Ollie Hensman-Crook */ public class TicTacToe2 { public static void main(String[] args) { Board gameBoard = new Board(); Random compChoice = new Random(); char yourChar; char compChar; Scanner in = new Scanner(System.in); System.out.println(" TIC-TAC-TOE"); System.out.println("CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"); System.out.println("\nTHE BOARD IS NUMBERED: "); System.out.println(" 1 2 3\n 4 5 6\n 7 8 9\n"); while (true) { // ask if the player wants to be X or O and if their input is valid set their // play piece as such System.out.println("DO YOU WANT 'X' OR 'O'"); while (true) { try { char input; input = in.next().charAt(0); if (input == 'X' || input == 'x') { yourChar = 'X'; compChar = 'O'; break; } else if (input == 'O' || input == 'o') { yourChar = 'O'; compChar = 'X'; break; } else { System.out.println("THATS NOT 'X' OR 'O', TRY AGAIN"); in.nextLine(); } } catch (Exception e) { System.out.println("THATS NOT 'X' OR 'O', TRY AGAIN"); in.nextLine(); } } while (true) { System.out.println("WHERE DO YOU MOVE"); // check the user can move where they want to and if so move them there while (true) { int input; try { input = in.nextInt(); if (gameBoard.getBoardValue(input) == ' ') { gameBoard.setArr(input, yourChar); break; } else { System.out.println("INVALID INPUT, TRY AGAIN"); } in.nextLine(); } catch (Exception e) { System.out.println("INVALID INPUT, TRY AGAIN"); in.nextLine(); } } gameBoard.printBoard(); System.out.println("THE COMPUTER MOVES TO"); while (true) { int position = 1 + compChoice.nextInt(9); if (gameBoard.getBoardValue(position) == ' ') { gameBoard.setArr(position, compChar); break; } } gameBoard.printBoard(); // if there is a win print if player won or the computer won and ask if they // want to play again if (gameBoard.checkWin(yourChar)) { System.out.println("YOU WIN, PLAY AGAIN? (Y/N)"); gameBoard.clear(); while (true) { try { char input; input = in.next().charAt(0); if (input == 'Y' || input == 'y') { break; } else if (input == 'N' || input == 'n') { System.exit(0); } else { System.out.println("THATS NOT 'Y' OR 'N', TRY AGAIN"); in.nextLine(); } } catch (Exception e) { System.out.println("THATS NOT 'Y' OR 'N', TRY AGAIN"); in.nextLine(); } } break; } else if (gameBoard.checkWin(compChar)) { System.out.println("YOU LOSE, PLAY AGAIN? (Y/N)"); gameBoard.clear(); while (true) { try { char input; input = in.next().charAt(0); if (input == 'Y' || input == 'y') { break; } else if (input == 'N' || input == 'n') { System.exit(0); } else { System.out.println("THATS NOT 'Y' OR 'N', TRY AGAIN"); in.nextLine(); } } catch (Exception e) { System.out.println("THATS NOT 'Y' OR 'N', TRY AGAIN"); in.nextLine(); } } break; } else if (gameBoard.checkDraw()) { System.out.println("DRAW, PLAY AGAIN? (Y/N)"); gameBoard.clear(); while (true) { try { char input; input = in.next().charAt(0); if (input == 'Y' || input == 'y') { break; } else if (input == 'N' || input == 'n') { System.exit(0); } else { System.out.println("THATS NOT 'Y' OR 'N', TRY AGAIN"); in.nextLine(); } } catch (Exception e) { System.out.println("THATS NOT 'Y' OR 'N', TRY AGAIN"); in.nextLine(); } } break; } } } } }