这篇博客主要来学习如何完成一个猜数字的小游戏
这个小游戏综合了我们之前学习到的循环结构、选择结构,以及随机数的生成的使用。
所以这篇博客非常适合新手阅读哟!
首先我们要完成这个程序,可以分成三个模块
分别是菜单模块、游戏模块、主函数模块
void menu()
void game()
int main()
让我们一步步来完成吧!
首当其冲映入眼帘的是菜单
主要是提供给玩家查看如何做选择
这个是我的游戏菜单 很简略 运行结果如下
所以你更有想法,可以按照自己的想法做一个更好看的菜单哟!
接下来我们看看主函数来怎么写吧!
因为程序的运行的顺序是按照主函数的顺序来执行的,所以我们很需要关注主函数怎么完成
上面完成的菜单模块是至少需要呈现一次的,既然至少需要运行一次,那我们自然而然得应该想到do...while循环吧
do
{
menu();
} while (n);
这样就能确保我们至少会执行一次了
然后呢,要注意这个循环的条件n,这也是我们把1作为play,把0作为exit的原因,如果我们选择的是1那么就可以循环进行游戏,输入0就退出游戏。
但是上面说了至少会执行一次,所以如果只想用0来退出游戏是行不通的,这个时候我们就可以引入选择结构啦!
int n = 0;
do
{
menu();
printf("请选择是否开始游戏 1/0:");
scanf("%d", &n);
switch (n)
{
case 1:
game();
case 0:
printf("退出游戏\n");
break;
default:
printf("搞事是吧你?");
break;
}
} while (n);
所以主函数中的内容大概就是这样啦!
但是千万别忘了,我们还要生成随机数呢
所以要在主函数中加入:
srand((unsigned int)time(NULL));
//生成随机数字
所以主函数内容就是这样啦
还有最最关键的游戏模块,用来实现游戏的执行
那既然是猜数字游戏
所以我们在游戏模块的思路就可以分为生成随机数和比数字大小两部分内容
随机数的生成通过一下代码完成:
int ret = rand() % 100 + 1; //随机数字1 - 100
这里的%100+1 就是限制了我们生成的随机数字在1 - 100之间
可以自己设置范围
接下来就是数字大小的比较
int input 作为我们输入的数字大小
int ret 作为我们生成的随机数字大小
毕竟是猜数字嘛!所以大概率不可能只猜一次就完成游戏
由此我们就要用到循环啦
循环条件设为1,表示一直进行循环,直到我们猜中然后跳出程序为止
注意:这里的循环条件不一定要设为1,可以设定并初始化count,然后程序中每猜测一次count--等方式来限制游戏次数,可以自己尝试哟
while (1)
{
printf("请选择要猜的数字:");
scanf("%d", &input);
if (input > ret)
{
printf("猜大了,请继续猜哟\n");
}
else if (input < ret)
{
printf("猜小了,请继续猜哟\n");
}
else
{
printf("恭喜你猜中啦!\n");
break;
}
}
所以我们的游戏模块就为这样啦!
完整代码为:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
void menu()
{
printf("************************\n");
printf("***** 1.play *****\n");
printf("***** 0.exit *****\n");
printf("************************\n");
}
void game()
{
int input = 0;
int ret = rand() % 100 + 1; //随机数字1 - 100
printf("开始游戏\n");
while (1)
{
printf("请选择要猜的数字:");
scanf("%d", &input);
if (input > ret)
{
printf("猜大了,请继续猜哟\n");
}
else if (input < ret)
{
printf("猜小了,请继续猜哟\n");
}
else
{
printf("恭喜你猜中啦!\n");
break;
}
}
}
int main()
{
srand((unsigned int)time(NULL));
//生成随机数字
int n = 0;
do
{
menu();
printf("请选择是否开始游戏 1/0:");
scanf("%d", &n);
switch (n)
{
case 1:
game();
case 0:
printf("退出游戏\n");
break;
default:
printf("搞事是吧你?");
break;
}
} while (n);
return 0;
}
如果自己有兴趣的话,可以自己去限制游戏的次数,更改猜数字范围等等