猜数字游戏

根据前面所学知识,我尝试完成一些其他代码,下面完成一个猜数字游戏,游戏要求:1.电脑自动生成1到100的随机数,2.玩家猜数字,猜数字的过程中可以根据大小给IC胡反馈,直到猜对,游戏结束。 

首先明确要求:看似两点,其实还有一点,那就是保证随机数的生成,众所周知C语言中存在一个函数rand用于生成随机数,用到了stdlib.h头文件但是这是伪随机数,可以测试一下这个函数:

测试发现,两次结果都是这个,这是为什么呢?就是因为rand的伪随机性,根据资料查阅,容易知道rand是对一个“种子”作为基准进行的,之所以两次一样,是因为默认的基准都是1.为了解决这个问题,C语言中又提供了另外一个函数,那就是srand,专门用来初始化随机数的生成器的。原型如下:void srand(unsigned int seed),程序中调用rand之前先调用srand函数,通过srand来设置参数seed,进而改变基准。也就是说如果srand的参数是变化的,那么生成的随机数就不会是固定的了。但是同时又出现了一个问题:现在这个游戏要求是自动的,那么怎么能每次都输入参数呢?由于这个原因,又引出了一个函数——time,具体的time逻辑这里不做过多介绍,和指针有关,可以AI搜索。当然使用这个函数要有头文件time.h。具体使用,在这这个游戏中记作time(NULL)即可。下面是最终的生成随机数的代码:

可以看出,这样的话得出的数就不同了。

接下来思考另一个问题:如何设置生成数的范围?其实记住就行,如果深究底层,那就要从rand性质开始说起,生成数的最大值一般是32767,具体情况可以通过网址或AI搜索。如果要生成a到b的随机数,那么方法就是a+rand()%(b-a+1)。

上面的部分弄完了,下面思考这个游戏怎么实现。先写出框架:

其实框架很简单,无非就i是有一个菜单,然后有一个游戏的程序(函数),然后选择玩还是不玩,然后do while循环,因为需要先进入菜单。OK,下面展示一下基本框架:

如上图所示其中menu代表这个游戏的菜单,通过输入的数字决定是否玩这个游戏。当然,这个程序还剩下game()的实现,game的实现如下:

观察这个代码,首先生成了一个随机数,然后用了while循环,因为不确定到底循环了几次,故直接while(1),而后就是三种情况,注意猜对之后一定要break跳出!下面展示代码的最终效果:

当然,这个代码也可以进行修改升级,让该数字的次数得到限制,修改后的代码如下:

可以看出只有game的内容改了。那么到这这个程序就做完了,其实应用了封装的思想,比如mene,game都i是把一个功能单独列出来了,具体代码我会上传到git(有空)。

Thank You!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值