C语言 猜数字
前言
该程序中要用到C语言中的控制循环语句,
1.游戏设计
该游戏的设计为,让系统在数字中规定一个范围后随即生成一个整数,然后由我们猜,玩家猜数字后,系统进行判定并提示我们猜大了还是小了或是猜中了,而且统计并提示玩家猜的次数。
2.代码实现
1.游戏菜单
当我们玩一个游戏是第一眼看到的就是游戏菜单,所以我们也要打印一个菜单譬如:
但我们只是制作一个简易版的菜单,所以这里我们规定一个游戏菜单函数
(代码如下):
void screen()
{
printf("****************\n");
printf("*****1.play*****\n");
printf("*****2.end******\n");
printf("****************\n");
}
2.构建游戏执行函数
1.(时间戳)
这里我们还要对一个库函数进行一个简单的介绍——时间戳。
它是一个用来表示时间和日期和数字格式,在这里我们可以把它进行转化为整数随机数的形式。并且由于它是库函数,所以我们要添加头文件,它的头文件为——time.h,由于它生成随机数的范围过大,所以我们要进行限制,这里我们需要用到除法和余数,我们让它计算出除以100的余数再加一,就得到了1到101的范围中的整数
int ret = rand() % 100 + 1;
2.游戏中主函数
然后我们要设计当我们进行猜时系统让我们选择是否开始游戏,给我们提示游戏开始,并让我们输入数字的程序,这里我们需要用到do while()循环,因为无论如何程序都要执行一次让我们选择是否玩游戏,然后再进行判断程序是否向下进行,这里我们将其放入主函数中
(代码如下):
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
screen();
printf("请确认是否进行游戏:\n");
scanf("%d", &input);
if (input == 1)
{
printf("开始游戏\n");
game();
}
else if (input == 2)
{
printf("退出游戏\n");
break; //这里我们已经猜对了,所以程序执行要结束了
}
else
printf("输入错误,请重新输入\n");
} while (input != 2);
return 0;
}
这里面还有一个问题,就是时间戳要将它强制定义为int类型,因为我们生成的随机数时整型类型。大家不要忘了。
3.游戏执行函数
游戏执行时我们让系统辅助提示玩家输入数字,输入次数和是否猜大,猜小了或者是猜对了。而且这里也有一个问题就是时间戳要放到循环函数外,否则当你执行一次循环函数后随机数就会重新生成,这样我们永远也猜不到正确答案(作者也犯过 )
void game()
{
int ret = rand() % 100 + 1;
int guess = 0;//guess为玩家猜测的数字
int count = 0;//玩家猜的次数
while (1)
{
int guess = 0; //guess中储存的是玩家猜测的数字
printf("请输入猜测的数字:");
scanf("%d", &guess);
if (guess < ret)
{
count++; //计数
printf("猜小了\n");
}
else if (guess > ret)
{
count++;
printf("猜大了\n");
}
else
{
printf("恭喜你猜对了\n猜错次数为:%d", count);
break; //若猜对了应打破循环
}
printf("剩余次数为%d", count);
}
}
4.完整代码展示
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void screen()
{
printf("****************\n");
printf("*****1.play*****\n");
printf("*****2.end******\n");
printf("****************\n");
}
void game()
{
int ret = rand() % 100 + 1;
int guess = 0;//guess为玩家猜测的数字
int count = 0;//玩家猜的次数
while (1)
{
int guess = 0; //guess中储存的是玩家猜测的数字
printf("请输入猜测的数字:");
scanf("%d", &guess);
if (guess < ret)
{
count++; //计数
printf("猜小了\n");
}
else if (guess > ret)
{
count++;
printf("猜大了\n");
}
else
{
printf("恭喜你猜对了\n猜错次数为:%d", count);
break; //若猜对了应打破循环
}
printf("剩余次数为%d", count);
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
screen();
printf("请确认是否进行游戏:\n");
scanf("%d", &input);
if (input == 1)
{
printf("开始游戏\n");
game();
}
else if (input == 2)
{
printf("退出游戏\n");
break; //这里我们已经猜对了,所以程序执行要结束了
}
else
printf("输入错误,请重新输入\n");
} while (input != 2);
return 0;
}
还请大佬们发现有错误,能够指出来,谢谢。
鞠躬