目录
前言:
你好呀,我是小梨子,C语言作为一个历史悠久,十分传统的编程语言,很适合新手来学习。学会了基本语法后,我们可以尝试写一些小游戏来玩玩。今天我们就来写一个猜数字游戏吧。
具体要求:
猜数字游戏,首先作为一个游戏而言,它肯定要有可玩性。而猜数字游戏的可玩性关键在于数字生成的随机性,数字生成的范围(1-100),以及玩家猜错了,系统要给出相关提示信息,比如猜大了,猜小了。玩家还要能自主选择游玩次数,从第一次到无限次都可以。
实现随机数的方法:
为了游戏的可玩性,我们将生成随机数的范围设为1~100。
首先,我们来看一个函数,rand函数,rand函数是C语言里面生成随机数的一个函数。
在引用rand函数之前,我们需要包含stdlib.h头文件
由上可得, rand是一个整形函数,返回0~RAND_MAX范围之间的一个整数。
RAND_MAX是一个具体的值:0x7fff
(HEX:16进制,DEC:10进制,OCT:8进制)
通过程序员计算机计算的值可得出来,RAND_MAX的10进制值为:32767。
通过上文可知,rand函数在使用之前需要使用一个srand函数用来设置随机数的生成器。
为了数字生成的随机性,srand函数在调用的时候,括号里的seed应该是一直变化的值。那生活中什么数字一直在变化?对,时间,在这里我们引入时间戳的概念。
time_t在这个函数定义中是整形。
time函数在使用前需要引入头文件time.h
C语言中time函数会返回时间戳 ,函数参数为指针类型,我们只需调用NULL空指针即可。为了防止警告,我们需要将time函数强制转换为unsigned int类型。
为了随机性考虑,srand函数只需调用一次,因此在实际使用中,将srand放在main函数中调用即可。
我们刚开始的要求是生成1~100之间的整数,而不是0~32767,所以我们需要进行如下操作。
这样系统生成随机数的操作就完成了。
代码的实现:
一个简单的菜单函数:
void menu()
通过几个printf语句的输出形成一个简单的菜单界面,供玩家选择。
一个游戏函数:
void game()
num为玩家输入的数字,ret为系统生成的随机数,count是计算玩家猜对数字所用的次数。
接下来是一个while结构,while里面的if-else结构来判断玩家输入的数字是否正确,正确,通过break语句跳出while循环,如果错误,则根据系统的提示一直猜下去。
一个主函数:
int main()
主函数中为了计算玩家猜对数字所花的时间,调用了clock函数,clock函数返回的是当前被调用的时间(以毫秒为单位),定义两个变量,一个在程序进行前调用clock函数,一个在程序结束后调用clock函数,这样就可以计算出猜数字所花的时间。
这里有个细节,就是while后面的括号里面是input,根据主函数里的switch结构可知,玩家输入1代表进行游戏,输入0代表退出游戏,输入其他数字会提示错误。因为while后面的括号里的值只有为0的时候才能跳出循环,所以当玩家不选择0的时候游戏会一直进行下去,选错数字的时候,系统会一直提示,知道玩家选对。