原文: https://howtodoinjava.com/puzzles/hilo-guessing-game-in-java/

你们中的许多人在您的童年时代一定玩过 HiLo 游戏。 即使不完全相同,游戏也可能与此类似。 很好玩吧? 那如果我们现在成年了怎么办? 让我们以自己的方式再次玩这个游戏。 让我们为此构建一个 Java 程序,然后开始玩这个精彩的游戏 HiLo。

用 Java 编写 HiLo 游戏

在下面的程序中,我尝试用 Java 语言模拟 HiLo 游戏。 我为此版本的游戏设定了两个简单的规则:

  1. 最多猜 6 次密码。
  2. 密码是 1 到 100(含)之间的整数。

每次您猜到一个低于密码的数字(只有 JRE 知道)时,都会打印“LO”。 同样,如果您猜到一个比密码高的数字,则会打印“HI”。 您必须调整下一个猜测,以便能够在六次尝试中猜测正确的数字。

  1. package hilo;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.util.Random;
  6. public class HiLo {
  7. private Random generator;
  8. private int generatedNumber;
  9. private int numberOfAttempts;
  10. BufferedReader reader = null;
  11. public HiLo() {
  12. generator = new Random();
  13. reader = new BufferedReader(new InputStreamReader(System.in));
  14. }
  15. public void start() throws IOException {
  16. boolean wantToPlay = false;
  17. boolean firstTime = true;
  18. do {
  19. System.out.println();
  20. System.out.println();
  21. System.out.println("Want to play the game of Hi and Lo??");
  22. if (wantToPlay = prompt()) {
  23. generatedNumber = generateSecretNumber();
  24. numberOfAttempts = 0;
  25. if (firstTime) {
  26. describeRules();
  27. firstTime = false;
  28. }
  29. playGame();
  30. }
  31. } while (wantToPlay);
  32. System.out.println();
  33. System.out.println("Thanks for playing the game. Hope you loved it !!");
  34. reader.close();
  35. }
  36. private void describeRules() {
  37. System.out.println();
  38. System.out.println("Only 2 Rules:");
  39. System.out.println("1) Guess the secret number in maximum 6 tries.");
  40. System.out.println("2) The secret number is an integer between 1 and 100, inclusive :-)");
  41. System.out.println();
  42. System.out.println();
  43. }
  44. private int generateSecretNumber() {
  45. return (generator.nextInt(100) + 1);
  46. }
  47. private void playGame() throws IOException {
  48. while (numberOfAttempts < 6) {
  49. int guess = getNextGuess();
  50. if (guess > generatedNumber) {
  51. System.out.println("HI");
  52. } else if (guess < generatedNumber) {
  53. System.out.println("LO");
  54. } else {
  55. System.out.println("Brave Soul, You guessed the right number!! Congratulations !!");
  56. return;
  57. }
  58. numberOfAttempts++;
  59. }
  60. System.out.println("Sorry, you didn't guess the right number in six attempts. In other two words, YOU LOST !!!!");
  61. System.out.println("The secret number was " + generatedNumber);
  62. }
  63. private boolean prompt() {
  64. boolean answer = false;
  65. try {
  66. boolean inputOk = false;
  67. while (!inputOk) {
  68. System.out.print("Y / N : ");
  69. String input = reader.readLine();
  70. if (input.equalsIgnoreCase("y")) {
  71. inputOk = true;
  72. answer = true;
  73. } else if (input.equalsIgnoreCase("n")) {
  74. inputOk = true;
  75. answer = false;
  76. } else {
  77. System.out.println("Ohh come on. Even Mr. Bean knows where are 'y' and 'n' in the keyboard?? Please try again:");
  78. }
  79. }
  80. } catch (IOException e) {
  81. e.printStackTrace();
  82. System.exit(-1);
  83. }
  84. return answer;
  85. }
  86. private int getNextGuess() throws IOException {
  87. boolean inputOk = false;
  88. int number = 0;
  89. String input = null;
  90. while (!inputOk) {
  91. try {
  92. System.out.print("Please guess the secret number: ");
  93. input = reader.readLine();
  94. number = Integer.parseInt(input);
  95. if (number >= 1 && number <= 100) {
  96. inputOk = true;
  97. } else {
  98. System.out.println("Really? You didn't read the rules boy. Your number is not between 1 and 100 (" + number + ").");
  99. }
  100. } catch (NumberFormatException e) {
  101. System.out.println("Invalid input (" + input + ")");
  102. }
  103. }
  104. return number;
  105. }
  106. }

玩 HiLo 游戏

现在,游戏已准备就绪。 播放吧。

  1. package hilo;
  2. import java.io.IOException;
  3. public class PlayGame
  4. {
  5. public static void main(String[] args)
  6. {
  7. HiLo hiLo = new HiLo();
  8. try {
  9. hiLo.start();
  10. } catch (IOException e) {
  11. e.printStackTrace();
  12. }
  13. }
  14. }
  15. Output:
  16. Want to play the game of Hi and Lo??
  17. Y / N : y
  18. Only 2 Rules:
  19. 1) Guess the secret number in maximum 6 tries.
  20. 2) The secret number is an integer between 1 and 100, inclusive.
  21. Please guess the secret number: 40
  22. LO
  23. Please guess the secret number: 60
  24. LO
  25. Please guess the secret number: 80
  26. HI
  27. Please guess the secret number: 70
  28. LO
  29. Please guess the secret number: 75
  30. LO
  31. Please guess the secret number: 77
  32. HI
  33. Sorry, you didn't guess the right number in six attempts. In other two words, YOU LOST !!!!
  34. The secret number was 76

希望您喜欢这个游戏。

祝您学习愉快!