概述
作者:热爱编程的小y
专栏:C语言基础
座右铭:岁月漫长,然而值得等待。
目录
游戏背景:
代码思路:
前期铺垫
创建游戏主体
最终代码如下
游戏背景:
每次游戏自动生成一个1-100的随机整数,玩家有五次猜的机会,猜对获得表扬,猜错离场或选择继续游戏。
代码思路:
运用void函数与嵌套循环
代码实现:
前期铺垫
考虑到要进行多次游戏,游戏菜单用一个void函数来实现;
void menu()
{
printf("************n");
printf("************n");
printf("** play **n");
printf("** exit **n");
printf("************n");
printf("************n");
}
这样就可以在循环里方便的使用了;
游戏菜单完成之后,就是玩家的选择界面了:
int main()
{
int input = 0;
while (1)
{
menu();
printf("请选择:>");
scanf("%d", &input);
while (input)
{
switch (input)
{
case 0:
printf("退出n");
break;
case 1:
printf("开始游戏n");
break;
default:
printf("重新输入n");
break;
}
break;
}
}
return 0;
}
但是出现了bug;
当我输入0的时候,它没有输出“退出”,而且又出现了菜单界面,并没有达到想要的效果;
原来是因为开头的while(input)输入0自然就没进入循环了;
那么换一种写法:
int main()
{
int input = 0;
while (1)
{
menu();
printf("请选择:>");
scanf("%d", &input);
while (1)
{
if (input != 0)
{
switch (input)
{
case 1:
printf("开始游戏n");
break;
default:
printf("重新输入n");
break;
}
break;
}
else
printf("退出游戏n");
break;
}
}
return 0;
}
但是似乎还是没有达到预期的效果;
输入0时游戏并没有真正地退出;
该如何修改代码呢?这时候我想到了do while函数
ps:C语言中循环的使用的频率是 for>while>do while 的,do while一般不怎么用到,但是在这里是最合适的;
int main()
{
int input = 0;
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
printf("猜数字n");
break;
case 0:
printf("退出游戏n");
break;
default:
printf("重新选择n");
break;
}
} while (input);
return 0;
}
实现了预期效果;
创建游戏主体
同样用函数来实现:
void game()
{
int x = rand() % 100+1;//生成1-100随机整数
int a = 0;
while (1)
{
printf("请猜数字:>");
scanf("%d", &a);
if (x == a)
{
printf("Bingo你真厉害!n");
break;//终止循环
}
else if (a > x)
printf("偏大了n");
else
printf("偏小了n");
}
}
其中break发挥了至关重要的作用,实现了猜中离场的效果
最终代码如下
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void menu()
{
printf("************n");
printf("************n");
printf("** play **n");
printf("** exit **n");
printf("************n");
printf("************n");
}
void game()
{
int x = rand() % 100+1;//生成1-100随机整数
int a = 0;
while (1)
{
printf("请猜数字:>");
scanf("%d", &a);
if (x == a)
{
printf("Bingo你真厉害!n");
break;
}
else if (a > x)
printf("偏大了n");
else
printf("偏小了n");
}
}
int main()
{
srand((unsigned)time(NULL));//随机数种子,只用调用一次即可,所以放在主函数内
int input = 0;
do
{
//打印菜单
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏n");
break;
default:
printf("重新选择n");
break;
}
} while (input);
return 0;
}
最终运行效果:
放在文章最后:文章其中有 不完善的地方,欢迎交流指正。本人是一位刚接触编程语言不久的的大一新生,以后发更多的博客,期待与各位朋友一同沟通探讨,互相进步。
最后
以上就是紧张大炮为你收集整理的C语言趣味题:猜数字游戏(含代码创建思路与过程)的全部内容,希望文章能够帮你解决C语言趣味题:猜数字游戏(含代码创建思路与过程)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复