一:游戏的要求:
1,电脑会随机生成一个数字
2,玩家猜数字
a:猜大了,提醒猜大了,继续猜。
b:猜小了,提醒猜小了,继续猜。
c:猜对了,提醒:恭喜你,猜对了,并且结束游戏。
3,玩完一把不过瘾,还可以让用户选择是否继续玩。(所以游戏中一定含有循环)
二:主函数代码的书写
步骤一:任何游戏上来都是一个菜单,让玩家选择玩还是退出,所以我们制作一个简单的菜单函数。
这个简单的菜单函数,打印效果如下:
步骤二:玩家进来显示菜单后,应该输入1或者0,也有可能输入错了,输入进去了其他的数字。所以我们用一个switch语句来进行操作。玩家选择1,就是进入游戏所对应的函数,选择0,就是退出游戏,选择其他的就是对应的选择错误。
再综合我们玩完一把可以再次游玩的目的,所以这个switch语句应该放在一个循环中,那么循环的判断条件是什么呢?这就是为什么我们设置0是退出游戏的原因!!0为假,刚好可以用来结束循环。意思就是,玩家输入的1或者0或者输入错的其他非0的数字,既用于switch语句中case的选择,又用于了循环的条件判断!!
可以看到,我们把switch语句放进了循环,我们玩家输入的变量为input,即使switch的变量,也是do while的判断条件,上来就打印一个菜单,然后说:请选择,玩家的选择,对应不同的case语句,并且也会用于循环的判断!
代码效果演示:
三:游戏函数代码的书写
首先:我们游戏函数主题内部对于猜数字一定是循环的,玩家一般不可能一下子就猜对,所以是一个循环。
其次:对于生成随机数,要做以下知识的补充:
rand()函数:生成随机数,这函数不需要传参,会返回0-32767之间的一个数。
问题:每次运行的产生随机数一样,例如:第一次是22 3455 789 ,第二次也是22 3455 789。
rand函数的正确使用方法为:在使用rand之前,要先调用srand函数,srand是一个会初始化随机数的生成器,srand根据自己收到的参数的不同会返回不同的值,所以我们给srand函数传入时间戳,(给srand传入一个随时变化的值),而time函数的返回值,就是时间戳。
time函数,参数不使用,直接传空指针,NULL,他就会返回一个当前的时间戳,注意:time函数的返回类型是time_t,其实就是long long整形,经过typedef后的名字。而srand函数接受的参数类型为unsigned int 类型,所以我们把time的类型强转为unsigned int类型。
注意:srand函数使用一次就可以了,不需要每一次生成随机数,就设置一个生成的起点。一般放在主函数中,让其只执行一次。
整体代码:
演示效果:
问题:猜的数字范围可能过大,我们可以对ret的值,进行%100,就可以只猜0~99的数字了!
可以修改如下:
谢谢观看!