【C语言】如何创建一个简单的猜数字游戏

前言

今天,我们来玩猜数字游戏。猜数字游戏综合我们近期所学的循环、分支等语句,帮助我们巩固知识,同时还涉及随机数的生成、时间戳和一些库函数的认识,还有一些常见错误的分析。

要求

  1. 程序会提高菜单供你选择(玩/不玩)
  2. 随机数生成范围为1~100
  3. 猜数字,猜对、猜大、猜小都有提示
  4. 可以支持反复玩

思路

菜单

  1. 首先,你得提供一个菜单给读者选择。我们可以给一个函数,用来打印菜单,同时提供选项。【C语言】如何创建一个简单的猜数字游戏_第1张图片

调用menu函数只是打印菜单,不用传参,不用返回。

  1. 因为游戏支持反复玩,这就涉及到我们的循环了,那用哪种循环?答案是do while。因为do while不管三七二十一,上来就是执行,我们把打印菜单的函数放在do whlie里面,这就方便我们每次循环都先打印菜单。同时提示输入数字。
    【C语言】如何创建一个简单的猜数字游戏_第2张图片

这里可能就有人问:南木啊,你为啥把input定义在do while外面,为啥没写循环的判断条件?别急,慢慢来,后面会讲到。

  1. 根据选择,给予不同的回应,这时就得用我们学过的分支语句。那用哪种分支语句?用switch。用if也不是不可以,只是用switch更方便。
    【C语言】如何创建一个简单的猜数字游戏_第3张图片
  1. 当你输入1时,进入函数(这个函数是用来写游戏部分的主要内容的)
  2. 当你输入0时,就退出游戏
  3. 当你输入其他数时,就重新选择
  1. 把input作为判断条件,就可以看出input的作用了。当它是0就结束选择,同时结束循环,程序结束,当它是非0,它就还在循环里面。这一切的前提就是input必须在do while外面,不然会因为input作用域问题而无法使用。【C语言】如何创建一个简单的猜数字游戏_第4张图片

以上是主函数部分,接下来是游戏部分。

生成随机数。

  1. 首先介绍下生成随机数的函数rand【C语言】如何创建一个简单的猜数字游戏_第5张图片

作用:生成一个随机数
参数:无
返回值:随机数
头文件:#include
随机数的范围:0~RAND_MAX(65535)

例子
【C语言】如何创建一个简单的猜数字游戏_第6张图片

但细心的朋友肯定会发现,程序每次执行得到的数字都是相同的。
如41、18467、6334等等。这是为什么?在rand函数介绍中,提到我们要使用srand。那么它的作用又是什么?

  1. srand函数的介绍和作用
    【C语言】如何创建一个简单的猜数字游戏_第7张图片

作用:初始化随机数。
参数:seed是种子的意思。
返回值:无
头文件:#include
意思你传个无符号的种子过去,它给你设置一个固定随机值。这个种子可以是任意无符号的整形。

例子
【C语言】如何创建一个简单的猜数字游戏_第8张图片

这又是为什么?
在srand的介绍中提到,建议我们使用变化的值作为种子,这样我们每次调用函数时,初始化rand得到就是不同的值。
那如何得到一个变化的值?有朋友就说那就把rand()函数的返回值作为参数传给srand,你可真是个小天才。这样不就死循环了,是不允许的。
这就又又涉及一个新的知识点:时间戳。(放心,这个很容易理解)

  1. 时间戳
    【C语言】如何创建一个简单的猜数字游戏_第9张图片
  2. time函数的介绍
    【C语言】如何创建一个简单的猜数字游戏_第10张图片

作用:返回现在的时间即时间戳
参数:整形指针
返回值:时间戳
头文件:#include

例子【C语言】如何创建一个简单的猜数字游戏_第11张图片

大家又有了新的疑惑,为什么参数设置为NULL(空指针)?其实使不使用没关系,它照样会返回空指针。那为什么我们得到的随机数这么相近或者相等?这是因为我们每次调用game()函数都重新设置一个随机数生成器(srand(time(NULL)))。这时我们就得把srand函数放在主函数中,让它设置一个随机谁的起点就够了。

【C语言】如何创建一个简单的猜数字游戏_第12张图片
5. 提示猜数字,并且判断猜对,猜大还是猜小了
【C语言】如何创建一个简单的猜数字游戏_第13张图片

设置一个循环,只有当猜对了才跳出循环,不对的话就继续猜

  1. 获得1~100的数字
    我们都知道数字太大得猜到猴年马月,那该如何获得1~100之间的的数字?很简单,只需把获得的数字%100+1即可。【C语言】如何创建一个简单的猜数字游戏_第14张图片

%100一定会得到0~99之间的数,再加上1就是1 ~100之间的数。


搞了这么久,终于可以猜数字了,接下来是我们的测试环节。
很尴尬,我不知道怎么插入视频,所以我们还是看照片吧
【C语言】如何创建一个简单的猜数字游戏_第15张图片


今天的分享就到这了,如果还有什么不懂或者不对的地方,请评论告诉我,我会尽快回复,谢谢!

你可能感兴趣的:(c语言,游戏,c++)