哈哈,来更新自己的博客啦:
今天给大家用C语言实现一个猜数字的游戏,虽然可能对大家来说这个猜数字游戏有点简单的不能再简单,但是因为本人还是处于一个菜鸟的阶段嘛,感觉能实现这样一个小程序就好开心的哈,如果哪里有什么错误希望大家都给指出来,我好积极的改进进步。后面的话那咱们就开始吧!
需求:
a.写一个猜数字游戏
b.自动产生一个1-100的随机数
c.猜数字
d.猜对了,就恭喜你,游戏结束
e.猜错了,会告诉猜大的了,还是猜小了,继续猜,直到猜对
f.游戏可以一直玩,除非退出游戏
首先要写出我们的主函数:
这个游戏呢我们要是想玩完一把再玩一把,并且最开始就可以玩游戏,我们就要用到do while循环。
do while循环
do while循环这个结构里面怎么写呢?首先我们需要打印一个菜单,我们用一个函数来打印,这个函数叫menu(),这个函数不是库函数,我们要自己实现这个函数,打印一个简易的菜单。那我们来实现一下。
有了菜单:1叫玩游戏,0叫退出游戏。那我们肯定要玩嘛,那我们就需要让用户选择(提示用户请选择),用print函数。让用户输入一个值选择,就要用scanf函数。这个时候用户可能选1,也可能选0,也有可能选的不是1也不是0。那我们这边的话要判断一下,这就要用到swtich语句,那我们来实现一下。
input呢是输入的意思,如果你选择1呢,就会猜数字,选择0呢就退出游戏,选择其他值呢就重新开始,while循环的条件为什么input呢,如果你选择0退出游戏不玩了,input就为0,为0的话while循环就为假就会跳出游戏,如果你选择1,input是1为真循环就可以再来一次,如果你选择其他的值比如是5,就会提示你选择错误请重新选择,因为input是5,所以也可以再重新选择。现在我们测试一下打印的效果。
真正的猜数字不可能就是这么简单的一个过程,不可能一句话(猜数字)就决定了,只是让大家看一下这个程序的逻辑。接下来我们来实现真的函数,把printf(“猜数字”)删掉,我们来用game()函数来实现这个猜数字过程。
首先我们猜数字得有数字,要先生成随机数。接下来第二部才是猜数字,怎么生成随机数呢,随机数有一个库函数rand,它叫生成随机数。这个函数怎么用呢:rand()它的参数为无参,返回类型是int,那它返回的就是一个随机数了。我们来测试一下。
但是呢,有一个问题,测试一次后关掉我们重新在测试一次得到的值和第一次是一样的。这样的话玩完一局再玩一局就和第一局出现的数字是完全一样的了,那还怎么能重复玩呢。所以说这个方法是不对的。
RADN_MAX = ox7fff = 32767
rand函数返回的是一个随机整数,是0-RADN_MAX的范围(0-32767之间的数字)。
调用rand函数之前还要调用sand函数来设置随机数的生成器
sand函数的参数是一个整数
现在我调用这个函数看看效果
这是sand函数给的参数100 和 200的效果。所以如果我们给的是一个可变化的量,就能产生随机的数字,这个可变化的量就是时间,我们就把时间戳传进去,时间戳就是一个时间转换出来的数字.这里就要用到了time函数,我们把time函数传进去,但是不用time函数的参数给它一个空值NULL。因为sand需要一个unsigned int类型的参数,所以我们把time函数强制类型转换。如下:
现在我们来看一下效果:
因为我们求的是1-100之间的随机数:所以我们要rand函数%100加1,因为%100得到的是0-99之间的数字,所以加1范围就成了1-100.现在我们再来看:
随机数有了之后紧接着猜数字,这里我们用whiie循环,while(1)就死循环这么猜,每一次猜数字都提示一下printf,猜数字的时候需要输入一个值csanf,猜的数字我们要存起来,所以要定义一个变量,guess,guess就是我们要猜的那个值变量。如果我们猜的guess这个值比随机值小,我们就说猜小了,如果比随机值大,我们就说猜大了,直到猜对数字然后恭喜你,猜对了。猜对了之后就不要猜了我们break跳出去。来看一下最后的代码和效果: