游戏要求:
1:电脑自动生成1–100的随机数
2:玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束。
首先,我们要满足第一个条件,生成一个随机数,函数原型如下:
int rand (void);
rand函数会返回一个伪随机数,同时他的使用需要包含一个头文件stdlib.h。
那我们先来看看rand函数的效果
将其多调试几次看看结果
我们可以看到,虽然说它这里产生的五个随机数确实都是随机的,但下一次运行程序的结果却和上一次一样,这就说明有问题了。
而这里的问题就在于,因为上面说过,rand函数返回的是一个伪随机数,并不是真正的随机数,而rand函数是对一个叫种子的基准值进行运算生成的随机数。
之所以前面每次运行程序产生的随机数序列是一样的,那是因为rand函数生成随机数的默然种子是1。如果要生成不同的随机数,就要让种子变化。
因此,c语言又提供了一个函数叫srand,用来初始化随机数的生成器,srand的原型如下:
void srand(unsigned int seed);
程序中在调用rand函数之前先调用srand函数,通过srand函数的参数seed来设置rand函数生成随机数的时候的种子,只要种子在变化,每次生成的随机数序列也就变化起来了。
而在c语言中有个函数叫time,可以用这个获得时间,作为种子,因为时间每时每刻都在变化。time函数的使用需要包含头文件:time.h
现在我们把这个代码写来看看。
这里先写了一个打印菜单的函数,
其次,这是进行游戏的函数
最后这是我们的主函数。
这个猜字谜游戏的c语言函数代码写起来比较简单,但仍然有些细节需要注意,比如,在写game函数的时候就需要注意将scanf函数写在while循环里,不然写在外面就会造成死循环,相反,写在里面的话,这个b的值,也就是你猜的值就会一直根据自己来进行调整。