最近学习了一个比较有趣的题目,感觉是能全面的考核到现阶段自我学习情况的一个代码,接下来想和大家分享探讨以下。
题目是:电脑随机生成一个1~100之间的数字,然后玩家开始猜数字,如果猜小了,电脑会告诉你猜小了,反之会告诉你猜大了,猜对了的话,电脑也会告诉你恭喜你,猜对了。
这里我们会把程序设计分为三大部分,其一:猜数字游戏的过程;其二:生成随机数;其三:猜数字。接下来我们就先来设计第一大部分:猜数字游戏的过程。
一、猜数字游戏的过程
那么这个游戏如果玩家觉得玩一把觉得不够过瘾,这个游戏可以不退出,重新来玩,那么我们可以给他做一个菜单,设计程序选择1则继续游戏,选择0就退出游戏。下图先简单的实现一下这个逻辑。
这里选择不常用的do while是因为这题,游戏一运行起来是要先看到菜单,无论怎么样,上来第一时间就得让玩家看到这个游戏菜单,所以一上来我们就要打印菜单,如果用到while或者for循环的话要判断了才能进入,所以用do while合适。
然后此时会用到一个menu函数,就是一个简易的菜单,返回类型void,当程序走到menu();就会打印出主函数外的菜单。如下图所示:
当菜单呈现在用户面前时,紧接着就会提示到用户进行选择,打印"请选择:>"来提示用户,用户输入的值开设一个变量input放入里面,但是此时就要设计一段程序来判断用户输入的到底是1还是0,也就是要判断用户要玩游戏还是退出游戏,这时候就要用到switch语句,程序设计如下:
case1和case0两种情况判断用户的选择,选择case1过后break跳出接着while再循环;选择case0的话,while判断调节为0,为假,即程序停止不动;如果用户输入了0和1以外的数字,就会执行default提示用户选择错误,最后break跳出然后while循环再次让用户选择。程序运行如下图所示:
二、生成随机数
上述即为猜数字游戏的大概整体逻辑,但是我们现在还需要来完善一下,首先,case1后的猜数字不可能是简单的一句话,我们这时候就用到game()函数,整个玩游戏的逻辑就写在这个game函数里面,和上面的menu函数一样,先在主函数前写入一个game函数,返回类型void,这个函数里面就是猜数字游戏的过程,总体的思路如下图game函数内的注释:
那么生成随机数就是一个重点了。C语言中生成随机数的方式是用rand函数。那么我们现在先用MSDN来查一查rand函数。
他会返回一个数字是0~RAND_MAX范围内的,是个随机int整数。那么此时我们先引用这个rand函数,引用头文件<stdlib.h>,然后编写程序测试一下rand是否能帮我们返回一个随机数,程序设计如下:
程序运行后如下图所示: