一、游戏介绍
该游戏由程序随机生成一个0~100的一个数字,并且每一次重新开启游戏之后所生成的数字不重复。玩家一共有五次猜数字的机会,每一次猜测数字之后,程序都会告知数字的范围,直到猜到数字或超过猜数字的次数。
二、游戏玩法
1、游戏随机生成一个0~99的数字,用户通过输入数字来进行猜测,每一次重新开始游戏后目标数字不会重复。
2、玩家一共有5次猜数字的机会(猜数字的机会可以更改),若没有猜中,程序会进行判断,若大于目标数字则提示太大了,若小于目标数字则提示太了。
3、在规定的次数内猜中数字,则游戏胜利。
三、编程思路
3.1 游戏菜单函数
void menu()
{
printf("****************请选择***************\n");
printf("*************** 1.Play **************\n");
printf("*************** 0.Exit **************\n");
printf("********你将拥有5次猜数字的机会******\n");
printf("***********数字范围是0~100***********\n");
}
3.2 game函数设计
void game()
{
int i = 1;
int guess = 0;
//生成1个随机数
int ret = rand() % 100 + 1;//rand函数的作用是随机生成一个数字 %100取到的数字是0—99
//2.猜数字
printf("请猜数字:");
while (1)
{
scanf("%d", &guess);
if (guess == ret)
{
printf("恭喜你!猜对啦!\n");
break;
}
else if (guess < ret)
{
printf("猜小了\n");
i++;
}
else if (guess > ret)
{
printf("猜大了\n");
i++;
}
if (i > 5) //设置猜数机会的次数
{
printf("猜数机会用完啦,重新开一局吧\n");
break;
}
}
}
由于需要多次输入数据,所以我们直接使用死循环,当用户才对数字或超出猜数字的次数时break跳出循环。rand()函数的作用时随机生成一个数字,这里为了把范围控制在0~100,我们把rand生成的随机数进行%100取余,由于取余的范围只会在0~99,所以我们还需要+1。i的作用时用来统计猜数字的次数。
四、main函数主体
int main()
{
srand((unsigned int)time(NULL)); //time表示获取一个时间戳 因为srand内部必须是一个unsigend int所以进行了
//一次强制转换,srand的作用是设置一个随机数的起点
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
printf("猜数字\n");
break;
case 0:
printf("退出游戏\n");
break;
default: //当输入其它的数字时,则打印选择错误
printf("选择错误,请重新选择!\n");
}
} while (input);//如果为真则继续循环 如果为假则退出循环
return 0;
}
srand函数的作用是设置rand函数随机生成数字的起点,time函数是获取一个时间戳(时间戳是一个随时都在改变的数字,所以这也是随机生成一个目标数字的核心)
需要包含头#include<time.h>。由于玩家可能会多次进行游戏,所以我们把游戏的选择放在do while语句里面,当用户选择0时,while(0)为假,结束循环。
五、游戏结果展示
以上便是游戏结果的展示,为了展现出游戏结果,我把猜数字的次数改了一下哈哈哈哈,猜半天没猜出是什么数字。
六、写在最后
这个属于非常精简的猜数字代码了,大家可以丰富出更多的功能,此程序的唯一难点便在于如何生成随机数字,这里便运用到了time()获取一个时间戳的方法来获取一个随机数字。博主写的文章次数不多,会存在很多的瑕疵,如果有什么缺点欢迎大家在评论在评论区指点。最后,求一个三连。
求三连!!!!!!