文章目录
标题:猜数字小游戏
作者:@Ggggggtm
寄语:你不动手敲代码,还等着我去给你敲吗?!
视频演示:
一、猜数字小游戏的详细功能
- 首先会生成一个菜单,菜单内容: 选择‘1’是开始游戏,‘0’是退出游戏。
- 当我们玩完一局后还可以重新选择继续玩或者退出游戏,也就是可以反复玩。
- 玩完一局后清除当前的全部输出,重新打开菜单。
- 当然,生成的随机数也是要有取值范围的。我们这里生成的随机值范围为1~100。
- 我们猜的数字比生成的数字大的时候,会给出提示:猜大了;猜小了也会有相应提示:猜小了;当猜对的时候会提示:猜对了。
二、猜数字游戏的详解思路
- 我们可以用do-while()循环来控制猜数字游戏,可以实现反复玩的作用。
- 首先我们可以生成一个简单的菜单,自定义一个meau()函数。
- 再次通过swith语句来选择开始游戏或者退出游戏,当然输入不符时要有相应提示;
- 然后我们再实现猜数字的过程,自定义一个game()函数。
- 生成随机数用到rand()函数,头文件<stdlib.h>,而rand()函数生成的随机值范围为0~32767。我们要生成一个1~100的随机值——rand()%100+1。
- 要求每次生成的随机值不相同,我们这里要用到srand()函数,头文件<stdlib.h>。 srand()函数用来初始化rand()函数随机数生成的起点,只需要调用一次就可以,不用多次初始化。如果rand函数每次生成随机值时,srand函数都来初始化随机数起点的话,生成的随机数是连续的。
- 因srand()函数初始化rand()函数随机数生成的起点,要让起点不同,这里还要引用time()函数,time()函数引用了时间戳的概念,头文件<time.h>时间戳也就是计算机从最开始到现在的时间,以秒为单位,是随时变化的。
- 每次猜对后,在重新开始游戏前需要清楚当前的输入,用到system()函数,头文件<stdlib.h>.也就是清屏——system(“cls”)。
do { }while();
三、猜数字小游戏代码实现
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
//猜数字游戏
void meau()
{
printf("***********************\n");
printf("**** 1->play ****\n");
printf("**** 0->exit ****\n");
printf("***********************\n");
}
void game()
{
int ret = rand()%100+1; //生成一个随机值,头文件<stdlib.h>,这里除余+1的意思是生成1~100的随机值
int n = 0;
while (1)
{
printf("请输入所猜的数字:>");
scanf("%d", &n);
if (ret > n)
printf("猜小了\n");
else if (ret < n)
printf("猜大了\n");
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
int input = 0;
do
{
meau(); //打印菜单
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
Sleep(1000);
system("cls");
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,请重新选择。\n");
break;
}
} while (input);
return 0;
}
注意,我们上面代码中的input巧妙的同时控制了switch语句的先择和do-while的判断条件。这里需要深刻的理解一下。
time函数的使用:time(指针)函数引入的是时间戳,是一直变化的。头文件<time.h>,而time函数中的指针可以为空指针。
综上就是我们的猜数字游戏的思路和代码的实现了。
四、总结
- 了解并且掌握rand()函数、srand()函数、time()函数,可以从cplusplus上查阅了解。
- 思路在这里很重要,要提前想好一个整体思路,再逐步实现相应的代码块。
- 熟练掌握switch语句。