猜数字游戏
Posted hanwangyyds
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猜数字游戏相关的知识,希望对你有一定的参考价值。
要求:
- 电脑会生成一个随机数
- 猜数字
思路:
- 游戏至少进来一次,我们运用do while 结构,do-while循环的特点:不管while中的条件是否成立,循环体中的语句至少会被执行一遍。先运行,后判断。
- 将游戏过程放入do,while判断(do后面跟大括号,while接普通括号)
- 我们需要设置菜单,菜单运用另一个函数,主函数在输入菜单后,应该提示玩家
- 总结,我们将猜数字游戏分为主函数,菜单部分,游戏部分还要头文件部分。
- 当然,菜单和游戏函数是放在主函数里面的。
头文件部分:
- stdio.h是printf和scanf的头文件
- time.h是time函数的头文件
- stdlib.h是rand和srand函数的头文件
菜单部分:
- 首先menu()放在主函数里面
- 在主函数外面进行编译
- 菜单相对简单,只需要设置游戏的开始与结束,整些花活
游戏部分:
- 游戏函数是整个程序的灵魂,分为生成随机数和猜数字。
如何生成随机数?
- 先利用rand函数,并用整形接受,即int i=rand()
- 接着在运用srand函数,srand((unsigned int) time(NULL))
- unsigned int 为time函数的强制类型转换,故要用括号,后面的NULL是无意义的指针
- srand生成随机数的起点,我们只需生成一次就可,不能频繁调用,直接放在主函数前面。
如何猜数字?
- 猜数字相对生成随机数简单许多。
- 我们同样也可以利用do while循环语句,while后直接判断1,在do里面运用 if else 选择语句,当数字猜测正确时,break跳出。
主函数部分:
- 主函数是根本骨架。
- 我们首先需要将menu()和game()函数放进去。
- 并且同样运用do while 循环。
- 进入和退出游戏可以利用1/0进行区分。同样1/0也可以作为真假判断,妙哉!
- 直接输入input,若为真(1),返回do循环继续判断,若为假(0),直接退出,与前面的case语句相照应,妙哉!
过渡:以上是猜数字游戏的思路,以下是我在实操过程中的注意事项。(若觉繁琐,可直接跳过)
注意事项:
- 一个函数rand专门生成随机数,生成的随机数的范围RAND_MAX
查询这个数的范围:先引一个头文件stdlib.h 接着右击RAND_MAX点击转到定义。
- 以0x开头的数字都是16进制数字,而后面的7fff就是值,这是我们打开计算机进行转化。
- 错误原因:我们需要把变量设置在我们的代码块的最前面
rand函数
- 用于生成随机数
- 格式 void表示无参,直接用括号即可
但此时每次生成的随机数,会循环恒定,就显得不是那么随机
在查找文档后,发现我们应该在每次调用rand函数之前,还要利用srand ,其作用是设置随机数的起点
- srand使用方法,后面的括号里面填写整形。
- 此时输出结果恒定,且随着括号内的数字改变而改变,因此我们又需要设置一个真正的随机数,但我们设置这个函数的目的就是生成随机数,,到头来竹篮打水一场空(狗头保命)
但我们也可以设置一个会随机变得数字即可满足
- 这时我们提出时间戳的概念,时间戳是现在的时间与1970年1月1日0时0秒(计算机的起始时间)的差值,单位为秒。
C语言是如何设置时间戳?
这时我们又需要另外一个函数time函数,他的头文件为time. h,作用是获得系统时间。
time格式
time函数的类型是time_t,类似于整形的类型是int,但time_t本质上是long长整型。
srand格式:
-------------------------------总结srand()括号内需要整形
最终的格式。
NULL表示空指针,不想有什么实际效果。
rand------>srand------->time 顺序
- 当生成随机数成功时,可以尝试生成1~100之间,
可以利用%100再加一即可。妙哉!
自我总结:
这是我编译代码自认为最复杂的一次,别光看他只是一个小小的猜数字游戏,但其中蕴含了许多知识,杂糅了许许多多(函数,选择语句,判断语句,指针等等)。最最综合的一次,但我能靠自己单独编译出来,还是满满的成就感,意味着我在C语言小试牛刀,初露锋芒。
希望我不忘初心,一直走下去。自勉,看到这篇博客的人也共勉!!!
以上是关于猜数字游戏的主要内容,如果未能解决你的问题,请参考以下文章