Advertisement
Guest User

Untitled

a guest
Apr 27th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.67 KB | None | 0 0
  1. mport java.util.Scanner;
  2.  
  3. /*
  4. * To change this license header, choose License Headers in Project Properties.
  5. * To change this template file, choose Tools | Templates
  6. * and open the template in the editor.
  7. */
  8. /**
  9. *
  10. * @author prem.pathak
  11. */
  12. public class TTT {
  13.  
  14. private Scanner keyBoard = new Scanner(System.in);
  15. private String player, CPU, winner;
  16. private String[][] moves = new String[3][3];
  17. private int moveCount = -1;
  18. private int countTurn;
  19. private int level;
  20.  
  21. /**
  22. * @param args the command line arguments
  23. */
  24. public static void main(String[] args) {
  25.  
  26. TTT TicTacToe = new TTT();
  27.  
  28. for (int r = 0; TicTacToe.moves.length > r; r++) {
  29. for (int c = 0; TicTacToe.moves[r].length > c; c++) {
  30. TicTacToe.moves[r][c] = " ";
  31. }
  32. }
  33.  
  34. while (TicTacToe.getPlayGame()) {
  35. System.out.println("hello");
  36.  
  37. TicTacToe.player = TicTacToe.getChooseSide();
  38. TicTacToe.setCPUSide(TicTacToe.player);
  39. TicTacToe.setLevel();
  40.  
  41. while (!TicTacToe.gameOver()) {
  42. TicTacToe.drawBoard();
  43. if (TicTacToe.countTurn % 2 != 0 && TicTacToe.player.equals("X")) {
  44. TicTacToe.setMove();
  45. } else if (TicTacToe.countTurn % 2 != 0 && TicTacToe.CPU.equals("X")) {
  46. TicTacToe.setCPUMove();
  47. TicTacToe.drawBoard();
  48. }
  49. if (TicTacToe.gameOver()) {
  50. break;
  51.  
  52. }
  53. if (TicTacToe.countTurn % 2 == 0 && TicTacToe.player.equals("O")) {
  54. TicTacToe.setMove();
  55. } else if (TicTacToe.countTurn % 2 == 0 && TicTacToe.CPU.equals("O")) {
  56. TicTacToe.setCPUMove();
  57. }
  58.  
  59. }
  60. TicTacToe.drawBoard();
  61. TicTacToe.refresh();
  62. System.out.println("The Winner is : " + TicTacToe.winner);
  63. }
  64. System.out.println("Good-Bye!");
  65. }
  66.  
  67. public boolean getPlayGame() {
  68. System.out.println("Want to play a game of Tic-Tac-Toe?(must be \"yes\" or \"no\")");
  69. String ans = keyBoard.nextLine();
  70. ans = ans.toLowerCase().trim();
  71. if (ans.equals("yes")) {
  72. return true;
  73. } else if (ans.equals("no")) {
  74. return false;
  75. } else {
  76. return getPlayGame();
  77. }
  78. }
  79.  
  80. public String getChooseSide() {
  81. System.out.println("Choose Your Side.(\"X\" or \"O\")");
  82. String ans = keyBoard.nextLine();
  83. ans = ans.toUpperCase().trim();
  84. if (ans.equals("X")) {
  85. return "X";
  86. } else if (ans.equals("O")) {
  87. return "O";
  88. } else {
  89. return getChooseSide();
  90. }
  91.  
  92. }
  93.  
  94. public void setCPUSide(String player) {
  95. if (player.equals("X")) {
  96. CPU = "O";
  97. countTurn = 1;
  98. } else {
  99. CPU = "X";
  100. countTurn = 1;
  101. }
  102. }
  103.  
  104. public void setMove() {
  105. System.out.println("Enter Your Move by tellin what row # and column #?(example: upperleft enter 1,1)");
  106. String ans = keyBoard.nextLine();
  107. ans = ans.toLowerCase().trim();
  108. if (ans.length() == 3) {
  109. if ("123".contains(ans.substring(0, 1)) && "123".contains(ans.substring(2))) {
  110. if (moves[Integer.parseInt(ans.substring(0, 1)) - 1][Integer.parseInt(ans.substring(2)) - 1].equals(" ")) {
  111. moves[Integer.parseInt(ans.substring(0, 1)) - 1][Integer.parseInt(ans.substring(2)) - 1] = player;
  112. } else {
  113. setMove();
  114. }
  115. } else {
  116. setMove();
  117. }
  118. } else {
  119. System.out.println("Invalid Entry");
  120. setMove();
  121. }
  122. countTurn++;
  123.  
  124. }
  125.  
  126. private void drawBoard() {
  127. System.out.println(" " + moves[0][0] + " " + "|" + " " + moves[0][1] + " " + "|" + " " + moves[0][2] + " ");
  128. System.out.println("-----------");
  129. System.out.println(" " + moves[1][0] + " " + "|" + " " + moves[1][1] + " " + "|" + " " + moves[1][2] + " ");
  130. System.out.println("-----------");
  131. System.out.println(" " + moves[2][0] + " " + "|" + " " + moves[2][1] + " " + "|" + " " + moves[2][2] + " ");
  132. }
  133.  
  134. private void setCPUMove() {
  135. if (level == 1) {
  136. lvlOneMove();
  137. } else if (level == 2) {
  138. lvlTwoMove();
  139. } else if (level == 3) {
  140. lvlThreeMove();
  141. }
  142. countTurn++;
  143. }
  144.  
  145. private boolean gameOver() {
  146. moveCount++;
  147. System.out.println("Moves Made: " + moveCount);
  148.  
  149. if (moves[0][0].equals(player) && moves[1][0].equals(player) && moves[2][0].equals(player)) {
  150. winner = player;
  151. return true;
  152. } else if (moves[0][1].equals(player) && moves[1][1].equals(player) && moves[2][1].equals(player)) {
  153. winner = player;
  154. return true;
  155. } else if (moves[0][2].equals(player) && moves[1][2].equals(player) && moves[2][2].equals(player)) {
  156. winner = player;
  157. return true;
  158. } else if (moves[0][0].equals(player) && moves[0][1].equals(player) && moves[0][2].equals(player)) {
  159. winner = player;
  160. return true;
  161. } else if (moves[1][0].equals(player) && moves[1][1].equals(player) && moves[1][2].equals(player)) {
  162. winner = player;
  163. return true;
  164. } else if (moves[2][0].equals(player) && moves[2][1].equals(player) && moves[2][2].equals(player)) {
  165. winner = player;
  166. return true;
  167. } else if (moves[0][0].equals(player) && moves[1][1].equals(player) && moves[2][2].equals(player)) {
  168. winner = player;
  169. return true;
  170. } else if (moves[0][2].equals(player) && moves[1][1].equals(player) && moves[2][0].equals(player)) {
  171. winner = player;
  172. return true;
  173. } else if (moves[0][0].equals(CPU) && moves[1][0].equals(CPU) && moves[2][0].equals(CPU)) {
  174. winner = CPU;
  175. return true;
  176. } else if (moves[0][1].equals(CPU) && moves[1][1].equals(CPU) && moves[2][1].equals(CPU)) {
  177. winner = CPU;
  178. return true;
  179. } else if (moves[0][2].equals(CPU) && moves[1][2].equals(CPU) && moves[2][2].equals(CPU)) {
  180. winner = CPU;
  181. return true;
  182. } else if (moves[0][0].equals(CPU) && moves[0][1].equals(CPU) && moves[0][2].equals(CPU)) {
  183. winner = CPU;
  184. return true;
  185. } else if (moves[1][0].equals(CPU) && moves[1][1].equals(CPU) && moves[1][2].equals(CPU)) {
  186. winner = CPU;
  187. return true;
  188. } else if (moves[2][0].equals(CPU) && moves[2][1].equals(CPU) && moves[2][2].equals(CPU)) {
  189. winner = CPU;
  190. return true;
  191. } else if (moves[0][0].equals(CPU) && moves[1][1].equals(CPU) && moves[2][2].equals(CPU)) {
  192. winner = CPU;
  193. return true;
  194. } else if (moves[0][2].equals(CPU) && moves[1][1].equals(CPU) && moves[2][0].equals(CPU)) {
  195. winner = CPU;
  196. return true;
  197. } else if (moveCount == 9) {
  198. winner = "Tie!";
  199. return true;
  200. } else {
  201. return false;
  202. }
  203. }
  204.  
  205. private void refresh() {
  206. for (int r = 0; moves.length > r; r++) {
  207. for (int c = 0; moves[r].length > c; c++) {
  208. moves[r][c] = " ";
  209. }
  210. }
  211. moveCount = -1;
  212. countTurn = 0;
  213. }
  214.  
  215. private void setLevel() {
  216. System.out.println("Choose Level (1,2 or 3): ");
  217. String ans = keyBoard.nextLine();
  218. ans = ans.toLowerCase().trim();
  219. if (ans.length() == 1) {
  220. if ("123".contains(ans.substring(0, 1))) {
  221. if (Integer.parseInt(ans.substring(0, 1)) == 1) {
  222. level = 1;
  223. } else if ((Integer.parseInt(ans.substring(0, 1)) == 2)) {
  224. level = 2;
  225. } else if ((Integer.parseInt(ans.substring(0, 1)) == 3)) {
  226. level = 3;
  227. } else {
  228. setLevel();
  229. }
  230. } else {
  231. setLevel();
  232. }
  233. } else {
  234. System.out.println("Invalid Entry");
  235. setLevel();
  236. }
  237. }
  238.  
  239. private void lvlOneMove() {
  240. int row = (int) (Math.random() * 3);
  241. int column = (int) (Math.random() * 3);
  242. if (moves[row][column].equals(" ")) {
  243. moves[row][column] = CPU;
  244. } else {
  245. lvlOneMove();
  246. }
  247. }
  248.  
  249. private void lvlTwoMove() {
  250. int row = (int) (Math.random() * 3);
  251. int column = (int) (Math.random() * 3);
  252. int coinFlip = (int) (Math.random() * 100);
  253. System.out.println(coinFlip);
  254. if (moves[1][1].equals(" ")) {
  255. moves[1][1] = CPU;
  256. } else if ((moves[0][0].equals(" ") || moves[0][2].equals(" ") || moves[2][0].equals(" ") || moves[2][2].equals(" ")) && coinFlip <= 75) {
  257. int spot = (int) (Math.random() * 4);
  258. if (spot == 0 && moves[0][0].equals(" ")) {
  259. moves[0][0] = CPU;
  260. } else if (spot == 1 && moves[0][2].equals(" ")) {
  261. moves[0][2] = CPU;
  262. } else if (spot == 2 && moves[2][0].equals(" ")) {
  263. moves[2][0] = CPU;
  264. } else if (spot == 3 && moves[2][2].equals(" ")) {
  265. moves[2][2] = CPU;
  266. } else {
  267. lvlTwoMove();
  268. }
  269. } else if (moves[row][column].equals(" ") && coinFlip >= 76) {
  270. moves[row][column] = CPU;
  271. } else {
  272. lvlTwoMove();
  273. }
  274. }
  275.  
  276. private void lvlThreeMove() {
  277. if (moves[0][0].equals(player) && moves[1][1].equals(player) && moves[2][2].equals(" ")) {
  278. moves[2][2] = CPU;
  279. } else if (moves[0][0].equals(player) && moves[1][1].equals(" ") && moves[2][2].equals(player)) {
  280. moves[1][1] = CPU;
  281. } else if (moves[0][0].equals(" ") && moves[1][1].equals(player) && moves[2][2].equals(player)) {
  282. moves[0][0] = CPU;
  283. } else if (moves[0][2].equals(player) && moves[1][1].equals(player) && moves[2][0].equals(" ")) {
  284. moves[2][0] = CPU;
  285. } else if (moves[0][2].equals(player) && moves[1][1].equals(" ") && moves[2][0].equals(player)) {
  286. moves[1][1] = CPU;
  287. } else if (moves[0][2].equals(" ") && moves[1][1].equals(player) && moves[2][0].equals(player)) {
  288. moves[0][2] = CPU;
  289. } else if (moves[0][0].equals(player) && moves[1][0].equals(player) && moves[2][0].equals(" ")) {
  290. moves[2][0] = CPU;
  291. } else if (moves[0][0].equals(player) && moves[1][0].equals(" ") && moves[2][0].equals(player)) {
  292. moves[1][0] = CPU;
  293. } else if (moves[0][2].equals(" ") && moves[1][0].equals(player) && moves[2][0].equals(player)) {
  294. moves[0][2] = CPU;
  295. } else if (moves[0][1].equals(player) && moves[1][1].equals(player) && moves[2][1].equals(" ")) {
  296. moves[2][1] = CPU;
  297. } else if (moves[0][1].equals(player) && moves[1][1].equals(" ") && moves[2][1].equals(player)) {
  298. moves[1][1] = CPU;
  299. } else if (moves[0][1].equals(" ") && moves[1][1].equals(player) && moves[2][1].equals(player)) {
  300. moves[0][1] = CPU;
  301. } else if (moves[0][2].equals(player) && moves[1][2].equals(player) && moves[2][2].equals(" ")) {
  302. moves[2][2] = CPU;
  303. } else if (moves[0][2].equals(player) && moves[1][2].equals(" ") && moves[2][2].equals(player)) {
  304. moves[1][2] = CPU;
  305. } else if (moves[0][2].equals(" ") && moves[1][2].equals(player) && moves[2][2].equals(player)) {
  306. moves[2][2] = CPU;
  307. } else if (moves[0][0].equals(player) && moves[0][1].equals(player) && moves[0][2].equals(" ")) {
  308. moves[0][2] = CPU;
  309. } else if (moves[0][0].equals(player) && moves[0][1].equals(" ") && moves[0][2].equals(player)) {
  310. moves[0][1] = CPU;
  311. } else if (moves[0][0].equals(" ") && moves[0][1].equals(player) && moves[0][2].equals(player)) {
  312. moves[0][0] = CPU;
  313. } else if (moves[1][1].equals(" ")) {
  314. moves[1][1] = CPU;
  315. } else {
  316. int row = (int) (Math.random() * 3);
  317. int column = (int) (Math.random() * 3);
  318. if (moves[row][column].equals(" ")) {
  319. moves[row][column] = CPU;
  320. } else {
  321. lvlThreeMove();
  322. }
  323. }
  324. }
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement