循环判断总结(下)

猜数字的游戏

善假于物也

  • Random方法和readInt方法是两个工具,可以完成一个明确具体的功能。

游戏功能

  • 猜数字:生成一个指定范围内的随机正整数,从命令行读取一个整数,如果和随机数相同,就 算猜中。

  • 固定随机数的范围

  • 支持每次猜数字游戏的猜测次数,在指定次数内没猜对,则猜数字失败,否则就是成功。 可以支持退出游戏

  • 输出剩余的猜测次数

  • 每次猜测后,如果未猜中,则提示本次猜测的数字比目标数字大还是小

  • 游戏结束后,输出猜数字游戏的统计

  • 没有猜中,要输出这次的目标数字

  • 可以设置随机数的范围,可以设置最大猜测次数。

import java.util.Scanner;

public class Example02 {
  public static void main(String[] args) {
      //创建scanner来读取用户的输入
      Scanner in = new Scanner(System.in);

      //游戏设置
      int rangeStart = 30;
      int rangeEnd = 50;
      int guessTotal = 5;
      //允许猜的次数

      //游戏统计
      int totalGameCount = 0;
      //猜的次数
      int correctGuessCount = 0;
      //猜对的次数

      //是否结束游戏
      boolean gameEnd = false;


      while (!gameEnd)
      //如果输入的结果为负数那么程序就终止循环
      {//生成指定范围内的随机数
          int mod = rangeEnd - rangeStart;
          //start和end之间的模,结果加上rangeStart就必然是范围内的数字
          if (rangeStart < 0 || rangeEnd < 0) {
              System.out.println("开始和结束必须是正数或者0:(" + rangeStart + "," + rangeEnd + ")");
          }
          if (mod <= 1) {
              System.out.println("非法的数字范围:(" + rangeStart + "," + rangeEnd + ")");
          }
          int Bigrandom = (int) (Math.random() * (rangeEnd * 100));
          //设置一个足够大的随机数范围
          int numberToGuess = (Bigrandom % mod) + rangeStart;
          //设置随机数
          //System.out.println(numberToGuess);
          if (numberToGuess <= rangeStart) {
              numberToGuess = rangeStart + 1;
          } else if (numberToGuess > rangeEnd) {
              numberToGuess = rangeEnd - 1;
          }
          //剩余的猜测次数
          int leftToGuess = guessTotal;

          boolean currentGameCounted = false;
          boolean currentGuess = false;

          System.out.println("请输入要进行猜测的数字,该数字的范围在(" + rangeStart + ", " + rangeEnd + "),输入任意负数结束游戏");
          while (leftToGuess > 0) {
              System.out.println("剩余的猜数次数:"+leftToGuess+"次");
              leftToGuess--;
              //猜一次就减少一次 次数

              int Guess = in.nextInt();
              //用户输入一个数字,Guess变量接收
              if (Guess<0){
                  gameEnd = true;
                  System.out.println("退出游戏!");
                  break;
              }
              if (!currentGameCounted){
                  totalGameCount++;
                  currentGameCounted = true;
                  //通过currentGameCounted变量来进行是否真的有在进行游戏的判断
                  //如果输入了-1就不算作一次游戏的次数
              }
              if (Guess > numberToGuess) {
                  System.out.println("你输入的数值大于要猜的数值");
              }
              else if (Guess < numberToGuess) {
                  System.out.println("你输入的值小于要猜的数值");
              }
              else {
                  correctGuessCount += 1;
                  currentGuess = true;
                  System.out.println("猜对了");
                  break;
              }
          }
          if (!currentGuess){
              System.out.println("本次游戏要猜的数字为:"+numberToGuess);
          }
          System.out.println("游戏结束,你猜对了"+correctGuessCount+"次,猜了"+totalGameCount+"次");
          //System.out.println("感谢游玩!");
          //break;
      }


  }
}
posted @   comia  阅读(171)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示