Monty374

Tic Tac Toe

Nov 28th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. package tictactoe;
  2.  
  3. /**
  4. *
  5. * @author Monty
  6. */
  7. public class TicTacToe {
  8.  
  9. public static void main(String[] args) {
  10. TTT TTTGame = new TTT();
  11.  
  12. TTTGame.play();
  13. }
  14. }
  15.  
  16. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  17.  
  18. package tictactoe;
  19.  
  20. import java.util.Scanner;
  21.  
  22.  
  23. public class TTT {
  24. private String[][] tttBoard;
  25. private String player1, player2;
  26.  
  27.  
  28. /**
  29. * constructor
  30. * pre: none
  31. * post: tttBoard has been initialized. player1 is X and player2 is O.
  32. */
  33. public TTT() {
  34. player1 = "X";
  35. player2 = "O";
  36. tttBoard = new String[3][3];
  37. for(int row = 0; row < tttBoard.length; row++) {
  38. for (int col = 0; col < tttBoard[0].length; col++) {
  39. tttBoard[row][col] = " ";
  40. }
  41. }
  42. }
  43.  
  44.  
  45. /**
  46. * Plays a game of tic-tac-toe with two users, keeping track
  47. * of player (X or O) turns. player1 goes first.
  48. * pre: none
  49. * post: A game of tic-tac-toe has been played.
  50. */
  51. public void play() {
  52. String currPlayer = player1;
  53. int movesMade = 0;
  54.  
  55. do {
  56. displayBoard();
  57. makeMove(currPlayer);
  58. movesMade += 1;
  59. if (currPlayer == player1){
  60. currPlayer = player2;
  61. } else {
  62. currPlayer = player1;
  63. }
  64. } while (movesMade <= 9 && winner() == " ");
  65. displayBoard();
  66. System.out.println("Winner is " + winner());
  67. }
  68.  
  69.  
  70. /**
  71. * Displays the board.
  72. * pre: none
  73. * post: The tic-tac-toe board has been displayed.
  74. */
  75. private void displayBoard() {
  76. for(int row = 0; row < tttBoard.length; row++) {
  77. for (int col = 0; col < tttBoard[0].length; col++) {
  78. System.out.print("[" + tttBoard[row][col] + "]");
  79. }
  80. System.out.println();
  81. }
  82. }
  83.  
  84.  
  85. /**
  86. * Prompt user for a move until a valid move has been made.
  87. * pre: none
  88. * post: A mark has been made in an empty tic-tac-toe board square.
  89. */
  90. private void makeMove(String player) {
  91. Scanner input = new Scanner(System.in);
  92. boolean validMove = false;
  93. int row, col;
  94.  
  95. do {
  96. System.out.print("Player " + player + ", Enter row number (0, 1, 2): ");
  97. row = input.nextInt();
  98. System.out.print("Player " + player + ", Enter column number (0, 1, 2): ");
  99. col = input.nextInt();
  100. if ((row >= 0 && row < tttBoard.length &&
  101. col >= 0 && col < tttBoard[0].length) &&
  102. tttBoard[row][col].equals(" ")) {
  103. tttBoard[row][col] = player;
  104. validMove = true;
  105. } else {
  106. System.out.println("Invalid move. Try again.");
  107. }
  108. } while (!validMove);
  109. }
  110.  
  111.  
  112. /**
  113. * Determine winner. Return " " if no winner.
  114. * pre: none
  115. * post: X, O, or " " has been returned as the winner.
  116. */
  117. private String winner() {
  118.  
  119. /* test rows */
  120. for (int row = 0; row < tttBoard.length; row++) {
  121. if (tttBoard[row][0].equals(tttBoard[row][1]) && tttBoard[row][1].equals(tttBoard[row][2]) &&
  122. !(tttBoard[row][0].equals(" "))) {
  123. return(tttBoard[row][0]);
  124. }
  125. }
  126.  
  127. /* test columns */
  128. for (int col = 0; col < tttBoard[0].length; col++) {
  129. if (tttBoard[0][col].equals(tttBoard[1][col]) && tttBoard[1][col].equals(tttBoard[2][col]) &&
  130. !(tttBoard[0][col].equals(" "))) {
  131. return(tttBoard[0][col]);
  132. }
  133. }
  134.  
  135. /* test diagonal */
  136. if (tttBoard[0][0].equals(tttBoard[1][1]) && tttBoard[1][1].equals(tttBoard[2][2]) &&
  137. !(tttBoard[0][0].equals(" "))) {
  138. return(tttBoard[0][0]);
  139. }
  140.  
  141. /* test other diagonal */
  142. if (tttBoard[0][2].equals(tttBoard[1][1]) && tttBoard[1][1].equals(tttBoard[2][0]) &&
  143. !(tttBoard[0][2].equals(" "))) {
  144. return(tttBoard[0][2]);
  145. }
  146.  
  147. return(" ");
  148. }
  149. }
Advertisement
Add Comment
Please, Sign In to add comment