猜数字游戏

要求:

  1. 电脑会生成一个随机数
  2. 猜数字

思路:

  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()放在主函数里面
  • 在主函数外面进行编译
  • 菜单相对简单,只需要设置游戏的开始与结束,整些花活

猜数字游戏

游戏部分:

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

如何生成随机数?

  • 先利用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语句相照应,妙哉!

 

猜数字游戏


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

注意事项:

  • 输入1/0,若有其他数字(情况),就显示错误,就会联想到switch  case语句中的default
  • 多分枝就联想到switch case语句
  • 输入的1和0也有讲究,1为真,0为假
  • 代码最后直接利用1/0判断真假
    •     一个函数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语言小试牛刀,初露锋芒。

    发表评论

    相关文章