【C语言】-猜数游戏-简单版-创新互联
- 🍑游戏内容概述
玩家需要在1-100之间猜一个数,每猜一次程序就会提示一次是猜大了或猜小了,直至猜中为止
成都创新互联专注于企业营销型网站、网站重做改版、额尔古纳网站定制设计、自适应品牌网站建设、H5技术、成都商城网站开发、集团公司官网建设、外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为额尔古纳等各大城市提供网站开发制作服务。- 🍎各板块描述
(1)简单主界面
玩家需通过输入1或0来选择是否进行游戏,通过简单的输出函数printf即可实现主界面的打印
代码如下:
void menu()
{
printf("************\n");
printf("* 1.Play *\n");
printf("* 0.Exit *\n");
printf("************\n");
printf("intput to choose:\n");
}
(2)游戏实现
游戏的实现可分为两部分,随机数的生成与猜数环节
随机数的生成:
这里需要借助三个函数来实现,分别是:
rand()——生成的随机数,头文件为
srand()——随机数的生成器,需和rand()函数配套使用,头文件为
time()——时间戳函数,需要一个不断变化的数来作为生成随机数的来源,头文件为
代码如下:
srand((unsigned int)time(NULL));
int random_num = rand() % 100 + 1;
其中函数用法简单解释:
对srand():
由其定义可看出其返回值为空,其参数为unsigne int型(seed可以理解为随机数的来源),故在调用该函数时需要给它传一个unsigne int型的值
对time():
首先,其中的返回与参数类型time_t通过编译器(VS2022)的转到定义查看可知其本质上是int型:
故当我们将其作为srand函数的参数时需对其进行强制类型转化为unsigned int型
其次,time函数的参数为指针变量,但其实我们不需要传具体的参数,故直接传一个空指针NULL
对rand():
可以看出,我们需先在rand()之前使用srand()来生成随机数,随机数生成完毕后rand()返回的就是生成的随机数,故可直接用它进行赋值,整合起来也就有了上面那两行代码
(PS:以上关于函数的声明、定义及使用方法等均来自MSDN)
猜数环节:
循环输入猜的数,和随机数进行对比,直至猜中跳出循环
代码如下:
int guess_num = 0;
while (1)
{
scanf("%d", &guess_num);
if (guess_num< random_num)
printf("Bigger\n");
else if (guess_num >random_num)
printf("Smaller\n");
else if (guess_num == random_num)
{
printf("Bingo!\n");
break;
}
}
整合起来放到一个game()函数中:
代码如下:
void game()
{
srand((unsigned int)time(NULL));
int random_num = rand() % 100 + 1;
//随机生成1-100之间的数
printf("Start Guessing!\n");
int guess_num = 0;
while (1)
{
scanf("%d", &guess_num);
if (guess_num< random_num)
printf("Bigger\n");
else if (guess_num >random_num)
printf("Smaller\n");
else if (guess_num == random_num)
{
printf("Bingo!\n");
break;
}
}
}
(3)逻辑连接
在前两步的基础上进行主函数的编写:我们需要先打印一次菜单,随后进行选择是否进行游戏,故选择采用do while的循环语句。在循环中,若输入1则执行(2)中实现的game()函数;若输入0则退出循环,结束游戏(程序);若输入了其他数,则提示输入非法并重新输入
代码如下:
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
case 0:
break;
default:
printf("Input error! Please input again\n");
}
} while (input);
- 🍅完整代码
完整的代码如下:
#include#include#include//功能描述:
//1. 输入1和0选择是否进行游戏
//2. 生成随机数
//3. 每次猜数后给予相应反馈——猜大、猜小、猜中
//打印菜单
void menu()
{
printf("************\n");
printf("* 1.Play *\n");
printf("* 0.Exit *\n");
printf("************\n");
printf("intput to choose:\n");
}
//游戏实现
void game()
{
srand((unsigned int)time(NULL));
int random_num = rand() % 100 + 1;
//随机生成1-100之间的数
printf("Start Guessing!\n");
int guess_num = 0;
while (1)
{
scanf("%d", &guess_num);
if (guess_num< random_num)
printf("Bigger\n");
else if (guess_num >random_num)
printf("Smaller\n");
else if (guess_num == random_num)
{
printf("Bingo!\n");
break;
}
}
}
int main()
{
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
game();
case 0:
break;
default:
printf("Input error! Please input again\n");
}
} while (input);
return 0;
}
运行结果:
- 🥦趣味拓展
在上述的基础上还可以创建一个变量来限定猜的次数,若在指定的次数内没猜对则可执行一些“惩罚”,比如关机什么的😂,大家还有什么好玩的建议可以留个评论呀~😁
看完觉得有觉得帮助的话不妨点赞收藏鼓励一下,有疑问或看不懂的地方或有可优化的部分还恳请朋友们留个评论,多多指点,谢谢朋友们!🌹🌹🌹
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享标题:【C语言】-猜数游戏-简单版-创新互联
本文路径:http://myzitong.com/article/dosesc.html