一、C 语言是一种通用的、面向过程式的计算机程序设计语言,学好C语言是非常重要的。
下面我们就来利用C语言来写出一个猜数字的小游戏吧!
首先构造出这个游戏的框架,再根据这个框架一步一步的进行代码编写。好的现在正文开始。
1.首先呢,我们肯定得先打印出菜单吧。
2.然后我们再进行选择,选择是进行游戏呢,还是退出游戏呢,这就得用到循环啦。在循环中再进行switch语句进行分支选择。
3.在选择进行游戏界面之前,我们肯定得构造出游戏是如何实现以及进行。
4.进行游戏过后再继续进行选择,选择继续游戏还是退出游戏。
好的,废话少说,上代码喽。
speak is cheap,show my code!
#include
#include
#include
void game();
void game()
{
printf("请输入数字\n");
int s=rand()%100+1; //%100的得出是0~99之间的数,加一范围就为1~100
int input = 0;
while (1)
{
scanf("%d", &input);
if (s == input)
{
printf("猜对了!\n");
break;
}
if(s > input)
{
printf("小了,继续猜\n");
}
if (s < input)
{
printf("大了,继续猜\n");
}
}
}
int main()
{
srand((unsigned int)time(NULL)); //为rand创建新的初始值。
printf("*******************************\n");
printf("***1.开始游戏 ** 0.退出游戏***\n");
printf("*******************************\n");
printf("*******************************\n");
int input = 0;
do
{
printf("请选择:\n");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n;");
break;
default:
printf("输入错误,重新选择\n");
break;
}
} while (input);
return 0;
}
下面我主要介绍其中rand与srand还有time这些函数。
要想实现这个小游戏,我们得保证生成随机数,但是如何生成随机数呢,计算机的时间是一直在变的,所以我们利用时间来生成随机数。(时间戳)Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
其中rand是表示生成随机数的,下面我们来看看有关rand的一些介绍吧。
通过此图我们可以看出对rand的一些介绍,其返回一个随机值,且其返回类型是一个int类型的,最大为32767。且该函数里面的参数可以不设定。调用rand函数时必须引用库stdlib。
虽然在此次调试中确实生成了10个随机值,但是再关闭程序继续调试时,就会发现生成值仍然还是这些数,这显然不是我们想要的随机值。所以到底哪里出错了呢?这是因为rand函数的种子(初始值)未发生变化,所以我们只需要让rand的初始值发生变化,这样我们就可以得到真正的随机值了,要想是rand函数的初始值发生变化,这就不得不提及到srand函数啦。
下面是关于srand函数的一些信息。
可以看出srand函数返回类型是任意的,但是其参数必须是unsigned int 类型,其作用是为初始化随机赋值,改变了初始化的种子值,这样就可以实现rand函数完成绝对随机。
又因为计算机中时间是一直变化的,所以可以利用srand函数,让时间作为参数生成随机种子值,然后就能实现rand的绝对随机啦。
下面再来再来看看time函数的信息。
可见其函数参数为指针类型,可以为空,返回类型为time_t time ,利用VS将其转换到定义如上图,本质上其是一个long long 类型。
所以可以利用srand((unsigned int ) time (NULL))生成随机种子(即随机初始值),将time强制转化为unsigned int ,再利用rand就可以实现绝对随机的啦。
所以就有了这些代码
以上就是C语言实现小游戏的代码。其中主要还是介绍srand,rand,time 函数的一些用法以及知识,其他逻辑都通俗易懂,若有其他哪些不懂可以随时在评论区提问。若发现问题请及时提出,定做出改正!