java练习_Java练习:一个猜数游戏

@Author : By Runsen

效果展现

猜数字游戏是一个简单,有趣的小游戏。游戏者通过输入一个指定区间的数字,与系统产生的随机数进行对比,然后输出相应的结果。

游戏运行时产生一个0-10之间的随机整数,要求用户从控制台输入数字

若输入的数字比产生的数字小,则输出:“太小了,再大一点!”;

若输入的数字比产生的数字大,则输出:“太大了,再小一点!”,

若输入的数字和产生的数字相等,则输出:“恭喜你猜对了!”然后退出程序

7788174044375cad3040934383e1866b.png

功能要求

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

固定随机数的范围

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

可以支持退出游戏

输出剩余的猜测次数

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

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

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

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

功能分析

第一,需要是设置猜数的范围,和次数,如果超过这个次数就直over了。

第二,还有统计每次游戏的次数和猜中游戏的次数

第三,如果输入-1就是结束游戏,因此需要一个变量判断是不是在运行游戏。

最后,就是需要通过 Math.random生成一个随机数,判断猜数是不是相等,相等就是猜中,没有就次数加一。

第一步

我就设置1到8,一共猜数的次数是五次,

// 创建Scanner从控制台读取输入Scanner in = new Scanner(System.in);// 游戏设置int rangeStart = 1;int rangeEnd = 8;int guessTotal = 5;

第二步

// 游戏统计int totalGameCount = 0;int totalCorrectCount = 0;

第三步

boolean stopGame = false;while (!stopGame) {    // 初始化本次游戏的变量    System.out.println("=================== 猜 数 字 ===================");    System.out.println("目标数已经生成,数字在" + rangeStart + "到" + rangeEnd + "之间," +            "不包括这两个数。共有" + guessTotal + "次猜测的机会。输入-1随时结束游戏。");    // 本次游戏是否开始了    boolean gameStart = true;    // 本次游戏是否开始了    boolean gameStart = true;    // 本次是否猜中数字    boolean guessCorrect = false;    while (guessLeft > 0) {}

最后一步

最后一步,一步的逻辑比较复杂,我直接上所有的代码

import java.util.Scanner;public class GuessNumber {    public static void main(String[] args) {        // 创建Scanner从控制台读取输入        Scanner in = new Scanner(System.in);        // 游戏设置        int rangeStart = 1;        int rangeEnd = 8;        int guessTotal = 5;        // 游戏统计        int totalGameCount = 0;        int totalCorrectCount = 0;        // 是否结束游戏        boolean stopGame = false;        while (!stopGame) {            // 初始化本次游戏的变量            // 游戏次数            int guessLeft = guessTotal;            // 区间            int mod = rangeEnd - rangeStart;            // 随机数 0到1的小数            double randNum = Math.random();            System.out.println(randNum);            // 求余数, 保证是0到8            int num = ((int) (randNum * rangeEnd * 100)) % mod;            System.out.println(num);            num += rangeStart;            System.out.println(num);            // 存在 num等于8或者1的清空            if (num <= rangeStart) {                num = rangeStart + 1;            }            if (num >= rangeEnd) {                num = rangeEnd - 1;            }            System.out.println("=================== 猜 数 字 ===================");            System.out.println("目标数已经生成,数字在" + rangeStart + "到" + rangeEnd + "之间," +                    "不包括这两个数。共有" + guessTotal + "次猜测的机会。输入-1随时结束游戏。");            // 本次游戏是否开始了            boolean gameStart = true;            // 本次是否猜中数字            boolean guessCorrect = false;            while (guessLeft > 0) {                System.out.println("还有" + guessLeft + "次机会,请输入猜测的数字,回车确认");                int guessNum = in.nextInt();                // 输入-1,结束游戏                if (guessNum == -1) {                    stopGame = true;                    break;                }                if (guessNum <= rangeStart || guessNum >= rangeEnd) {                    System.out.println("请输入在" + rangeStart + "到" + rangeEnd + "之间,的数字,不包括这两个数。");                    continue;                }                // 只要至少猜过一次,就算玩过了。                if (gameStart) {                    totalGameCount++;                    gameStart = false;                }                // 可以用的猜测次数减1                guessLeft--;                if (guessNum == num) {                    totalCorrectCount++;                    guessCorrect = true;                    System.out.println("恭喜你猜对了!这次的数字就是" + num +                            "。本次你共猜了" + (guessTotal - guessLeft) + "次。");                    break;                } else if (guessNum > num) {                    System.out.println("猜测的数字比目标数字大。");                } else {                    System.out.println("猜测的数字比目标数字小。");                }            }            if (!guessCorrect) {                System.out.println("本次的目标数字是" + num + "。这次没有猜中。");            }        }        System.out.println("共进行了" + totalGameCount + "次游戏,其中正确的为" + totalCorrectCount + "次");    }}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值