2024年java基础猜数游戏

java基础猜数游戏准备工作和建议一 程序的原理 在动手编程之前 得先跟大家说一下这个程序是干什么的 我们可以称呼这个游戏为 数字炸弹 游戏的原理是这样 每一轮电脑从 1 到 100 中随机抽一个整数 电脑请求你猜这个数字 因此你要输入一个 1 到 100 之间的整数 电脑将你输入的数和它抽取的数进行比较 并告知你的数比它的数大了还是小了 然后它会再次让你输入数字 并告诉你比较的结果

大家好,我是讯享网,很高兴认识大家。





✍ 准备工作和建议
一、程序的原理

在动手编程之前,得先跟大家说一下这个程序是干什么的。

我们可以称呼这个游戏为《数字炸弹》。

游戏的原理是这样:

每一轮电脑从 1 到 100 中随机抽一个整数。
电脑请求你猜这个数字,因此你要输入一个 1 到 100 之间的整数。
电脑将你输入的数和它抽取的数进行比较,并告知你的数比它的数大了还是小了。
然后它会再次让你输入数字,并告诉你比较的结果。
一直到你猜到这个数为止,一轮结束。

游戏的目的,当然就是用最少的次数猜到这个“神秘”数字。虽然没有绚丽的图形界面,但是或多或少,这都是你的第一个游戏了,应该值得骄傲。

下面演示了一轮的样式,你要编程来实现它:

这个数字是什么?50

猜小了!

这个数字是什么?75

猜小了!

这个数字是什么?85

猜大了!

这个数字是什么?80

猜大了!

这个数字是什么?78

猜小了!

这个数字是什么?79

太棒了,你猜到了这个神秘数字!!

二、随机抽取一个数

但大家要问了:“如何随机地抽取一个数呢?不知道怎么办啊,臣妾做不到啊。”

诚然,我们还没学习java基础猜数游戏如何来产生一个随机数。让亲爱的电脑兄来做这个是不简单的:它很会做运算,但是要它随机选择一个数,它还不知道怎么做呢。

事实上,为了“尝试”得到一个随机数,我们不得不让电脑来做一些复杂的运算。好吧,归根结底还是做运算。

我们有两个解决方案:

✎ 请用户通过 scanf 函数输入这个神秘数字,那么就需要两个玩家咯。一个选数字,一个猜数字。

✎ 孤注一掷地让电脑来为我们自动产生一个随机数。好处是:只需要一个玩家,可以自娱自乐。缺点是:需要学习该怎么做...

我们来学习用第二种方案编写这个游戏,当然你也可以之后自己编写第一种方案的代码。

为了生成一个随机数,我们要用到 rand() 函数(rand 是英语random的缩写,表示“随机的”)。

顾名思义,这个函数能为我们生成随机数。但是我们还想要这个随机数是在 1 到 100 的整数范围内(如果没有限定范围,那会很复杂)。

我们会用到以下的形式:

srand(time(NULL));
mysteryNumber = (rand() % (MAX - MIN +1)) + MIN;

第一行(srand 函数)用于初始化随机数的生成器。srand 其实是 seed random 的缩写。seed 在英语中是“种子”的意思。

srand 函数只需要在 rand 函数前面调用一次就够了,也只能调用一次,之后你想要调用 rand 函数几次都无所谓,但是每个程序中不能用两次 srand 函数,切记。

上面代码格式中的 MAX 和 MIN 是常量或 const 类型的变量。MAX 是 Maximum 的缩写,表示“最大”。MIN 是 Minimum 的缩写,表示“最小”。顾名思义,MAX 和 MIN 分别是你规定的范围的最大值和最小值。

建议在程序的一开始定义这两个 const 类型的变量:

const int MAX =100, MIN =1;

三、引入的库

为了程序能够顺利运行,我们需要引入三个库:

stdio.h

stdlib.h

time.h

我们以前的课说过库的作用。库里面提供一些定义好的函数,比如 time.h里面就有我们的 time() 函数,stdlib 中有 rand 和 srand 函数。

好啦,我不继续透露了。我们已经说明了游戏的原理,给出了一轮游戏的运行例子,也给出了主要的随机数生成代码,该轮到你来完成游戏的代码了。加油,相信你可以的!

✍ 我的代码

这个游戏的代码可以有不同的版本,你完全可以自己发挥。

#include #include #include int main (int argc, char argv){ int mysteryNumber = 0, guessNumber = 0; const int MAX = 100, MIN = 1; // 生成随机数 srand(time(NULL)); mysteryNumber = (rand() % (MAX - MIN + 1)) + MIN; /* 程序的循环部分, 如果用户没猜中数字,就一直进行循环 */ do { // 请求用户输入所猜数字 printf("这个数字是什么 ? "); scanf("%d", &guessNumber); // 比较用户输入的数字和神秘数字 if (mysteryNumber > guessNumber) printf("猜小了 ! "); else if (mysteryNumber < guessNumber) printf("猜大了 ! "); else printf ("太棒了,你猜到了这个神秘数字 !! "); } while (guessNumber != mysteryNumber); return 0;}

程序的解释(从上到下的顺序):

1.预处理指令就是开头的那三行,以 # 开始。include 是英语“包含,引入”的意思,所以表示引入什么库。

2.变量:这个游戏中,不需要太多变量,只有一个用于记录用户输入的数字的变量 guessNumber,和一个电脑随机抽取的数字 mysteryNumber。guess 表示“猜”,mystery 表示“神秘”,number 表示“数字”。我们也定义了两个常量(const 变量,其实叫只读变量比较准确)MAX 和 MIN,值分别是 100 和 1。这样定义的好处是,如果你后面要改这两个数值,会很方便,直接改这一行的两个值就好了。如果没有用 MAX 和 MIN 而是在程序里每一个地方写 100 和 1 的话,那如果以后要改数值,工作量就大了。

3.随机数:srand 和 rand 那两行,用于生成在 1 和 100 之间的一个随机数,值赋给 mysteryNumber。

4.循环:我选择用 do...while 循环。理论上一个 while 循环也可以做到,但我觉得这里用 do...while 可能更合逻辑。为什么呢?还记得 do...while 循环的特点吗?就是循环体里的指令至少会执行一次,不像 while 循环可能一次也不执行。这里我们至少要让用户输入一次数字,不可能用户一次也不输入就猜到了数字。

5.在每一次进入循环体里运行时,我们都请求用户输入一个数字,并且把这个数字的值赋给 guessNumber 变量,接下来就比较 guessNumber 和 mysteryNumber(需要猜的数字)的大小:

● mysteryNumber 大于 guessNumber,那么输出“猜小了”,继续循环;

● mysteryNumber 小于 guessNumber,那么输出“猜大了”,继续循环;

● mysteryNumber 等于 guessNumber,也就是 else 语句的情况,就说明我们猜对了,输出“太棒了,你猜到了这个神秘数字!”,结束循环。

小讯
上一篇 2024-12-28 19:01
下一篇 2024-12-25 15:50

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/10410.html