1

猜数字游戏_hanwang的技术博客_51CTO博客

 2 years ago
source link: https://blog.51cto.com/u_15740457/5645402
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
  1. 电脑会生成一个随机数
  1. 游戏至少进来一次,我们运用do while 结构,do-while循环的特点:不管while中的条件是否成立,循环体中的语句至少会被执行一遍。先运行,后判断。
  2. 将游戏过程放入do,while判断(do后面跟大括号,while接普通括号)
  3. 我们需要设置菜单,菜单运用另一个函数,主函数在输入菜单后,应该提示玩家
  4. 总结,我们将猜数字游戏分为主函数,菜单部分,游戏部分还要头文件部分。
  5. 当然,菜单和游戏函数是放在主函数里面的。

头文件部分:

  • stdio.h是printf和scanf的头文件
  • time.h是time函数的头文件
  • stdlib.h是rand和srand函数的头文件
猜数字游戏_猜数字游戏

菜单部分:

  • 首先menu()放在主函数里面
  • 在主函数外面进行编译
  • 菜单相对简单,只需要设置游戏的开始与结束,整些花活
猜数字游戏_头文件_02

游戏部分:

  • 游戏函数是整个程序的灵魂,分为生成随机数和猜数字。

如何生成随机数?

  • 先利用rand函数,并用整形接受,即int i=rand()
  • 接着在运用srand函数,srand((unsigned int) time(NULL))
  • unsigned int 为time函数的强制类型转换,故要用括号,后面的NULL是无意义的指针
  • srand生成随机数的起点,我们只需生成一次就可,不能频繁调用,直接放在主函数前面。

猜数字游戏_主函数_03

如何猜数字?

  • 猜数字相对生成随机数简单许多。
  • 我们同样也可以利用do while循环语句,while后直接判断1,在do里面运用 if else 选择语句,当数字猜测正确时,break跳出。
猜数字游戏_猜数字游戏_04

主函数部分:

  • 主函数是根本骨架。
  • 我们首先需要将menu()和game()函数放进去。
  • 并且同样运用do while 循环。
  • 进入和退出游戏可以利用1/0进行区分。同样1/0也可以作为真假判断,妙哉!
  • 直接输入input,若为真(1),返回do循环继续判断,若为假(0),直接退出,与前面的case语句相照应,妙哉!
猜数字游戏_猜数字游戏_05

过渡:以上是猜数字游戏的思路,以下是我在实操过程中的注意事项。(若觉繁琐,可直接跳过)

注意事项:

输入1/0,若有其他数字(情况),就显示错误,就会联想到switch  case语句中的default 多分枝就联想到switch case语句 输入的1和0也有讲究,1为真,0为假 代码最后直接利用1/0判断真假
  •     一个函数rand专门生成随机数,生成的随机数的范围RAND_MAX     

查询这个数的范围:先引一个头文件stdlib.h      接着右击RAND_MAX点击转到定义。

猜数字游戏_主函数_06

  • 以0x开头的数字都是16进制数字,而后面的7fff就是值,这是我们打开计算机进行转化。

猜数字游戏_头文件_07

  • 错误原因:我们需要把变量设置在我们的代码块的最前面
猜数字游戏_主函数_08

rand函数

  • 用于生成随机数
  • 猜数字游戏_头文件_09

  • 格式  void表示无参,直接用括号即可
  • 猜数字游戏_主函数_10

但此时每次生成的随机数,会循环恒定,就显得不是那么随机

在查找文档后,发现我们应该在每次调用rand函数之前,还要利用srand ,其作用是设置随机数的起点

  • srand使用方法,后面的括号里面填写整形。
猜数字游戏_主函数_11
  • 此时输出结果恒定,且随着括号内的数字改变而改变,因此我们又需要设置一个真正的随机数,但我们设置这个函数的目的就是生成随机数,,到头来竹篮打水一场空(狗头保命)

但我们也可以设置一个会随机变得数字即可满足

  • 这时我们提出时间戳的概念,时间戳是现在的时间与1970年1月1日0时0秒(计算机的起始时间)的差值,单位为秒。

C语言是如何设置时间戳?

这时我们又需要另外一个函数time函数,他的头文件为time. h,作用是获得系统时间。

time格式 

猜数字游戏_主函数_03

time函数的类型是time_t,类似于整形的类型是int,但time_t本质上是long长整型。

srand格式:

猜数字游戏_主函数_13

-------------------------------总结srand()括号内需要整形

猜数字游戏_猜数字游戏_14

最终的格式。

NULL表示空指针,不想有什么实际效果。

rand------>srand------->time                      顺序

  • 当生成随机数成功时,可以尝试生成1~100之间,

猜数字游戏_主函数_15

可以利用%100再加一即可。妙哉!

自我总结:

这是我编译代码自认为最复杂的一次,别光看他只是一个小小的猜数字游戏,但其中蕴含了许多知识,杂糅了许许多多(函数,选择语句,判断语句,指针等等)。最最综合的一次,但我能靠自己单独编译出来,还是满满的成就感,意味着我在C语言小试牛刀,初露锋芒。

希望我不忘初心,一直走下去。自勉,看到这篇博客的人也共勉!!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK