一、介绍
继上一篇介绍了生成随机数,今天我们来将它运用到具体场景。
下面我们来设置一个小游戏————猜数字
游戏规则:
计算机生成一个1~100的随机数,你输入数字猜测,计算机根据你猜测的数字给出反馈(猜大了,猜小了,猜对了)直到猜对,如果猜对了,会输出你猜了多少次。你也可以限制猜测次数来提高游戏难度。
二、思路
上一篇博文我们已经说过如何生成随机数,下面讲一讲它的使用技巧。
生成有范围的随机数
我们要求的是1~100的数字,那么对这个随机数肯定有范围限制。如何实现这一限制呢?不要忘记在C语言中有取模符号(%)。这就方便许多了。
公式:
生成a~b的随机数,方法如下:
a + rand()%(b-a+1)
例如:
生成100~200的随机数
100+rand()%(200-100+1) 即100+rand()%(101)
生成1~100的随机数
1+rand()%(100-1+1) 即1+rand()%100
其他:
为了追求高内聚低耦合,我们可将代码分为几个自定义函数来实现。
同时,为了追求玩家自主性,我们可以给玩家设置选1玩,选0退出这样的设置。
三、代码实现
1.无次数限制
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game()
{
int r = rand() % 100 + 1,count = 0;
int guess = 0;
while (1)
{
count++;
printf("请猜数字->:");
scanf("%d", &guess);
if (guess < r)
{
printf("猜小了\n");
}
else if (guess > r)
{
printf("猜大了\n");
}
else
{
printf("恭喜你猜对了\n");
printf("你猜了%d次\n",count);
break;
}
}
}
void menu()
{
printf("***********************\n");
printf("**** choose 1.play ****\n");
printf("**** choose 0.exit ****\n");
printf("***********************\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
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;
}
运行展示:
接下来可以选择1继续玩,或者0退出游戏,自由度高,感兴趣的可以自己动手运行。
2.有次数限制
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game()
{
int r = rand() % 100 + 1;
int guess = 0;
int count = 5;
while (count)
{
printf("\n你还有%d次机会\n",count);
printf("请猜数字->:");
scanf("%d", &guess);
if (guess < r)
{
printf("猜小了\n");
}
else if (guess > r)
{
printf("猜大了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
count--;
}
if (count == 0)
{
printf("你失败了,太菜了你,正确值是:%d\n", r);
}
}
void menu()
{
printf("***********************\n");
printf("**** choose 1.play ****\n");
printf("**** choose 0.exit ****\n");
printf("***********************\n");
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
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语言知识后,我们可以自己写代码玩游戏小游戏,也是十分有趣的。
立志欲坚不欲锐,成功在久不在速