目录
需求分析:
首先,在设计这个小游戏的时候,你得分析需要什么?根据我的分析,首先需要能让游戏跑起来吧
如果你游戏都跑不起来,那这游戏不就废了吗。其次就是设计菜单界面,进去后你能看到菜单供你
选择玩还是不玩,再其次就是设计游戏的难度,这样一个小小的猜数游戏也会变得很有趣。
以下是实现这个猜数游戏的函数声明:
- void game1();//简单
- void game2();//困难
- void game3();//随机
- void menu();//菜单界面
- int choice();//选择难度
- int main()//主函数
对于这些函数的声明我加上了注释方便理解,1-3是猜数游戏的实现、4是菜单界面的实现、5是选择难度的实现、6则是最主要的主函数,只有通过主函数才能实现1-5的功能。
菜单:
以下是菜单的实现:
- void menu()
- {
- printf(" ***1:开始游戏*** \n");
- printf(" ***0:退出*** \n");
- }
菜单就两条输出语句,选1开始游戏换行,选0退出换行。
选择难度:
以下是选择难度的实现:
int choice()
{
printf(" ***1:简单*** \n");
printf(" ***2:困难*** \n");
printf(" ***3:随机*** \n");
printf(" ***0:退出*** \n");
int b = 0;//初始化选择
do {
printf(" 请选择: ");
scanf("%d", &b);
printf("\n");
switch (b) {
case 0:
printf(" 游戏结束\n");
return 0;// 用户选择退出
case 1:
game1();
break;
case 2:
game2();
break;
case 3:
game3();
break;
default:
printf(" 只有简单、困难和随机呢! \n");
break;
}
}while (b);
}
这里的选择难度用到do-while循环和分支语句switch,首先这个会先在界面输出以下四个语句
紧接着先是执行do-while循环,do-while循环上一篇章我说过这个循环不管怎么样都会先执行一
次,所以如图所示“请选择”被执行了,接着你输入数字进入switch语句,根据图中有四个选项分别
进入相应的分支,选1进入case 1、选2进入case 2以此类推。如果你想退出按0,游戏直接结束。
如下图所示:
主函数:
以下是主函数的实现:
int main()
{
srand((unsigned int)time(NULL));//简单说能让你的rand函数能真正实现随机数
int a = 0;//选择
do {
menu();
printf(" 请选择: ");
scanf("%d", &a);
printf("\n");
switch (a)
{
case 0:
printf(" 游戏结束\n");
break;
case 1:
if (choice()==0)
{
return 0;
}
break;
default:
printf(" 兄嘚请输入正确的数字! \n");
break;
}
} while (a);
return 0;
}
主函数跟选择难度一样都有do-while循环和分支语句switch,不管怎么样都先执行一次,首先执行菜单函数,如下图所示,紧随着是通过你输入的数来进行下一步,如下图所示。
然后 srand((unsigned int)time(NULL));这里用到了srand函数以及time函数,如我注释简单来说能让rand函数能真正实现随机数。如果想了解的更详细可以去搜一下srand函数和time函数,其中牵扯了种子和时间戳这个概念。
游戏
以下是游戏的实现:
void game1()
{
int d = rand() % 100 + 1;//生成随机数
int b = 0;//猜的数字
int count = 10;//次数
while (count) {
printf(" 请输入,还剩%d次机会喔: ",count);
scanf("%d", &b);
if (b>d)
{
printf("\n");
printf(" 小可爱,猜大了呢!\n ");
printf("\n");
}
else if (b<d )
{
printf("\n");
printf(" 小可爱,猜小了呢!\n ");
printf("\n");
}
else
{
printf("\n");
printf(" 小可爱,给你猜对了!\n ");
printf("\n");
}
count--;
if (count==0 || b==d) {
printf(" 还剩%d次机会,正确答案是:%d\n ",count,d);
printf("\n");
printf(" 游戏结束,重新选择\n ");
printf("\n");
break;
}
}
}
首先游戏用到了while循环和if分支语句,game1()属于简单难度,设置了10次猜数的机会,然后
while循环通过你的次数来循环直到猜完次数了就停下来,接着回到choice()让你重新选择。如果你
在10次机会中就猜对了它也会停下来,然后让你重新选择。
以下是效果图
然后是随机难度的实现:
void game3() {
int d = rand() % 1000 + 1;//生成随机数
int b = 0;//猜的数字
int count = rand() % 1000 + 1;//次数
while (count) {
printf(" 请输入,还剩%d次机会喔: ", count);
scanf("%d", &b);
if (b > d)
{
printf("\n");
printf(" 小可爱,猜大了呢!\n ");
printf("\n");
}
else if (b < d)
{
printf("\n");
printf(" 小可爱,猜小了呢!\n ");
printf("\n");
}
else
{
printf("\n");
printf(" 小可爱,给你猜对了!\n ");
printf("\n");
}
count--;
if (count == 0 || b == d) {
printf(" 还剩%d次机会,正确答案是:%d\n ", count, d);
printf("\n");
printf(" 游戏结束,重新选择\n ");
printf("\n");
break;
}
}
}
随机难度就修改了次数,通过rand函数生成的随机数赋给了count,所以称随机难度,这样玩起来比较刺激。
总结:
通过实现这个简易版猜数游戏,能提升对循环和分支以及对代码的熟练度以及你的逻辑能力。如果
你有更好的想法可以自己去动手试试。如果有什么意见或者想法欢迎评论。