Main.java 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. PlayField field = new PlayField();
  5. int nextPos;
  6. boolean won;
  7. Scanner myScanner = new Scanner(System.in);
  8. do {
  9. System.out.println("Where do you want to set your 'x'? (1-9)");
  10. do {
  11. //Check input
  12. if(!myScanner.hasNextInt()) {
  13. System.out.println("Invalid input. Try again.");
  14. myScanner.nextLine();
  15. continue;
  16. }
  17. nextPos = myScanner.nextInt();
  18. if(nextPos < 1 || nextPos > 9) {
  19. System.out.println("Invalid int. 1 to 9 expected.");
  20. myScanner.nextLine();
  21. continue;
  22. }
  23. if(field.getPos(nextPos) != 0) {
  24. System.out.println("Position not free.");
  25. myScanner.nextLine();
  26. continue;
  27. }
  28. //Player's turn
  29. won = field.updatePos(nextPos, 1);
  30. if(won) {
  31. printWinner(1);
  32. if(!askPlayAgain(myScanner)) {
  33. myScanner.close();
  34. System.exit(0);
  35. }
  36. field.resetField();
  37. break;
  38. }
  39. if(field.isDraw()) {
  40. System.out.println("Draw.");
  41. if(!askPlayAgain(myScanner)) {
  42. System.out.println("Game closed.");
  43. myScanner.close();
  44. System.exit(0);
  45. }
  46. field.resetField();
  47. break;
  48. }
  49. //Opponent's turn
  50. System.out.println("Opponents turn:");
  51. won = field.oppMove();
  52. if(won) {
  53. printWinner(2);
  54. if(!askPlayAgain(myScanner)) {
  55. System.out.println("Game closed.");
  56. myScanner.close();
  57. System.exit(0);
  58. }
  59. field.resetField();
  60. break;
  61. }
  62. if(field.isDraw()) {
  63. System.out.println("Draw.");
  64. if(!askPlayAgain(myScanner)) {
  65. System.out.println("Game closed.");
  66. myScanner.close();
  67. System.exit(0);
  68. }
  69. field.resetField();
  70. break;
  71. }
  72. break;
  73. } while(true);
  74. } while (true);
  75. }
  76. public static void printWinner(int player) {
  77. if(player == 1) {
  78. System.out.println("Player 'x' has won.");
  79. } else {
  80. System.out.println("Player 'o' has won.");
  81. }
  82. }
  83. private static boolean askPlayAgain(Scanner in) {
  84. String again;
  85. System.out.println("New game? Y/N");
  86. do {
  87. again = in.next();
  88. if(again.equals("Y")) {
  89. return true;
  90. } else if(again.equals("N")) {
  91. return false;
  92. } else {
  93. System.out.println("Invalid input. Try again.");
  94. }
  95. } while(true);
  96. }
  97. }