大家好,我是十一,今天给大家带来"猜数字游戏"的代码和讲解。

目录

前言

基本流程

1.打印菜单

1.1主函数逻辑

2.生成随机数

随机数生成结果

2.1srand函数

2.2时间戳

2.3time函数

2.4生成1-100的随机数

3.猜数字

代码运行效果

总体代码

main函数

game函数

menu函数


前言

在做猜数字游戏之前我们先来了解rand函数:

rand函数是专门用来生成随机数的,他对应的头文件是  <stdlib.h>  rand函数返回的是0-rand_MAX(0-32767)之间的一个随机数,既然有返回值,那么我们就需要创建一个变量来接收他的返回值:

int ret =rand();

基本流程

1.创建菜单选择开始游戏或退出游戏

2.生成随机数

3.玩家猜数字

1.打印菜单

我们需要生成一个菜单让玩家选择开始或退出

代码如下:

void menu()
{printf("**********************\n");printf("****    1.play    ****\n");printf("****              ****\n");printf("****    0.exit    ****\n");printf("**********************\n");
}

1.1主函数逻辑

代码如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main()
{   int input = 0;srand((unsigned int)time(NULL));//生成1-100的随机数do{menu();//打印菜单printf("请选择:>");scanf("%d", &input);switch (input){case 1:system("cls");//清屏让界面变整洁game();//游戏函数break;case 0:printf("退出游戏\n");break;default:printf("\n选择错误,请重新选择\n");break;}} while (input);return 0;
}

我们想让游戏一上来就能玩,所以我们需要写一个do...while循环,循环的判断条件是玩家输入的数字,所以我们需要创建一个input变量来存放玩家输入的数字,如果玩家输入的数字是1,游戏就正式开始,游戏结束之后循环继续,如果玩家输入的数字是0,就会提示退出游戏,并终止循环,如果输入其他数字则会提示选择错误并让玩家重新选择(循环继续)。

2.生成随机数

代码如下:

int ret = rand();

随机数生成结果

当我们退出游戏再重新打开:

不难发现,两次程序运行生成的随机数一模一样,那这个游戏就缺少了重复可玩性了,那这个游戏还有什么意义呢?所以我们需要对我们的代码进行优化,其实rand函数在调用之前还需要调用一个函数:srand(设置随机数的生成起点)

2.1srand函数

srand函数的调用需要传递一个整数,那么我们先试着传递一个0

    srand(0);int ret = rand();

可以看到,如果我们传递一个固定的值给srand函数,那么这个函数生成的值也是一个固定值,

那么我们的思路就是传递一个会变化的值给srand函数,那么什么值是一直在变化的呢?没错,就是时间!这时候就要用到时间戳:

2.2时间戳

时间戳就是从1970年1月1日(00:00:00 GMT)至当前时间的总秒数

我们就可以给srand函数传一个时间戳,这时候又要用到一个 time函数(对应的头文件是:<time.h>

2.3time函数

time函数返回的是time_t,time_t本质上其实是一个整数。time函数还需要一个time_t*的一个参数,我们不需要time函数的参数,所以我们就给他传递一个空指针(NULL):

srand((unsigned int)time(NULL));
//为了不让编译器报警告,我们要在time函数前加(unsigned int)

注意:srand函数是设置随机数的生成起点,所以srand在程序中只需要调用一次就可以,不需要多次调用,否则会出现以下问题:

多次调用后生成的随机数十分接近,调用过快甚至会导致生成的随机数一致!

所以我们要把srand函数放在main函数里而非game函数!

2.4生成1-100的随机数

我们要缩小随机数的生成范围为1-100,这样游戏会变得相对简单。

想要生成1-100的随机数我们就得对rand函数做一些改动:

int ret = rand() % 100 + 1;

任何数%100之后他的余数的取值范围必定是0-99之间,我们再对这个范围进行+1,就会产生1-100的随机数。

3.猜数字

有了随机数我们就可以进行猜数字了,我们需要设置一个循环让玩家能一直猜数字,直到猜对为止

代码如下:

void game()
{int n = 0;int ret = rand() % 100 + 1;while (1){printf("请猜数字(1-100)->");scanf("%d", &n);if (n < ret){printf("猜小了\n");}else if (n > ret){printf("猜大了\n");}else{printf("恭喜你猜对了,3秒后返回菜单\n");Sleep(3000);system("cls");break;}}
}

代码运行效果

总体代码

main函数

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <windows.h>
int main()
{   int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:system("cls");game();break;case 0:printf("退出游戏\n");break;default:printf("\n选择错误,重新选择\n");break;}} while (input);return 0;
}

game函数

void game()
{int n = 0;int ret = rand() % 100 + 1;while (1){printf("请猜数字(1-100)->");scanf("%d", &n);if (n < ret){printf("猜小了\n");}else if (n > ret){printf("猜大了\n");}else{printf("恭喜你猜对了,3秒后返回菜单\n");Sleep(3000);system("cls");break;}}
}

menu函数

void menu()
{printf("**********************\n");printf("****    1.play    ****\n");printf("****              ****\n");printf("****    0.exit    ****\n");printf("**********************\n");
}

