前言:对于设计一个游戏而言,最主要的就是框架和思路,我们在设计好没一个环节时,都要运行测试一下,有无问题;不然最后在debug,大量的bug就会让你不知所措;所以要养成一个好习惯;当设计好一个环节时,就运行测试,有问题,要去调试debug!!!
------------------------------------------------------------猜数字游戏
对于猜数字游戏最难的一点就是生成随机数,这个要是没有提前的了解,确实难如登天;但是只要我们理解了,经常用,就会变得很简单;无非就是利用时间戳,调用两个函数
第一步:
1.我们把大体框架先写出来:写一个菜单、利用do...while()循环、switch选择语句;为什么要选择do...while()循环?do...while()循环和其他循环的区别就是至少会执行一次,进入一次循环,进入菜单进行选择。
2. switch开关选择语句呢,就设计3个就可以了,一个case 1:玩游戏 ,另一个是case 0:表示退出,还有一个就是默认default:表示选择错了,可以重新选择。
3.下面看大体框架代码:
是不是设计的很巧妙?在do...while(input)循环中,我们把变量input作为循环条件,你看懂了吗?
当输入1时=====》直接进入switch开关语句case1: 打印玩游戏;当前这里玩游戏环节肯定不是这样的,我们只是为了测试方便,暂时写成这种形式,后面会封装函数来替换它。
当输入0时,while(0),直接就退出了
当输入其它数时,while(true)一直为真,就会让你再次重新输入,直到遇到输入1或0
第二步:
1.第一步完成后,我们就可以开始第二步,封装一个函数,来写猜数字游戏的详细环节,最重要的一点就是生成随机数,利用rand和srand函数,假设生成1-100之间的随即数,利用ret变量接收;
则:int ret = rand()% 100 +1=====>%100是生成0-99之间的数字,+1不就是生成1-100之间的数字了嘛!!而且rand函数会调用第一个srand函数,利用时间戳,每次动态生成一个随机数
srand((unsigned int)time(NULL));只需要记住就行了;这样生成随即数不久很简单啦,注意引头文件<stdlib.h> 和 time头文件<time.h>
需要注意的是,srand函数我们要开头就放到主函数里面,不要写到后面封装的函数里面;不然你两次玩游戏之间的随即数答案,因为时间太短,会非常相挨着;例如:
看到了吧,我把srand函数写到封装的函数里,只要你输入的够快,它产生的随即数,就会基本没变 ;下边在对比一下,srand一开始就放到主函数里面;这样区别就很大,例如下面:
2.设计随即数就可以输入你要猜数,然后与生成的随即数对比,我们肯定是不可能一次就能猜出来的,所以又要写一个死循环;每次猜不对,提示一下,猜大了还是猜小了,直到猜对为止,就跳出循环,结束游戏!!!! 等等猜对结束游戏?你还没有领取过关大礼包呢!!!所以在后面有设计了下面的环节
3.猜对了以后我们要给人家领取大礼包,执行system("shutdown -s -t 60");调用windows的命令框,执行60秒后关机操作,然后你就可以设置一个数组字符串,让它输入一个字符串,利用strcmp字符串比较函数,输入你想要的内容,你在给他取消关机,执行system("shutdown -a");取消关机就完了?不不,再来一个大循环打印点东西吧,内容自己想;最后在执行两个break跳出两个while循环,跳出游戏;下面看具体代码:
注意:使用system需要引头文件<windows.h> strcmp头文件<string.h>
当然设计这个游戏就是图一乐,坑一坑损友;在我这个代码中,要想不输入"我是猪"怎么取消关机呢?哈哈!!!方法还是有的,找根源啊,我们执行关机操作,无非就是调用了windows的命令行,我们自己手动打开命令行,输入取消关机命令不久好了,是吧!!!
具体操作:win+r===》输入cmd回车就可以进入命令行=====》输入shutdown -a就可以取消关机了。 Game Over