文章目录
- 前言
- 一、猜数字游戏规则
- 二、实现过程
-
三、编程思路
- 总结
前言
随着C语言学习的不断深入,我们较为深入地了解到了分支语句和循环语句的语法和使用方法。本次的猜数字游戏就是对于这两种语句的灵活使用。
一、猜数字游戏规则
由电脑生成一个1-100的数字,玩家向电脑中输入一个范围内的数字,如若较电脑所给出的数字大则提示“猜大了”,若小于则提示“猜小了”,若等于则提示“猜对了”,并开启下一轮游戏。
二、实现过程
1.引入库
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("********************\n");
printf("***** 1.play *****\n");
printf("***** 0.exit *****\n");
printf("********************\n");
}
void game()
{
int num = 0;
//生成随机数
int ret=rand()%100+1;//专门用来生成随机数,范围是0~32767
printf("游戏开始,请输入数字:");
while (1)
{
scanf("%d", &num);
if (num < ret)
{
printf("猜小了!\n");
continue;
}
else if (num > ret)
{
printf("猜大了!\n");
continue;
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误");
break;
}
} while (input);
return 0;
}
2.读入数据
代码的实现:(如图)
三、编程思路
首先,是主函数的编写,为了便于玩家开始游戏与结束游戏,我们准备率先设立一个菜单。但在设立菜单的前提我们先定义一个input作为全局变量进行数据的输入。然后就是菜单的设计,以“*”作为边框,里面附上1.play 0.exit作为input的判定。
为了多次重复游戏,我们将整个程序放在一个do while循环中,以input的值作为条件,1为真继续循环,0为假跳出循环。然后我们就可以使用一个swich语句作为选择,1为进入游戏,0为退出游戏,而其他的输入则会提示为“选择错误”并让玩家重新进行输入。
在选择“1”,也就是进入游戏,我们就将整个猜数字游戏的内容放在了game函数中。进入game函数,首先要定义一个玩家输入的数字num,这一步很简单。而然后就来到了这个小程序中的重头戏,随机数的生成。
对于随机数的生成,我们在此引入了一个时间戳的概念。由于时间戳是随着时间的变化而变化的,所以生成的数也足够的随机。因为是一个随机数,并且引用了时间戳,所以我们引用了两个新的库函数<stdlib.h>和<time.h>,在主函数中引用srand函数,里面套用time函数,向time函数中传入一个空指针就生成了一个随机数,与此同时将time函数所生成的随机数强制转化为unsigned int形式,便于后面进行数据处理。然后我们回到game函数中,用rand函数接收生成的随机数,由于我们所取的数值位于1-100之间,所以%100+1,以保证生成的数据为1-100中间的一个数。这也就是我们将time函数的生成数强制转化为无符号整形的原因。
在生成随机数后,在电脑上打印出:“游戏开始,请输入数字:”,提示玩家输入数字进行游戏。这次将内容放在了一个while循环中,条件为“1”,意为始终循环,直到遇到循环中的break。而接下来就是if判断语句的使用,一旦我们输入的数据大于随机数,则提示“猜大了”;小于随机数则提示“猜小了”,两种结果都用了continue使得循环继续,直到猜出结果,break跳出循环,由玩家选择进行下一局还是退出游戏。
总结
以上就是本次我对猜数字小游戏程序的编写过程与讲解,如若有一些问题或者不完美的地方都可以在下面评论区中指出,各位大佬同僚们的帮助与支持都将成为我不懈努力,不断坚持下去的动力!