以上就是本文全部内容,如有不足之处,还请各位多多包涵与指出。

每一个成功者都有一个开始。勇于开始,才能找到成功的路。

C语言入门小游戏——猜数字游戏(详解)相关推荐

  1. c语言程序设计 猜数字,猜数字游戏c语言编程,c语言编程 编一个猜数字游戏

    c语言编程 编一个猜数字游戏 #include #include #include #include void main()/*主函数*/ { int a,b,times=0,i,j,guess=0, ...

  2. c语言课题设计题目猜数字游戏,C语言课题设计报告(猜数字游戏)文档.doc

    C语言课题设计报告(猜数字游戏)文档 课 程 设 计 报 告 课程名称 C 语言课程设计 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1183 学 号 13 姓 名 鲁响 指导教师 王颖 ...

  3. Qt小游戏-猜数字游戏(使用设计器完成界面设计)

    目录 1.需要的知识点: 2.工程创建好后,先在设计器中实现界面 3.代码实现部分 ​编辑 使用QtCreator 完成简单小游戏-猜数字游戏实现效果如下: 1.需要的知识点: QLabel显示图片, ...

  4. CASIO 5800P计算器游戏--猜数字游戏

    CASIO 5800P 计算器游戏--猜数字游戏原代码 我编的计算器小游戏--猜数字游戏 LbI I↙ "xxGUESS NUMBERxx xPROGRAMMER:JCHx -------- ...

  5. C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)

    题目描述:输入1-100之间的数字,进行猜数字游戏,猜大猜小有提示,直至才对为止,游戏可以重复游玩. 算法思路: 1.用void函数分别写出菜单程序与游戏进程程序. 2.用switch-case-de ...

  6. C语言 入门级游戏 ——猜数字游戏

      作为一个入门级的,学完循环和函数就可以敲打出来的小游戏:相信都是大家心中不可磨灭的回忆                                                        ...

  7. C语言实现简单的猜数字游戏【快来看看你会吗~~】

    猜数字游戏 前言 游戏描述 思路 第一步,生成菜单 第二步,编写外部循环--反复玩 第三步,编写游戏代码 综上,整个游戏的代码如下: 前言 相信许多同学和我一样,刚接触c语言一段时间后,觉得c语言特别 ...

  8. c语言实现简单的猜数字游戏(1~100)

    猜数范围为1~100,猜大输出猜大了,猜小输出猜小了,游戏可以无限玩. 首先先做一个简单的菜单界面,只需要利用do--while循环就能实现,输入1开始游戏,输入0 退出游戏. int main() ...

  9. python猜数字游戏编程入门_Python实现猜数字游戏

    Python实现猜数字游戏 游戏规则: 随机产生1到100之间的整数 共有6次猜测机会,每次猜测如果不正确会提示大于或小于目标值,6次机会用完退出程序 6次机会,包含第6次机会如果猜中,提示用户猜中 ...

最新文章

  1. 傅里叶变换的Matlab代码
  2. 在jQuery和JavaScript中,实现转跳
  3. 标准10进制公制度量系统中 倍率关系 大全
  4. Microsoft Updater Application Block 1.5.3 服务器端manifest文件设计 [翻译]
  5. Integer类的装箱和拆箱到底是怎样实现的?
  6. SpringBoot应用场景启动器
  7. 将ojdbc 添加到maven
  8. 关于CPU的一些基本知识总结
  9. 全国行政区划代码/全国城市代码
  10. H265/HEVC Codec编解码(MP4和TS)
  11. 测试版ios15怎么信任软件,苹果ios15描述文件位置在哪 ios15授权信任设置方法教程...
  12. 使用python爬取App安卓应用商店评论并生成词云
  13. Deep Learning for UAV-based Object Detection andTracking: A Survey(论文翻译)
  14. Windows 10实用优化辅助工具
  15. 云服务器BCc怎么创建php环境,百度智能云服务器BCC如何升级wordpress的php环境
  16. 基于无线lora通信实现远程采集输出0~10v,0~20ma模拟量信号以及开关量信号
  17. Revit中土建模块【精准生梁】快速生成
  18. US1MF-ASEMI贴片快恢复二极管US1MF
  19. html怎么设置下划线形状,科技常识:CSS如何给文字添加下划线样式
  20. LeetCode 461. 汉明距离 (布赖恩·克尼根算法)

热门文章

  1. GCC的编译过程以及其同盟成员和ELF文件的分析
  2. 个人能买养老保险吗,养老保险交多少年?
  3. 手机飞行模式哪些鸿蒙不能用,手机飞行模式的6个隐藏功能,今天才知道,太亏了!!...
  4. DVDFab Photo Enhancer AI (AI图片无损放大软件)官方中文版V1.0.2.3 | 图片无损放大器
  5. Alexa工具查询网站流量
  6. linux socket pair
  7. terra-第三节:NC格式数据处理与输出、不同时间尺度影像合成
  8. 超全jquery网页特效素材网站整理
  9. 网络编程懒人入门系列目录集合
  10. 如何成功的做好一个网店的管理。