经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
C语言代码实现猜数字游戏
来源:jb51  时间:2022/1/17 10:43:41  对本文有异议

前言:

本文主要讲解以c语言编写猜数字游戏,目的是介绍C语言中的循环和分支的具体用法。

一:猜数字游戏基本介绍&对程序预期

.猜数字游戏,顾名思义,就是系统随机给出一个数字,玩家对这个数字进行猜测,如果玩家猜测的数字大于给出的数字,则系统会提示猜大了,如果玩家猜测的数字小于给出的数字,则系统会提示猜小了,这样逐步缩小猜测范围,直到玩家猜对为止。

2.程序预期:猜数字结束后,玩家如果猜对了的话可以继续游戏,也可以退出游戏

二:程序设计思路

1.总体思路:

首先,实现游戏功能必须要有一个菜单来提示玩家如何进行操作。其次,为了代码具有可读性,可以将游戏部分函数和菜单部分函数作为两个子函数,然后在主函数调用他们。然后我们为了实现玩家可以多次游戏可以使用循环。

综上所述,我们应该设计两个子函数:菜单函数和游戏函数。一个主函数

2.菜单部分函数:

菜单部分函数

  1. void menu()
  2. {
  3. printf("***********************************************\n");
  4. printf("*************************1play*****************\n");
  5. printf("*************************0exit*****************\n");
  6. printf("***********************************************\n");
  7. }

菜单函数设计相对简单,只是为了提示玩家如何操作

3.游戏部分函数

  1. void game()
  2. {
  3. srand((unsigned int)time(NULL));
  4. int ret = rand() % 100 + 1;
  5. while (1)
  6. {
  7. printf("猜数字\n");
  8. int guess = 0;
  9. scanf("%d", &guess);
  10. if (guess > ret)
  11. {
  12. printf("猜大了\n");
  13. }
  14. else if (guess < ret)
  15. {
  16. printf("猜小了\n");
  17. }
  18. else
  19. {
  20. printf("猜对了\n");
  21. break;
  22. }
  23. }
  24. }

①在游戏函数部分,首先要生成随机数,生成随机数的方法如下:

C语言中提供了生成随机数的函数rand函数

rand函数会返回一个0到RAND-MAX的随机整数,使用这个函数需要包含头文件<stdlib.h>

但是rand函数每次生成的随机数相同,所以只用rand函数不够,所以要使用srand()函数增加随机性

后一句中说明在使用rand函数前要定义一个srand()函数

如画线句所示,srand函数的作用就是一个随机数的生成的种子。

而且需要一个无符号整型,在srand函数中括号输入一个随机数字即可生成随机数,时间正是一个一直在变化的数字。

在这里提出一个时间戳的概念:时间戳是指格林威治时间1970年01月01日00时00分00秒 (北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

因为srand需要的参数是无符号类型,所以对time进行强制类型转换。time后不需要参数,所以给他一个空指针。

使用srand((unsigned int)time(NULL))

输入time返回一个时间戳

需要一个头文件<time.h>

因为给出的随机数范围太大,所以需要限定随机数范围

如下:int ret = rand()%100+1,将随机数限定在0-100区间,便于猜测

②:猜数字环节

利用while循环来逐步缩小猜测范围,当猜测的数字等于随机数时提示”猜对了“。

4.主函数部分

  1. int main()
  2. {
  3. int input = 0;
  4. do
  5. {
  6. menu();
  7. scanf("%d", &input);
  8. switch (input)
  9. {
  10. case 1:
  11. game();
  12. break;
  13. case 0:
  14. break;
  15. default:
  16. printf("输入错误,请重新输入");
  17. }
  18. } while (input);
  19. return 0;
  20. }

主函数中使用了switch语句,和do-while语句

主要目的是为了玩家选择是否进入游戏

5.代码主体

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include<stdio.h>
  3. #include<time.h>
  4. void menu()
  5. {
  6. printf("***********************************************\n");
  7. printf("*************************1play*****************\n");
  8. printf("*************************0exit*****************\n");
  9. printf("***********************************************\n");
  10. }
  11. void game()
  12. {
  13. srand((unsigned int)time(NULL));
  14. int ret = rand() % 100 + 1;
  15. while (1)
  16. {
  17. printf("猜数字\n");
  18. int guess = 0;
  19. scanf("%d", &guess);
  20. if (guess > ret)
  21. {
  22. printf("猜大了\n");
  23. }
  24. else if (guess < ret)
  25. {
  26. printf("猜小了\n");
  27. }
  28. else
  29. {
  30. printf("猜对了\n");
  31. break;
  32. }
  33. }
  34. }
  35. int main()
  36. {
  37. int input = 0;
  38. do
  39. {
  40. menu();
  41. scanf("%d", &input);
  42. switch (input)
  43. {
  44. case 1:
  45. game();
  46. break;
  47. case 0:
  48. break;
  49. default:
  50. printf("输入错误,请重新输入");
  51. }
  52. } while (input);
  53. return 0;
  54. }

三:总结

此程序主要为了熟悉循环和分支的具体用法,并且学会利用时间戳和rand函数生成随机数。

到此这篇关于C语言代码实现猜数字游戏的文章就介绍到这了,更多相关C语言猜数字内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号