首先,第一步,我们要准备游戏需要的头文件。
#include <stdio.h>
#include <sitdlib.h>
第一个老朋友了就不多做介绍了,第二个因为需要用到srand()这个函数所以需要包含这个头文件。
第二布,做一个游戏的话菜单是必要的吧。首先我们先定义一个菜单,由于不需要他来返回任何的值咱们就用void来定义。我由于英文不是很好所以用的是拼音.然后咱们就可以来编写我们的菜单了。
代码实现如下:
void caidan()
{
printf("********************");
printf("****1. play *****");
printf("****2. gun *****");
printf("********************");
}
菜单打完了接下来实现游戏部分
void game()
{
int a = 0;
int ret = rand() % 100 + 1;
while (1)
{
printf("请输入要猜的数字\n");
scanf_s("%d\n", &a);
if (ret > a)
{
printf("猜小了\n");
}
else if (ret < a)
{
printf("猜大了\n");
}
else {
printf("恭喜你,猜对了,数字是%d\n", ret);
break;
}
}
}
首先第一步定义一个ret,这个ret就是一会游戏中要猜的数字 .
rand()函数是Excel中产生随机数的一个随机函数。返回的随机数是大于等于0及小于等于以的均匀分布随机实数,rand()每次计算工作表时都将返回一个新的随机实数。
所以定义ret等于rand()/然后给他一个范围%100+1,至于为什么要加一如果不加一的话他的范围就只定义到 99,所以这里面要加上一。
猜数字游戏不可能一次就猜中所以要用循环语句来写,我用的是while语句
因为要猜数字所以首先循环里面要输入数字所以先用一个输入语句来给他输入
接下来用if语句来定义他,如果猜的a值比系统生成的随机值大的话就在本if语句里面打印猜大了,反之亦然。最后只剩一种情况就是系统生成的随机值等于猜到的a值。所以我直接用的else来定义最后一种情况。猜对后游戏结束用break跳出循环。
接下来游戏部分做完了,要把菜单和游戏部分连接在一起才能构成一个完整的游戏
代码实现如下:
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
caidan();
printf("请选择");
scanf_s("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("输入错误,请重新输入");
break;
};
} while (input);
return 0;
}
首先定义一个input来作为菜单的选项
这里用到了srand函数,srand函数是随机数发生器的初始化函数。原型:void srand(unsigned int seed);srand和rand()配合使用产生伪随机数序列。
由于伪随机数产生的随机数是固定的,详细解释见下图
所以如果只输入srand()函数就不能算作真正意义上的随机数,所以我们给他加入一个时间搓
在c语言中time函数可以返回一个时间搓,随机数跟随时间的变化而变化,这样就形成一个真正意义上的随机数了.
由于我们不管玩不玩游戏都需要先执行一下菜单,所以这里推荐用do while 语句来实现
里面第一步把菜单引用进去,为了使游戏更加具有引导性我输出了一个请选择;接下来啊就是输入函数
然后要选择是否进入游戏,这里显然相比于if语句,在这里switch语句更方便;所以我在这里选用switch语句实现代码;
如果输入1,那么就进入我们前面定义的game里面,执行完后break跳出
如果输入0的话,就输入退出游戏,break跳出
接下来如果你输入的不是1也不是0,那么就会进入default 里面会提示你输入错误,请重新输入,最后依然break跳出。
到这里代码已经完成,最后有个小编完成代码时出现过的问题
注意事项
一定要先定义game()如果第三个代码和第二个代码顺序颠倒编译器会出现重复定义game的报错