前言
相信大家在初学C语言时都制作过一个小游戏-猜数字,只不过当时能力有限导致游戏功能较为简单,今天让我们来看一下它的进阶版本。
首先规划一下我们的猜数字游戏:
(1)首先程序随机生成一个 0-9999 的数。 (2)玩家每次输入一个 4 位数,程序告诉玩家两个信息: 用户输入的数,在个、十、百、千 4 个数字中,有几个数字是谜底里面有的,且出现在 正确的位置上; 用户输入的数,在个、十、百、千 4 个数字中,有几个数字是谜底里面有的,但未出现 在正确的位置上。 例如,谜底为“1234”,用户输入“8243”,则程序告诉用户“1 2”,意即用户的输入中, 有 1 个数字猜对了,且位置也对,另外有两个数字猜对了,但是位置不对。 (3)如果用户在规定的次数内猜出谜底,则胜出,否则游戏失败。 进阶要求:
(1)提供菜单选项,设置用户的猜测次数。如果用户未选择此项,则程序应提供默认值。 (2)提供菜单选项,让用户进入游戏。玩得好的玩家记录应保存,并存入硬盘上的文件。 (3)提供菜单选项,查询玩家记录的前五名。
一、代码思路:
1.游戏菜单:
首先我们写个游戏菜单:
选择菜单操作放在主函数中
菜单简洁明了,想玩可以一直玩
void menu()
{
printf("---1.进入游戏---\n");
printf("---2.输入次数---\n");
printf("---3.查询前五---\n");
printf("----0.退出-----\n");
}
2.主函数:
通过do while嵌套switch对游戏菜单进行控制:
玩游戏输入1:进入case1开始游戏
游戏次数输入2:进入case2设定游戏次数
查询历史成绩输入3:进入case3打印历史成绩
退出输入4:进入case4退出游戏
输入错误:进入default,进入下一次循环重新输入
switch (choose) {
case 1:
~~~~~~~
break;
case 2:
printf("请输入游戏次数:");
scanf("%d", ×);
if (times == 32) {
times = 3;
}
break;
case 3:
ReadTextFile(player);
break;
case 0:
printf("Exit!\n");
break;
default:
printf("Error\n");
}
} while (choose);
return 0;
}
3.游戏函数:
首先通过rand函数生成一个随机数
不会生成随机数看这篇:C语言生成随机数的方法
玩家输入猜的数字:
猜错了一直猜直到次数耗尽
猜对猜错给出提示
猜对了退出循环
由于需要根据位数生成提示,所以可以在生成随机数时就用数组来装
int radom_num(int a[]){
srand((unsigned int)time(NULL));
for (int i = 0; i < T; ++i) {
a[i]=rand() % 9 + 0;
}
}
提示生成函数
int produce(int b[],int c[]){
int f[6]={0,1,2,3,4,5};
for (int i = 0; i < T; ++i) {
for (int j = 0; j < T; ++j) {
if(b[i]==c[j]&&f[j]!=10){
f[j]=10;
if(i==j){
all_right_num+=1;
}
else{
right_position_num+=1;
}
break;
}
}
}
}
int Read
结尾:
以上就是今天讲的C语言猜数字游戏实现的基本思路,关于如何实现进阶目标将在下一文章详述,主要运用到了随机数的生成方法,希望对刚阅读本篇博客的你有所帮助,喜欢就点赞关注一波吧!!!