Advertisement
Guest User

Untitled

a guest
Dec 14th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.39 KB | None | 0 0
  1. import java.util.Scanner;
  2. public class final10 {
  3.  
  4.  
  5. //declare class variables
  6. public static String playerName ="";
  7. public static String player2Name ="";
  8. public static String Winner = null;
  9. public static String [] moveTracker = new String[9];
  10. public static int tieCounter = 0;
  11. public static String PlayerMode = "";
  12.  
  13. public static void main(String[] args) {
  14.  
  15. //declare method variables
  16. Scanner input = new Scanner(System.in);
  17. String[][] grid = new String[3][3];
  18. String Continue = " ";
  19.  
  20. splashScreen(input);
  21. do {
  22. reset(input);
  23. loadGrid(grid);
  24. getName(input);
  25. gamePlay(input,grid);
  26.  
  27. System.out.println("Press Yy to play again or any key to exit");
  28.  
  29. Continue = input.nextLine();
  30.  
  31. }while(Continue.equalsIgnoreCase("y"));
  32.  
  33. System.out.println("Exiting.. Thank you for playing");
  34.  
  35.  
  36. }//end of main method
  37.  
  38. private static void getName(Scanner input) {
  39.  
  40. if(PlayerMode.equals("1"))
  41. {
  42. System.out.println("Enter your name");
  43. playerName = checkName(input);
  44. }
  45.  
  46. if(PlayerMode.equals("2"))
  47. {
  48. System.out.println("Player one Name: ");
  49. playerName = checkName(input);
  50. System.out.println("Player two Name: ");
  51. player2Name = checkName(input);
  52. }
  53. }
  54.  
  55. public static void reset(Scanner input) { //reset variables
  56.  
  57. PlayerMode = "";
  58. Winner = null;
  59. tieCounter = 0;
  60. player2Name ="";
  61. playerName ="";
  62.  
  63. for(int i = 0; i < 9; i++)
  64. {
  65. moveTracker[i] = null;
  66. }
  67.  
  68. System.out.println("1 Player - Press 1");
  69. System.out.println("2 Players - Press 2");
  70.  
  71. PlayerMode = checkInput(input);
  72.  
  73.  
  74.  
  75. } //end of reset method
  76.  
  77. public static void gamePlay(Scanner input, String[][] grid) {
  78.  
  79.  
  80. while(PlayerMode.equals("2") && Winner == null)
  81. {
  82. twoPlayer(input, grid);
  83. }
  84.  
  85. while(PlayerMode.equals("1") && Winner == null)
  86. {
  87. onePlayer(input, grid);
  88. }
  89. } //end of gamePlay method
  90.  
  91. public static void twoPlayer(Scanner input, String[][] grid) {
  92.  
  93.  
  94. displayGrid(input, grid);
  95. System.out.println();
  96. System.out.println(playerName + "'s" + " move");
  97. String player1Move = validateMove(grid, input);
  98. moveTracker[Integer.parseInt(player1Move)] = "X";
  99.  
  100. switch (player1Move)
  101. {
  102. case "0":
  103.  
  104. grid[0][0] = "X";
  105. break;
  106.  
  107. case "1":
  108.  
  109. grid[0][1] = "X";
  110. break;
  111.  
  112. case "2":
  113.  
  114. grid[0][2] = "X";
  115. break;
  116.  
  117. case "3":
  118.  
  119. grid[1][0] = "X";
  120. break;
  121.  
  122. case "4":
  123.  
  124. grid[1][1] = "X";
  125. break;
  126.  
  127. case "5":
  128.  
  129. grid[1][2] = "X";
  130. break;
  131.  
  132. case "6":
  133.  
  134. grid[2][0] = "X";
  135. break;
  136.  
  137. case "7":
  138.  
  139. grid[2][1] = "X";
  140. break;
  141.  
  142. case "8":
  143.  
  144. grid[2][2] = "X";
  145. break;
  146.  
  147. } //end of switch statement
  148.  
  149. checkWinner(grid);
  150. tieCounter++;
  151.  
  152.  
  153. if(Winner == null)
  154. {
  155. player2Move(input, grid);
  156. }
  157. }
  158.  
  159. public static void player2Move(Scanner input, String[][] grid) {
  160.  
  161. displayGrid(input, grid);
  162. System.out.println();
  163. System.out.println(player2Name + "'s" + " move");
  164.  
  165. String player2Move = validateMove(grid, input);
  166. moveTracker[Integer.parseInt(player2Move)] = "O";
  167.  
  168. switch (player2Move)
  169. {
  170. case "0":
  171.  
  172. grid[0][0] = "O";
  173. break;
  174.  
  175. case "1":
  176.  
  177. grid[0][1] = "O";
  178. break;
  179.  
  180. case "2":
  181.  
  182. grid[0][2] = "O";
  183. break;
  184.  
  185. case "3":
  186.  
  187. grid[1][0] = "O";
  188. break;
  189.  
  190. case "4":
  191.  
  192. grid[1][1] = "O";
  193. break;
  194.  
  195. case "5":
  196.  
  197. grid[1][2] = "O";
  198. break;
  199.  
  200. case "6":
  201.  
  202. grid[2][0] = "O";
  203. break;
  204.  
  205. case "7":
  206.  
  207. grid[2][1] = "O";
  208. break;
  209.  
  210. case "8":
  211.  
  212. grid[2][2] = "O";
  213. break;
  214.  
  215. } //end of switch statement
  216. checkWinner(grid);
  217. tieCounter++;
  218. }
  219.  
  220. public static String checkInput(Scanner input) {
  221.  
  222. String Player = input.nextLine();
  223.  
  224. while(!Player.matches("[12]"))
  225. {
  226. System.out.println("Not a valid option");
  227. Player = input.nextLine();
  228. }
  229.  
  230.  
  231. return Player;
  232. }
  233.  
  234. public static void loadGrid(String[][] grid) { //load game board
  235.  
  236. int startingNumber = 0;
  237. for(int i = 0; i < 3; i++) //outer for loop to load row numbers
  238. {
  239. for(int j = 0; j < 3; j++, startingNumber++)
  240. {
  241.  
  242. grid[i][j] = String.valueOf(startingNumber); //inner for loop to load column numbers
  243.  
  244. }//end of inner for loop
  245. }
  246. }
  247.  
  248. public static void displayGrid(Scanner input, String[][] grid) { //display game board
  249.  
  250. System.out.println();
  251. System.out.println(" TIC-TAC TOE");
  252. System.out.println();
  253.  
  254. for(int i = 0; i < 3; i++)
  255. {
  256. for(int j = 0; j < 3; j++)
  257. {
  258. if(j < 2)
  259. System.out.print(" " + grid[i][j] + " |");
  260. else
  261. System.out.println(" " + grid[i][j]);
  262. }
  263. if(i<2)
  264. System.out.println("------------");
  265. }
  266.  
  267.  
  268. }
  269.  
  270. public static void playerComputer(Scanner input, String[][] grid) { //computers move
  271.  
  272. displayGrid(input, grid);
  273. System.out.println();
  274. System.out.println("Computer's Move");
  275. String computerMove = "";
  276.  
  277. if(moveTracker[0] != null && moveTracker[1] != null && moveTracker[0].equals("O") && moveTracker[1].equals("O"))
  278. computerMove = Integer.toString(2);
  279. else if(moveTracker[0] != null && moveTracker[2] != null && moveTracker[0].equals("O") && moveTracker[2].equals("O"))
  280. computerMove = Integer.toString(1);
  281. else if(moveTracker[1] != null && moveTracker[2] != null && moveTracker[1].equals("O") && moveTracker[2].equals("O"))
  282. computerMove = Integer.toString(0);
  283. //mid horizontal finish
  284. else if(moveTracker[3] != null && moveTracker[4] != null && moveTracker[3].equals("O") && moveTracker[4].equals("O"))
  285. computerMove = Integer.toString(5);
  286. else if(moveTracker[3] != null && moveTracker[5] != null && moveTracker[3].equals("O") && moveTracker[5].equals("O"))
  287. computerMove = Integer.toString(4);
  288. else if(moveTracker[4] != null && moveTracker[5] != null && moveTracker[4].equals("O") && moveTracker[5].equals("O"))
  289. computerMove = Integer.toString(3);
  290. //bottom horizontal finish
  291. else if(moveTracker[6] != null && moveTracker[7] != null && moveTracker[8] == null && moveTracker[6].equals("O") && moveTracker[7].equals("O"))
  292. computerMove = Integer.toString(8);
  293. else if(moveTracker[6] != null && moveTracker[8] != null && moveTracker[7] == null && moveTracker[6].equals("O") && moveTracker[8].equals("O"))
  294. computerMove = Integer.toString(7);
  295. else if(moveTracker[7] != null && moveTracker[8] != null && moveTracker[6] == null && moveTracker[7].equals("O") && moveTracker[8].equals("O"))
  296. computerMove = Integer.toString(6);
  297. //left vertical finish
  298. else if(moveTracker[0] != null && moveTracker[3] != null && moveTracker[6] == null && moveTracker[0].equals("O") && moveTracker[3].equals("O"))
  299. computerMove = Integer.toString(6);
  300. else if(moveTracker[0] != null && moveTracker[6] != null && moveTracker[3] == null && moveTracker[0].equals("O") && moveTracker[6].equals("O"))
  301. computerMove = Integer.toString(3);
  302. else if(moveTracker[3] != null && moveTracker[6] != null && moveTracker[0] == null && moveTracker[3].equals("O") && moveTracker[6].equals("O"))
  303. computerMove = Integer.toString(0);
  304. //mid vertical finish
  305. else if(moveTracker[1] != null && moveTracker[4] != null && moveTracker[7] == null && moveTracker[1].equals("O") && moveTracker[4].equals("O"))
  306. computerMove = Integer.toString(7);
  307. else if(moveTracker[1] != null && moveTracker[7] != null && moveTracker[4] == null && moveTracker[1].equals("O") && moveTracker[7].equals("O"))
  308. computerMove = Integer.toString(4);
  309. else if(moveTracker[4] != null && moveTracker[7] != null && moveTracker[1] == null && moveTracker[4].equals("O") && moveTracker[7].equals("O"))
  310. computerMove = Integer.toString(1);
  311. //right vertical finish
  312. else if(moveTracker[2] != null && moveTracker[5] != null && moveTracker[8] == null && moveTracker[2].equals("O") && moveTracker[5].equals("O"))
  313. computerMove = Integer.toString(8);
  314. else if(moveTracker[2] != null && moveTracker[8] != null && moveTracker[5] == null && moveTracker[2].equals("O") && moveTracker[8].equals("O"))
  315. computerMove = Integer.toString(5);
  316. else if(moveTracker[5] != null && moveTracker[8] != null && moveTracker[2] == null && moveTracker[5].equals("O") && moveTracker[8].equals("O"))
  317. computerMove = Integer.toString(2);
  318.  
  319. //l-r diagonal finish
  320. else if(moveTracker[0] != null && moveTracker[4] != null && moveTracker[8] == null && moveTracker[0].equals("O") && moveTracker[4].equals("O"))
  321. computerMove = Integer.toString(8);
  322. else if(moveTracker[0] != null && moveTracker[8] != null && moveTracker[4] == null && moveTracker[0].equals("O") && moveTracker[8].equals("O"))
  323. computerMove = Integer.toString(4);
  324. else if(moveTracker[4] != null && moveTracker[8] != null && moveTracker[0] == null && moveTracker[4].equals("O") && moveTracker[8].equals("O"))
  325. computerMove = Integer.toString(0);
  326. //r-1 diagonal finish
  327. else if(moveTracker[2] != null && moveTracker[4] != null && moveTracker[6] == null && moveTracker[2].equals("O") && moveTracker[4].equals("O"))
  328. computerMove = Integer.toString(6);
  329. else if(moveTracker[2] != null && moveTracker[6] != null && moveTracker[4] == null && moveTracker[2].equals("O") && moveTracker[6].equals("O"))
  330. computerMove = Integer.toString(4);
  331. else if(moveTracker[4] != null && moveTracker[6] != null && moveTracker[2] == null && moveTracker[4].equals("O") && moveTracker[6].equals("O"))
  332. computerMove = Integer.toString(2);
  333.  
  334.  
  335. else if(moveTracker[0] != null && moveTracker[1] != null && moveTracker[2] == null && moveTracker[0].equals("X") && moveTracker[1].equals("X"))
  336. computerMove = Integer.toString(2);
  337. else if(moveTracker[0] != null && moveTracker[2] != null && moveTracker[1] == null && moveTracker[0].equals("X") && moveTracker[2].equals("X"))
  338. computerMove = Integer.toString(1);
  339. else if(moveTracker[1] != null && moveTracker[2] != null && moveTracker[0] == null && moveTracker[1].equals("X") && moveTracker[2].equals("X"))
  340. computerMove = Integer.toString(0);
  341. //mid horizontal block
  342. else if(moveTracker[3] != null && moveTracker[4] != null && moveTracker[5] == null && moveTracker[3].equals("X") && moveTracker[4].equals("X"))
  343. computerMove = Integer.toString(5);
  344. else if(moveTracker[3] != null && moveTracker[5] != null && moveTracker[4] == null && moveTracker[3].equals("X") && moveTracker[5].equals("X"))
  345. computerMove = Integer.toString(4);
  346. else if(moveTracker[4] != null && moveTracker[5] != null && moveTracker[3] == null && moveTracker[4].equals("X") && moveTracker[5].equals("X"))
  347. computerMove = Integer.toString(3);
  348. //bottom horizontal block
  349. else if(moveTracker[6] != null && moveTracker[7] != null && moveTracker[8] == null && moveTracker[6].equals("X") && moveTracker[7].equals("X"))
  350. computerMove = Integer.toString(8);
  351. else if(moveTracker[6] != null && moveTracker[8] != null && moveTracker[7] == null && moveTracker[6].equals("X") && moveTracker[8].equals("X"))
  352. computerMove = Integer.toString(7);
  353. else if(moveTracker[7] != null && moveTracker[8] != null && moveTracker[6] == null && moveTracker[7].equals("X") && moveTracker[8].equals("X"))
  354. computerMove = Integer.toString(6);
  355.  
  356. //left vertical block
  357. else if(moveTracker[0] != null && moveTracker[3] != null && moveTracker[6] == null && moveTracker[0].equals("X") && moveTracker[3].equals("X"))
  358. computerMove = Integer.toString(6);
  359. else if(moveTracker[0] != null && moveTracker[6] != null && moveTracker[3] == null && moveTracker[0].equals("X") && moveTracker[6].equals("X"))
  360. computerMove = Integer.toString(3);
  361. else if(moveTracker[3] != null && moveTracker[6] != null && moveTracker[0] == null && moveTracker[3].equals("X") && moveTracker[6].equals("X"))
  362. computerMove = Integer.toString(0);
  363. //mid vertical block
  364. else if(moveTracker[1] != null && moveTracker[4] != null && moveTracker[7] == null && moveTracker[1].equals("X") && moveTracker[4].equals("X"))
  365. computerMove = Integer.toString(7);
  366. else if(moveTracker[1] != null && moveTracker[7] != null && moveTracker[4] == null && moveTracker[1].equals("X") && moveTracker[7].equals("X"))
  367. computerMove = Integer.toString(4);
  368. else if(moveTracker[4] != null && moveTracker[7] != null && moveTracker[1] == null && moveTracker[4].equals("X") && moveTracker[7].equals("X"))
  369. computerMove = Integer.toString(1);
  370. //right vertical block
  371. else if(moveTracker[2] != null && moveTracker[5] != null && moveTracker[6] == null && moveTracker[2].equals("X") && moveTracker[5].equals("X"))
  372. computerMove = Integer.toString(8);
  373. else if(moveTracker[2] != null && moveTracker[8] != null && moveTracker[3] == null && moveTracker[2].equals("X") && moveTracker[8].equals("X"))
  374. computerMove = Integer.toString(5);
  375. else if(moveTracker[5] != null && moveTracker[8] != null && moveTracker[0] == null && moveTracker[5].equals("X") && moveTracker[8].equals("X"))
  376. computerMove = Integer.toString(2);
  377. //l-r diagonal block
  378. else if(moveTracker[0] != null && moveTracker[4] != null && moveTracker[8] == null && moveTracker[0].equals("X") && moveTracker[4].equals("X"))
  379. computerMove = Integer.toString(8);
  380. else if(moveTracker[0] != null && moveTracker[8] != null && moveTracker[4] == null && moveTracker[0].equals("X") && moveTracker[8].equals("X"))
  381. computerMove = Integer.toString(4);
  382. else if(moveTracker[4] != null && moveTracker[8] != null && moveTracker[0] == null && moveTracker[4].equals("X") && moveTracker[8].equals("X"))
  383. computerMove = Integer.toString(0);
  384. //r-1 diagonal block
  385. else if(moveTracker[2] != null && moveTracker[4] != null && moveTracker[6] == null && moveTracker[2].equals("X") && moveTracker[4].equals("X"))
  386. computerMove = Integer.toString(6);
  387. else if(moveTracker[2] != null && moveTracker[6] != null && moveTracker[4] == null && moveTracker[2].equals("X") && moveTracker[6].equals("X"))
  388. computerMove = Integer.toString(4);
  389. else if(moveTracker[4] != null && moveTracker[6] != null && moveTracker[2] == null && moveTracker[4].equals("X") && moveTracker[6].equals("X"))
  390. computerMove = Integer.toString(2);
  391. else
  392. //first computer move is to center if open
  393.  
  394. computerMove = checkComputer(grid);
  395. moveTracker[Integer.parseInt(computerMove)] = "O";
  396.  
  397. switch (computerMove)
  398. {
  399. case "0":
  400.  
  401. grid[0][0] = "O";
  402. break;
  403.  
  404. case "1":
  405.  
  406. grid[0][1] = "O";
  407. break;
  408.  
  409. case "2":
  410.  
  411. grid[0][2] = "O";
  412. break;
  413.  
  414. case "3":
  415.  
  416. grid[1][0] = "O";
  417. break;
  418.  
  419. case "4":
  420.  
  421. grid[1][1] = "O";
  422. break;
  423.  
  424. case "5":
  425.  
  426. grid[1][2] = "O";
  427. break;
  428.  
  429. case "6":
  430.  
  431. grid[2][0] = "O";
  432. break;
  433.  
  434. case "7":
  435.  
  436. grid[2][1] = "O";
  437. break;
  438.  
  439. case "8":
  440.  
  441. grid[2][2] = "O";
  442. break;
  443. } //end of switch statement
  444. displayGrid(input, grid);
  445. checkWinner(grid);
  446. tieCounter++;
  447.  
  448. } //end of computer move method
  449.  
  450.  
  451. public static String checkComputer(String[][] grid) { //check computer move
  452.  
  453. int computerRandom = (int) (Math.random() * 8 + 1);
  454. String move = Integer.toString(computerRandom);
  455. boolean check = true;
  456.  
  457. while(check)
  458. {
  459. if(!move.matches("[0-8]"))
  460. {
  461. computerRandom = (int) (Math.random() * 8 + 1);
  462. move = Integer.toString(computerRandom);
  463. check = true;
  464. }
  465. else if(move.equals("0") && grid[0][0].matches("[OX]"))
  466. {
  467. computerRandom = (int) (Math.random() * 8 + 1);
  468. move = Integer.toString(computerRandom);
  469. check = true;
  470.  
  471. }
  472. else if(move.equals("1") && grid[0][1].matches("[OX]"))
  473. {
  474. computerRandom = (int) (Math.random() * 8 + 1);
  475. move = Integer.toString(computerRandom);
  476. check = true;
  477. }
  478. else if(move.equals("2") && grid[0][2].matches("[OX]"))
  479. {
  480. computerRandom = (int) (Math.random() * 8 + 1);
  481. move = Integer.toString(computerRandom);
  482. check = true;
  483. }
  484. else if(move.equals("3") && grid[1][0].matches("[OX]"))
  485. {
  486. computerRandom = (int) (Math.random() * 8 + 1);
  487. move = Integer.toString(computerRandom);
  488. check = true;
  489. }
  490. else if(move.equals("4") && grid[1][1].matches("[OX]"))
  491. {
  492. computerRandom = (int) (Math.random() * 8 + 1);
  493. move = Integer.toString(computerRandom);
  494. check = true;
  495. }
  496. else if(move.equals("5") && grid[1][2].matches("[OX]"))
  497. {
  498. computerRandom = (int) (Math.random() * 8 + 1);
  499. move = Integer.toString(computerRandom);
  500. check = true;
  501. }
  502. else if(move.equals("6") && grid[2][0].matches("[OX]"))
  503. {
  504. computerRandom = (int) (Math.random() * 8 + 1);
  505. move = Integer.toString(computerRandom);
  506. check = true;
  507. }
  508. else if(move.equals("7") && grid[2][1].matches("[OX]"))
  509. {
  510. computerRandom = (int) (Math.random() * 8 + 1);
  511. move = Integer.toString(computerRandom);
  512. check = true;
  513. }
  514. else if(move.equals("8") && grid[2][2].matches("[OX]"))
  515. {
  516. computerRandom = (int) (Math.random() * 8 + 1);
  517. move = Integer.toString(computerRandom);
  518. check = true;
  519. }
  520. else
  521. {
  522. check = false;
  523. }
  524.  
  525. }
  526.  
  527. return move;
  528. }
  529.  
  530. public static void checkWinner(String grid[][]) { //check winner method
  531.  
  532.  
  533. if(grid[0][0] == "O" && grid[0][1] == "O" && grid[0][2] == "O")
  534. {
  535. if(PlayerMode.equals("2"))
  536. {
  537. System.out.println(player2Name + " wins!");
  538. Winner = player2Name;
  539. }
  540. else
  541. {
  542. System.out.println("Computer Wins!");
  543. Winner = "computer";
  544. }
  545.  
  546. }
  547. else if(grid[0][0] == "X" && grid[0][1] == "X" && grid[0][2] == "X")
  548. {
  549. System.out.println(playerName + " Wins!");
  550. Winner = playerName;
  551. }
  552. else if(grid[1][0] == "O" && grid[1][1] == "O" && grid[1][2] == "O")
  553. {
  554. if(PlayerMode.equals("2"))
  555. {
  556. System.out.println(player2Name + " wins!");
  557. Winner = player2Name;
  558. }
  559. else
  560. {
  561. System.out.println("Computer Wins!");
  562. Winner = "computer";
  563. }
  564. }
  565. else if(grid[1][0] == "X" && grid[1][1] == "X" && grid[1][2] == "X")
  566. {
  567. System.out.println(playerName + " Wins!");
  568. Winner = playerName;
  569. }
  570. else if(grid[2][0] == "O" && grid[2][1] == "O" && grid[2][2] == "O")
  571. {
  572. if(PlayerMode.equals("2"))
  573. {
  574. System.out.println(player2Name + " wins!");
  575. Winner = player2Name;
  576. }
  577. else
  578. {
  579. System.out.println("Computer Wins!");
  580. Winner = "computer";
  581. }
  582. }
  583. else if(grid[2][0] == "X" && grid[2][1] == "X" && grid[2][2] == "X")
  584. {
  585. System.out.println(playerName + " Wins!");
  586. Winner = playerName;
  587. }
  588. else if(grid[0][0] == "O" && grid[1][0] == "O" && grid[2][0] == "O")
  589. {
  590. if(PlayerMode.equals("2"))
  591. {
  592. System.out.println(player2Name + " wins!");
  593. Winner = player2Name;
  594. }
  595. else
  596. {
  597. System.out.println("Computer Wins!");
  598. Winner = "computer";
  599. }
  600. }
  601. else if(grid[0][0] == "X" && grid[1][0] == "X" && grid[2][0] == "X")
  602. {
  603. System.out.println(playerName + " Wins!");
  604. Winner = playerName;
  605. }
  606. else if(grid[0][1] == "O" && grid[1][1] == "O" && grid[2][1] == "O")
  607. {
  608. if(PlayerMode.equals("2"))
  609. {
  610. System.out.println(player2Name + " wins!");
  611. Winner = player2Name;
  612. }
  613. else
  614. {
  615. System.out.println("Computer Wins!");
  616. Winner = "computer";
  617. }
  618. }
  619. else if(grid[0][1] == "X" && grid[1][1] == "X" && grid[2][1] == "X")
  620. {
  621. System.out.println(playerName + " Wins!");
  622. Winner = playerName;
  623. }
  624. else if(grid[0][2] == "O" && grid[1][2] == "O" && grid[2][2] == "O")
  625. {
  626. if(PlayerMode.equals("2"))
  627. {
  628. System.out.println(player2Name + " wins!");
  629. Winner = player2Name;
  630. }
  631. else
  632. {
  633. System.out.println("Computer Wins!");
  634. Winner = "computer";
  635. }
  636. }
  637. else if(grid[0][2] == "X" && grid[1][2] == "X" && grid[2][2] == "X")
  638. {
  639. System.out.println(playerName + " Wins!");
  640. Winner = playerName;
  641. }
  642. else if(grid[0][0] == "O" && grid[1][1] == "O" && grid[2][2] == "O")
  643. {
  644. if(PlayerMode.equals("2"))
  645. {
  646. System.out.println(player2Name + " wins!");
  647. Winner = player2Name;
  648. }
  649. else
  650. {
  651. System.out.println("Computer Wins!");
  652. Winner = "computer";
  653. }
  654. }
  655. else if(grid[0][0] == "X" && grid[1][1] == "X" && grid[2][2] == "X")
  656. {
  657. System.out.println(playerName + " Wins!");
  658. Winner = playerName;
  659. }
  660. else if(grid[0][2] == "O" && grid[1][1] == "O" && grid[2][0] == "O")
  661. {
  662. if(PlayerMode.equals("2"))
  663. {
  664. System.out.println(player2Name + " wins!");
  665. Winner = player2Name;
  666. }
  667. else
  668. {
  669. System.out.println("Computer Wins!");
  670. Winner = "computer";
  671. }
  672. }
  673. else if(grid[0][2] == "X" && grid[1][1] == "X" && grid[2][0] == "X")
  674. {
  675. System.out.println(playerName + " Wins!");
  676. Winner = playerName;
  677. }
  678.  
  679. if(Winner == null)
  680. {
  681. checkTie(tieCounter);
  682. }
  683.  
  684.  
  685. } //end of checkWinner method
  686.  
  687. public static void checkTie(int tieCounter) { //method to check if there is a tie
  688.  
  689.  
  690. if(tieCounter == 9)
  691. {
  692. Winner = "Tie";
  693. System.out.println("It is a TIE! Would you like to play again?");
  694. }
  695.  
  696.  
  697. }
  698.  
  699. public static void onePlayer(Scanner input, String[][] grid) {
  700.  
  701. displayGrid(input, grid);
  702. System.out.println();
  703. System.out.println(playerName + "'s" + " move");
  704.  
  705. String humanMove = validateMove(grid, input);
  706. moveTracker[Integer.parseInt(humanMove)] = "X";
  707.  
  708. switch (humanMove)
  709. {
  710. case "0":
  711.  
  712. grid[0][0] = "X";
  713. break;
  714.  
  715. case "1":
  716.  
  717. grid[0][1] = "X";
  718. break;
  719.  
  720. case "2":
  721.  
  722. grid[0][2] = "X";
  723. break;
  724.  
  725. case "3":
  726.  
  727. grid[1][0] = "X";
  728. break;
  729.  
  730. case "4":
  731.  
  732. grid[1][1] = "X";
  733. break;
  734.  
  735. case "5":
  736.  
  737. grid[1][2] = "X";
  738. break;
  739.  
  740. case "6":
  741.  
  742. grid[2][0] = "X";
  743. break;
  744.  
  745. case "7":
  746.  
  747. grid[2][1] = "X";
  748. break;
  749.  
  750. case "8":
  751.  
  752. grid[2][2] = "X";
  753. break;
  754.  
  755. } //end of switch statement
  756.  
  757. tieCounter++;
  758. displayGrid(input, grid);
  759. checkWinner(grid);
  760.  
  761. if(Winner == null)
  762. {
  763. playerComputer(input, grid);
  764. }
  765.  
  766. } //end of player human method
  767.  
  768.  
  769. public static String validateMove(String[][] grid, Scanner input) { //method to validate move
  770.  
  771. String move = input.nextLine();
  772. boolean check = true;
  773.  
  774. while(check)
  775. {
  776. if(!move.matches("[0-8]"))
  777. {
  778. System.out.println("Not a valid Move");
  779. move = input.nextLine();
  780. check = true;
  781. }
  782. else if(move.equals("0") && grid[0][0].matches("[OX]"))
  783. {
  784. System.out.println("Spot taken make another move");
  785. move = input.nextLine();
  786. check = true;
  787.  
  788. }
  789. else if(move.equals("1") && grid[0][1].matches("[OX]"))
  790. {
  791. System.out.println("Spot taken make another move");
  792. move = input.nextLine();
  793. check = true;
  794. }
  795. else if(move.equals("2") && grid[0][2].matches("[OX]"))
  796. {
  797. System.out.println("Spot taken make another move");
  798. move = input.nextLine();
  799. check = true;
  800. }
  801. else if(move.equals("3") && grid[1][0].matches("[OX]"))
  802. {
  803. System.out.println("Spot taken make another move");
  804. move = input.nextLine();
  805. check = true;
  806. }
  807. else if(move.equals("4") && grid[1][1].matches("[OX]"))
  808. {
  809. System.out.println("Spot taken make another move");
  810. move = input.nextLine();
  811. check = true;
  812. }
  813. else if(move.equals("5") && grid[1][2].matches("[OX]"))
  814. {
  815. System.out.println("Spot taken make another move");
  816. move = input.nextLine();
  817. check = true;
  818. }
  819. else if(move.equals("6") && grid[2][0].matches("[OX]"))
  820. {
  821. System.out.println("Spot taken make another move");
  822. move = input.nextLine();
  823. check = true;
  824. }
  825. else if(move.equals("7") && grid[2][1].matches("[OX]"))
  826. {
  827. System.out.println("Spot taken make another move");
  828. move = input.nextLine();
  829. check = true;
  830. }
  831. else if(move.equals("8") && grid[2][2].matches("[OX]"))
  832. {
  833. System.out.println("Spot taken make another move");
  834. move = input.nextLine();
  835. check = true;
  836. }
  837. else
  838. {
  839. check = false;
  840. }
  841.  
  842. }
  843.  
  844.  
  845. return move;
  846.  
  847. }//end of validate method
  848.  
  849.  
  850. public static void splashScreen(Scanner input) { //method to display splash screen
  851.  
  852. System.out.println("***********************");
  853. System.out.println("***********************");
  854. System.out.println("***********************");
  855. System.out.println("***********************");
  856. System.out.println("****** ******");
  857. System.out.println("******TIC-TAC-TOE******");
  858. System.out.println("****** Willy Yao ******");
  859. System.out.println("****** ******");
  860. System.out.println("***********************");
  861. System.out.println("***********************");
  862. System.out.println("***********************");
  863. System.out.println();
  864.  
  865.  
  866. } //end of splashScreen method
  867.  
  868. public static String checkName(Scanner input) { //method to validate name
  869.  
  870. String playerName = input.nextLine();
  871.  
  872. while(!playerName.matches("[A-Za-z]+"))
  873. {
  874. System.out.println("Not a valid name enter another");
  875. playerName = input.nextLine();
  876. }
  877. return playerName;
  878.  
  879. } //end of checkname method
  880.  
  881. } //end of class final10
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement