Java编程入门:猜数字游戏

目录

1.介绍及功能

2.具体介绍

前置知识

导入必要的类和库

设置游戏参数

初始化游戏

进行游戏循环

结束游戏并统计结果

3.完整代码

4.运行展示


 

1.介绍及功能

介绍: 猜数字游戏是一种经典的猜测游戏,玩家需要根据提示猜测一个目标数字。在本篇文章中,我们将使用Java编程语言来实现一个简单的猜数字游戏。

功能:1.可以自定义生成数字区间

           2.可以设置玩家猜的次数

           3.可以统计游戏进行了几次

2.具体介绍

前置知识

Random 类提供了丰富的随机数生成方法,可以产生 boolean、int、long、float、byte 数组以及 double 类型的随机数,这是它与 random() 方法最大的不同之处。random() 方法只能产生 double 类型的 0~1 的随机数。

导入必要的类和库

在开始编写代码之前,我们需要导入java.util.Scanner类,以便从用户输入中获取数据。这个类提供了一种方便的方式来读取用户输入。

import java.util.Scanner;

 

设置游戏参数

我们需要设置一些游戏参数,例如目标数字的范围、猜测次数等。在这个例子中,我们将设置目标数字的范围为99到66之间(不包括这两个数字),猜测次数为3次。

int targetMin = 66;
int targetMax = 99;
int maxAttempts = 3;

 

初始化游戏

在每次游戏开始之前,我们需要进行一些初始化操作。这包括生成一个随机的目标数字,并打印游戏的提示信息。

int target = generateRandomNumber(targetMin, targetMax);
System.out.println("目标已经生成,数字在" + targetMin + "到" + targetMax + "之间,不包含这两个数字," + maxAttempts + "次机会,输入-1游戏结束");

 

进行游戏循环

在游戏循环中,玩家将根据提示输入猜测的数字,并根据猜测结果进行相应的处理。循环将继续,直到玩家猜中目标数字或猜测次数用尽。

while (attempts > 0) {
    // 获取玩家输入的猜测数字
    int guess = scanner.nextInt();
    attempts--;

    // 处理玩家输入的猜测数字
    if (guess == -1) {
        // 玩家选择结束游戏
        gameWon = true;
        gameOver = true;
        break;
    } else if (guess >= targetMax || guess <= targetMin) {
        // 玩家输入的数字超出范围
        System.out.println("请输入在" + targetMin + "到" + targetMax + "之间的数");
        continue;
    } else if (guess == target) {
        // 玩家猜中目标数字
        gameWon = true;
        System.out.println("恭喜你猜对了,这次数字是" + target + "本次共猜了" + (maxAttempts - attempts) + "次");
        break;
    } else if (guess > target) {
        // 玩家猜的数字比目标值大
        System.out.println("你猜的数字比目标值大");
    } else {
        // 玩家猜的数字比目标值小
        System.out.println("你输入的值比目标值小");
    }
}

 

结束游戏并统计结果

当游戏结束时,我们将打印出玩家的游戏统计信息,包括玩了多少把游戏和猜对了多少次。

System.out.println("本次共玩了" + totalGames + "把,其中猜对了" + totalWins + "把"); 

3.完整代码

import java.util.Scanner;

public class shuzhiyouxi {

    public static void main(String[] args) {
        String redText = "\u001B[31m";
        String blueText = "\u001B[34m";
        String resetText = "\u001B[0m";
        Scanner in = new Scanner(System.in);
        //游戏设置
        int zhuidashu = 99;
        int zhuixiaoshu = 66;
        int youxichishu = 3;
        //游戏统计
        int youxijinxingjichi = 0;
        int youxiyinglejichi = 0;
        //是否结束游戏
        boolean jeishu = false;

        while (!jeishu) {
            //游戏初始化
            int n = youxichishu;
            int cha = zhuidashu - zhuixiaoshu;
            double x = Math.random();
            int mo = ((int) (x * cha * 100)) % cha;
            mo += zhuixiaoshu;
            //System.out.println(mo);  生成数字的值
            if (mo <= zhuixiaoshu) {
                mo = zhuixiaoshu + 1;
            }
            if (mo >= zhuidashu) {
                mo = zhuidashu - 1;
            }

            System.out.println(blueText+"============================猜数字==========================="+redText);
            System.out.println(redText+"目标已经生成,数字在" + zhuixiaoshu + "到" + zhuidashu + "之间,不包含这两个数字," + n + "次机会,输入-1游戏结束"+resetText);
            //本次游戏开始
            boolean kaishi = true;
            //本次是否猜中
            boolean jeishu1 = false;

            while (n > 0) {
                if (!jeishu1)
                    System.out.println("还有" + n + "次机会,请输入所猜的数字");
                int shuru = in.nextInt();
                n--;
                if (shuru == -1) {

                    jeishu1 = true;
                    jeishu = true;
                    break;
                }
                if (shuru >= zhuidashu || shuru <= zhuixiaoshu) {
                    System.out.println("请输入在" + zhuixiaoshu + "到" + zhuidashu + "之间的数");
                    continue;
                }
                if (kaishi) {
                    youxijinxingjichi++;
                    kaishi = false;
                }

                if (shuru == mo) {
                    youxiyinglejichi++;
                    jeishu1 = true;
                    System.out.println("恭喜你猜对了,这次数字是" + mo + "本次共猜了" + (youxichishu - n) + "次");
                    break;


                } else if (shuru > mo) {
                    System.out.println("你猜的数字比目标值大");
                } else {
                    System.out.println("你输入的值比目标值小");
                }
            }
            if (!jeishu1) {
                System.out.println("很遗憾本次没有猜中,本次数字是:" + mo);
                boolean jieshu = false;
            }
        }
        System.out.println("本次共玩了" + youxijinxingjichi + "把,其中猜对了" + youxiyinglejichi + "把");
    }
}

4.运行展示

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java经典编程源码例程,可以做为你的学习设计参考。 第1章 Java语言概述 1 实例001 输出“Hello World” 2 实例002 输出控制台传递的参数 2 实例003 输出由“*”组成的三角形 3 实例004 输出符号表情 5 第2章 Eclipse开发工具 6 实例005 下载并运行Eclipse工具 7 实例006 为Eclipse安装中文包 8 实例007 使用Eclipse注释代码 10 实例008 使用Eclipse格式化代码 11 实例009 安装WindowBuilder插件 12 实例010 开发计算器界面 14 第3章 Java语言基础 15 实例011 输出错误信息与调试信息 16 实例012 从控制台接收输入字符 16 实例013 重定向输出流实现程序日志 17 实例014 自动类型转换与强制类型转换 19 实例015 加密可以这样简单(位运算) 20 实例016 用三元运算符判断奇数和偶数 21 实例017 不用乘法运算符实现2×16 22 实例018 实现两个变量的互换 (不借助第3个变量) 23 第4章 流程控制 25 实例019 判断某一年是否为闰年 26 实例020 验证登录信息的合法性 27 实例021 为新员工分配部门 28 实例022 用switch语句根据消费 金额计算折扣 29 实例023 判断用户输入月份的季节 31 实例024 使用while循环语句与自增 运算符循环遍历数组 33 实例025 使用for循环输出杨辉三角形 34 实例026 使用嵌套循环在控制台上 输出九九乘法表 35 实例027 使用while循环计算1+ 1/2!+1/3!…1/20! 36 实例028 使用for循环输出空心的菱形 38 实例029 终止循环体 39 实例030 循环体的过滤器 41 第5章 数组及其常用操作 43 实例031 获取一维数组的最小值 44 实例032 将二维数组中的行列互换 45 实例033 利用数组随机抽取幸运观众 47 实例034 用数组设置JTable表格的 列名与列宽 49 实例035 使用按钮控件数组实现 计算器界面 51 实例036 通过复选框控件数组实现 添加多个复选框控件 52 实例037 使用选择排序法对数组排序 53 实例038 使用冒泡排序法对数组排序 55 实例039 使用快速排序法对数组排序 57 实例040 使用直接插入法对数组排序 59 实例041 使用sort()方法对数组排序 61 实例042 反转数组中元素的顺序 63 第6章 面向对象入门 65 实例043 自定义图书类 66 实例044 温度单位转换工具 67 实例045 成员变量的默认初始化值 68 实例046 单例模式的应用 69 实例047 汉诺塔问题求解 70 实例048 编写同名的方法 71 实例049 构造方法的应用 72 实例050 统计图书的销售量 73 实例051 两只完全相同的宠物 74 实例052 重新计算对象的哈希码 76 实例053 使用字符串输出对象 77 实例054 Java对象的假克隆 78 实例055 Java对象的浅克隆 80 实例056 Java对象的深克隆 82 实例057 序列化与对象克隆 84 实例058 深克隆效率的比较 87 第7章 面向对象进阶 89 实例059 经理与员工的差异 90 实例060 重写父类中的方法 92 实例061 计算几何图形的面积 93 实例062 简单的汽车销售商场 95 实例063 使用Comparable接口自定 义排序 96 实例064 策略模式的简单应用 98 实例065 适配器模式的简单应用 100 实例066 普通内部类的简单应用 102 实例067 局部内部类的简单应用 103 实例068 匿名内部类的简单应用 104 实例069 静态内部类的简单应用 105 实例070 实例化Class类的几种方式 107 实例071 查看类的声明 108 实例072 查看类的成员 110 实例073 查看内部类信息 112 实例074 动态设置类的私有域 113 实例075 动态调用类中方法 115 实例076 动态实例化类 116 实例077 创建长度可变的数组 117 实例078 利用反射重写toString()方法 119 第8章 字符串与包装类 121 实例079 将数字格式化为货币字符串 122 实例080 货币金额大写格式 123 实例081 String类格式化当前日期 125 实例082 字符串大小写转换 1

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值