猜猜我是谁“rand函数,与srand函数“_猜数字游戏今日份学习”rand函数和srand函数“

本文简介:

相信大家都知道猜数字游戏吧,我想好一个1-100之间数然后你来猜,如果你猜的数比我想的数大,我则告诉你猜大了,比我想的数要小,则告诉你猜小了。看看谁能以最少的次数来猜对呢?🤨

🛸下面我们带着这个游戏来进入代码🛸

猜数字游戏:

如何来制作这个游戏呢?我们先得想好大概的架构。

我的思维:1.首先得有选择性游戏菜单。

    2.能进行多次游玩。

    3.使其具有可玩性。

带着这份思维进行代码实现:

一,游戏菜单

我们平常玩游戏是不是都有游戏菜单供我们选择,这就利用到C语言的输入输出函数👇

printf("##################\n");
printf("##1.play 0.over##\n");
printf("##################\n");

这样是不是很像一个简单的游戏菜单~

光有菜单可不行,我们得让这个菜单可执行起来呀!

#include<stdio.h>
int main()
{
int input=0;
printf("##################\n");
printf("##1.play 0.over##\n");
printf("##################\n");
printf("请选择:");
scanf("%d",&input);//接收菜单选择
if(input==1)
{
printf("猜数字\n");//
}
else
printf("游戏结束 OVER\n");//结束游戏
}

这样我们的菜单就可以执行了。

来看看效果:

猜猜我是谁“rand函数,与srand函数“_猜数字游戏_02感觉还不错~就是只能玩一次,跟我们的思维”可多次游玩”不符合~

多次游玩是不是就能联想到我们的“循环语句“呢?

这里我就用到了”循环语句“的”do while“:让其先执行一次,再根据我们的选择来决定是否继续游玩(最合适不过了😁)。

变代码:

#include<stdio.h>
int main()
{
int input = 0;
do
{
printf("##################\n");
printf("##1.play 0.over##\n");
printf("##################\n");
printf("请选择:");
scanf("%d", &input);//接收菜单选择
if (input == 1)
printf("猜数字\n");//选择1游戏实现
else if (input == 0)//选择0结束游戏
printf("游戏结束 OVER\n");//结束游戏
else//除了1或者0则选择错误
printf("选择错误,重新选择\n");
} while (input);
}

看效果:

猜猜我是谁“rand函数,与srand函数“_猜数字游戏_03

游戏的大概运行逻辑就很完美啦!

下面重要环节就是游戏的实现👇

二,实现游戏

实现该游戏,肯定得是让计算机给我们出一个1~100之间的数字让我们猜,问题就转移到计算机如何产生1~100之间的数呢?

这就可以利用rand函数:​​rand函数介绍​

猜猜我是谁“rand函数,与srand函数“_猜数字游戏_04

可以产生0~​​RAND_MAX​

那就好办了, 定义一个变量接收计算机随机产生的数就行啦,再把产生的数模上100就能产生1~100之间的数!👉“num=rand()%100”

尝试尝试~上代码:

#include<stdio.h>
void game()
{
int count=0;//记录猜的次数
int num=rand()%100;
int guess=0;
do
{
count++;
printf("猜1~100之间的数:");
scanf("%d",&guess);
if(guess<num)
printf("猜小了\n");//猜小了继续猜
else if(guess>num)
printf("猜大了\n");//猜大了继续猜
else
printf("猜对了,猜了%d次\n",count);//猜对了退出游戏
}while(guess!=num);
}
int main()
{
int input = 0;
do
{
printf("##################\n");
printf("##1.play 0.over##\n");
printf("##################\n");
printf("请选择:");
scanf("%d", &input);//接收菜单选择
if (input == 1)
game();//选择1游戏实现
else if (input == 0)//选择0结束游戏
printf("游戏结束 OVER\n");//结束游戏
else//除了1或者0则选择错误
printf("选择错误,重新选择\n");
} while (input);
}

猜猜我是谁“rand函数,与srand函数“_猜数字游戏_05

效果很不错👏👏

但是这里还是有一个小小的问题:每次运行程序第一次玩都是同样的数,且后几次都一样,这样我们玩多了就记住了答案那是不是就没有可玩性了呢。

猜猜我是谁“rand函数,与srand函数“_猜数字游戏_06

虽然rand函数可以产生随机值,但每次运行程序产生的随机值都一样导致游戏不够灵活,如何解决这个问题呢?

这里我再介绍一个函数​​“srand”​

猜猜我是谁“rand函数,与srand函数“_猜数字游戏_07

srand函数的参数需要一个随机值才能运行rand函数产生的随机数更随机起来(感觉有点怪怪的😅)

我们本就需要一个随机值,它还需要我们给它一个随机值才能产生随机值,这是不是太矛盾了😒

没关系,不就一个随机值嘛!我们想想什么数一直在变化呢?

没错就是时间!如何获取时间呢?那就是“time”函数了!

那它如何使用呢?

看代码👇

srand((unsigned int)time(NULL));

time 函数形参需要一个指针才能返回时间,我们给其空指针“NULL”即可,再将time函数返回的时间强制转换成srand函数需要的形参数就成功了!

小提示:"rand"和“srand”函数头文件为:<stdlib.h>

"time"函数头文件为:<time.h>         记得引用噢!

来看最后的成果

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void game()
{
int count=0;//记录猜的次数
int num=rand()%100;
int guess=0;
do
{
count++;
printf("猜1~100之间的数:");
scanf("%d",&guess);
if(guess<num)
printf("猜小了\n");//猜小了继续猜
else if(guess>num)
printf("猜大了\n");//猜大了继续猜
else
printf("猜对了,猜了%d次\n",count);//猜对了退出游戏
}while(guess!=num);
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
printf("##################\n");
printf("##1.play 0.over##\n");
printf("##################\n");
printf("请选择:");
scanf("%d", &input);//接收菜单选择
if (input == 1)
game();//选择1游戏实现
else if (input == 0)//选择0结束游戏
printf("游戏结束 OVER\n");//结束游戏
else//除了1或者0则选择错误
printf("选择错误,重新选择\n");
} while (input);
}

猜猜我是谁“rand函数,与srand函数“_猜数字游戏_08

🎈完美结局🎈

结束语

试一下,你会比你自己想象中的还要强大,青春由磨砺而出彩,人生因奋斗而升华!

🥰猜猜我是谁“rand函数,与srand函数“_猜数字游戏_09