Advertisement
Guest User

Untitled

a guest
Dec 13th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class TicTacToe {
  4.  
  5.  
  6. private char[][] board;
  7. private boolean xTurn;
  8. private Scanner keyboard;
  9.  
  10.  
  11. public TicTacToe() {
  12.  
  13.  
  14. board = new char[3][3];
  15.  
  16. for(int r = 0; r < 3; r++) {
  17.  
  18. for(int c = 0; c < 3; c++)
  19. board[r][c] = ' ';
  20. }
  21.  
  22. xTurn = true;
  23.  
  24. keyboard = new Scanner(System.in);
  25. }
  26.  
  27.  
  28.  
  29. private void displayRow(int row) {
  30.  
  31. System.out.println(" " + board[row][0] + " | " + board[row][1] + " | " + board[row][2]);
  32. }
  33.  
  34.  
  35.  
  36. private void displayBoard() {
  37.  
  38. displayRow(0);
  39. System.out.println("-----------");
  40. displayRow(1);
  41. System.out.println("-----------");
  42. displayRow(2);
  43. }
  44.  
  45.  
  46.  
  47. private void displayMenu() {
  48.  
  49.  
  50. if(xTurn)
  51. System.out.println("X's Turn!");
  52. else
  53. System.out.println("O's Turn!");
  54.  
  55.  
  56. }
  57.  
  58.  
  59.  
  60.  
  61. private boolean getMove() {
  62.  
  63. boolean invalid = true;
  64. int row = 0, column = 0;
  65.  
  66.  
  67. while(invalid) {
  68.  
  69. System.out.println("Which row, column from 0-2 would you like to choose");
  70. row = keyboard.nextInt();
  71. column = keyboard.nextInt();
  72.  
  73. if(row >= 0 && row <= 2 && column >= 0 && column <= 2) {
  74.  
  75. if(board[row][column] != ' ')
  76. System.out.println("That position is already taken");
  77. else
  78. invalid = false;
  79. }
  80. else
  81. System.out.println("Invalid position");
  82. }
  83.  
  84. if(xTurn)
  85. board[row][column] = 'X';
  86. else
  87. board[row][column] = 'O';
  88.  
  89. return winner(row,column);
  90. }
  91.  
  92.  
  93. private void restart() {
  94.  
  95. for(int r = 0; r < 3; r++) {
  96.  
  97. for(int c = 0; c < 3; c++)
  98. board[r][c] = ' ';
  99. }
  100.  
  101.  
  102. //reset whose turn it is
  103. xTurn = true;
  104. }
  105.  
  106. private boolean winner(int lastR, int lastC) {
  107.  
  108. boolean winner = false; //assume there's no winner
  109. char symbol = board[lastR][lastC]; //the symbol for the last move either X or O
  110.  
  111.  
  112. int numFound = 0;
  113. for(int c = 0; c < 3; c++) {
  114. if(board[lastR][c] == symbol)
  115. numFound++;
  116. }
  117.  
  118. if(numFound == 3)
  119. winner = true;
  120.  
  121. numFound = 0;
  122. for(int r = 0; r < 3; r++) {
  123. if(board[r][lastC] == symbol)
  124. numFound++;
  125. }
  126.  
  127. if(numFound == 3)
  128. winner = true;
  129.  
  130. numFound = 0;
  131. for(int i = 0; i < 3; i++) {
  132. if(board[i][i] == symbol)
  133. numFound++;
  134. }
  135.  
  136. if(numFound == 3)
  137. winner = true;
  138.  
  139. numFound = 0;
  140. for(int i = 0; i < 3; i++) {
  141. if(board[i][2-i] == symbol)
  142. numFound++;
  143. }
  144.  
  145. if(numFound == 3)
  146. winner = true;
  147.  
  148. return winner;
  149. }
  150.  
  151.  
  152. private boolean boardFull() {
  153.  
  154. int numSpotsFilled = 0;
  155.  
  156. for(int r = 0; r < 3; r++) {
  157.  
  158. for(int c = 0; c < 3; c++) {
  159. if(board[r][c] == 'X' || board[r][c] == 'O')
  160. numSpotsFilled++;
  161. }
  162. }
  163.  
  164. return numSpotsFilled == 9;
  165. }
  166.  
  167.  
  168.  
  169. public void play() {
  170.  
  171. while(true) {
  172.  
  173. displayBoard();
  174. displayMenu();
  175.  
  176. int choice = keyboard.nextInt();
  177.  
  178. if(choice == 1)
  179. {
  180.  
  181. if(getMove()) {
  182.  
  183. displayBoard();
  184.  
  185. if(xTurn)
  186. System.out.println("X Wins!");
  187. else
  188. System.out.println("O Wins!");
  189.  
  190. }
  191. else if(boardFull()) {
  192.  
  193. displayBoard();
  194.  
  195. System.out.println("Draw!");
  196.  
  197. System.exit(0);
  198. }
  199. else {
  200.  
  201. xTurn = !xTurn;
  202. }
  203. }
  204. else if(choice == 2)
  205. restart();
  206. else if(choice == 3)
  207. System.exit(0);
  208. else
  209. System.out.println("Invalid Option");
  210. }
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement