猜数字游戏实现

article/2025/4/6 18:17:14

目录

1.游戏的整个逻辑

2.提供一个菜单(可以随时玩)

3.当输入1时,并不是为了让它打印“猜函数”。而需写一个函数,完成猜函数的这个逻辑。

第一步:让电脑产生随机数

 第二步:让生成随机数的范围是0-100

 4.猜数字

//4_17 01:03:44
//猜数字游戏实现
//电脑产生一个随机数(1-100)
//猜数字
//猜大了
//猜小了
//
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{printf("******************************\n");printf("********   1.play   **********\n");printf("********   0.exit   **********\n");printf("******************************\n");
}
//生成随机值的范围时0-RAND_MAX(32767)
//0~RAND_MAX(32767)
void game()
{          //强制类型转换//需要传一个值并且这个值时刻在变化————时间戳//time()可以返回一个时间戳,包含头文件 #include<time.h>//RAND_MAX;//要引用头文件 #include<stdlib.h>//1.生成随机数int guess = 0;int ret = rand()%100+1;//生成随机数的函数//在调用rand之前,先使用srand函数来建立随机数生成器。//产生一个随机数(1-100)//0-99   1-100//printf("%d\n", ret);while (1){printf("请猜数字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了\n");break;}}}
int main()
{int input = 0;srand((unsigned int)time(NULL));//整个工程调用一次就好了do{menu();printf("请选择:>"); scanf("%d", &input);switch (input){case 1://printf("猜数字\n");game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择!\n");break;//这个break只是跳出switch循环,并不能跳出while循环}} while(input);//input为0时,退出while循环,为1和输入错误时,能继续循环,逻辑正确return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{printf("******************************\n");printf("********   1.play   **********\n");printf("********   0.exit   **********\n");printf("******************************\n");
}
void game()
{          int guess = 0;int ret = rand()%100+1;while (1){printf("请猜数字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了\n");break;}}}
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>"); scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择!\n");break;//这个break只是跳出switch循环,并不能跳出while循环}} while(input);return 0;
}

1.游戏的整个逻辑

让电脑产生随机数(1-100)

猜数字——如果输入的数字大于产生的随机数,反馈“猜大了”

猜数字——如果输入的数字小于产生的随机数,反馈“猜小了”

2.提供一个菜单(可以随时玩)

用do……while循环提供一个菜单,因为do无论如何都要执行一次循环。

首先打印一个菜单,并写出输入1则表示玩游戏,输入0则表示退出游戏。

#include<stdio.h>
void menu()
{printf("********************************\n");printf("***********  1.paly  ***********\n");printf("***********  0.exit  ***********\n");printf("********************************\n");
}
int main()
{int input = 0;do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("猜数字\n");break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择!\n");break;}} while (input);//输入1则执行while循环,输入0则退出while循环,逻辑正确return 0;
}

3.当输入1时,并不是为了让它打印“猜函数”。而需写一个函数,完成猜函数的这个逻辑。

故printf("猜数字\n");  ——>   game();

第一步:让电脑产生随机数

用rand()函数,rand()函数是生成随机数的函数。

 //0-RAND_MAX(32767)
void game()
{
    //BAND_MAX;
    //1.生成随机数
    int ret = rand();//生成随机数的函数
    printf("%d\n", ret);
}

运行的程序结果是:

 所以,我们在调用rand函数之前,还需调用srand函数去设置随机数字生成器。

 void game()
{
    srand(100);
    //BAND_MAX;
    //1.生成随机数
    int ret = rand();//生成随机数的函数
    printf("%d\n", ret);
}

程序运行的结果是:

 

 生成的随机数数值不变,当将 srand(100)——>srand(200),运行的结果是:

 所以,只要srand( )括号里面的数发生变化,就可以生成随机数,那怎样才可以让srand( )括号里面的数随时发生变化呢?

时间是随时发生变化的。这里引进时间戳的概念:

 时间在变,时间戳在变,而时间戳是整数,可以传给srand()这个函数。

那么,如何生成时间戳呢?引进time函数,time函数的返回值就是时间戳。

 time_t是C语言规定的一个类型。

 代码如下,用time函数生成的时间戳作为srand( )函数随机数字生成的起点,再用rand调用生的随机数字。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{printf("********************************\n");printf("***********  1.paly  ***********\n");printf("***********  0.exit  ***********\n");printf("********************************\n");
}
//time_t 本质上,time_t的类型是一个整数,所以把time函数的返回值传给srand函数
void game()
{srand((unsigned int)time(NULL));//time函数的返回值是time_t,而srand函数的返回值是unsigned int,所以需要类型转换//1.生成随机数int ret = rand();//生成随机数的函数printf("%d\n", ret);
}
int main()
{int input = 0;do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择!\n");break;}} while (input);return 0;
}

 程序运行结果是:

 原因:我们确实在rand()函数使用之前调用srand(),但是不是每一次生成随机数的时候都设置这个起点,而是在整个工程里面设置一个起点就可以了。

所以 srand((unsigned int)time(NULL)); 不应该放在game( )函数里,而是把它放在主函数里面。

修改后的代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{printf("********************************\n");printf("***********  1.paly  ***********\n");printf("***********  0.exit  ***********\n");printf("********************************\n");
}
//0-RAND_MAX(32767)
//time_t //本质time_t的类型是一个整数,所以把time函数的返回值传给srand函数
void game()
{//1.生成随机数int ret = rand();//生成随机数的函数printf("%d\n", ret);
}
int main()
{srand((unsigned int)time(NULL));//time函数的返回值是time_t,而srand函数的返回值是unsigned int,所以需要类型转换int input = 0;do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择!\n");break;}} while (input);return 0;
}

运行结果是:

 第二步:让生成随机数的范围是0-100

只需将int ret = rand();——> int ret = rand()%100+1;

void game()
{//1.生成随机数int ret = rand()%100+1;//生成随机数的函数//因为rand生成的随机数是0~32767,所以ret%100=0~99//而0+1~99+1就变成1~100printf("%d\n", ret);}

这样就可以生成1~100之间的随机数了!

 4.猜数字

void game()
{int guess = 0;//1.生成随机数int ret = rand()%100+1;//生成随机数的函数//因为rand生成的随机数是0~32767,所以ret%100=0~99//而0+1~99+1就变成1~100//printf("%d\n", ret);//如果这行代码没有注释掉的话,会打印出生成的随机数//2.猜数字while (1){printf("请猜数字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了!\n");break;}}}

最终的代码是:

//猜数字游戏(复习)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{printf("********************************\n");printf("***********  1.paly  ***********\n");printf("***********  0.exit  ***********\n");printf("********************************\n");
}
//0-RAND_MAX(32767)
//time_t //本质上:time_t的类型是一个整数,所以把time函数的返回值传给srand函数
void game()
{int guess = 0;//1.生成随机数int ret = rand()%100+1;//生成随机数的函数//因为rand生成的随机数是0~32767,所以ret%100=0~99//而0+1~99+1就变成1~100//printf("%d\n", ret);//2.猜数字while (1){printf("请猜数字:>");scanf("%d", &guess);if (guess < ret){printf("猜小了\n");}else if (guess > ret){printf("猜大了\n");}else{printf("恭喜你,猜对了!\n");break;}}}
int main()
{srand((unsigned int)time(NULL));//time函数的返回值是time_t,而srand函数的返回值是unsigned int,所以需要类型转换int input = 0;do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,请重新选择!\n");break;}} while (input);return 0;
}

运行结果是:


http://chatgpt.dhexx.cn/article/UduZodnS.shtml

相关文章

C语言猜数字游戏的设计

猜数字游戏是一个经典的编程小游戏&#xff0c;下面我们通过思路解析、页面的优化以及思路的优化三个方面进行说明。 一、思路解析 猜数字游戏的大致思路大致可以分为以下几点: 1.菜单设计 作为一个游戏&#xff0c;哪怕只是小游戏&#xff0c;菜单也是必不可少&#xff0c…

C语言猜数字游戏(超级详解)

目录 一&#xff0c;前言 二&#xff0c;游戏规则 三&#xff0c;实现构思 四&#xff0c;实现过程 1&#xff0c;游戏菜单&#xff1a; 2&#xff0c;游戏框架&#xff1a; 3&#xff0c;关于实现随机值 4&#xff0c;游戏实现 五&#xff0c;总代码 一&#xff0c;前…

猜价格游戏c语言程序设计,编程猜数字游戏(高赏)

满意答案 你猜mi是谁 2014.09.11 采纳率&#xff1a;44% 等级&#xff1a;7 已帮助&#xff1a;410人 #include "stdio.h" #include "conio.h" #include #include main() { int c;/*猜数字的次数*/ int num; int guess;/*输入数字*/ char yesY; clrsc…

python编程—猜数字小游戏

一、系统随机生成一个1&#xff5e;100的数字&#xff1b; 二、用户共有5次机会猜&#xff1b; 三、如果用户猜测数字大于系统给出的数字&#xff0c;打印"too big" 四、如果用户猜测数字小于系统给出的数字&#xff0c;打印"too small" 五、如果用户猜…

猜数字小游戏(图像用户界面编程实验——猜数字游戏)

综合运用 GUI 编程相关语法&#xff0c;完成一个简单的猜数字游戏项目。 该程序随机在 1 到 1000 的范围中选择一个供用户猜测的整数。 界面上提供一个文本框来接收用户输入的猜测的数&#xff0c;如果用户猜得太大&#xff0c;则背景变为红色&#xff0c;如果猜得太小&#…

随机数的生成+猜数字游戏

随机数的生成&#xff1a; 关于随机数的生成&#xff0c;如果你去百度&#xff0c;你会看到这样的两段代码&#xff1a; srand((unsigned int)time(NULL)); int retrand(); 那么随机数到底是如何生成的呢&#xff1f;在编程中有哪些应用呢&#xff1f;接下来我们一起来看一下它…

C语言实现猜数字游戏

C语言实现猜数字游戏 目录 猜数字游戏内容方法 生成随机数的方法代码实现总代码版本2 猜数字游戏 前言 C生万物&#xff0c;想要学好编程&#xff0c;就要多敲代码。对于C中小白来说&#xff0c;学习了控制语句之后&#xff08;顺序、选择和循环&#xff09;&#xff0c;写一…

C语言程序设计——猜数字游戏

游戏玩法&#xff1a;每次随机生成一个1~100之间的数字&#xff0c;玩家通过输入数字来猜这个数&#xff0c;如果没猜中则提示玩家猜大了或者猜小了&#xff0c;直到玩家猜中数字结束游戏。 游戏玩法非常简单&#xff0c;那么怎么实现呢&#xff1f; 首先对内容进行分析&…

猜数字游戏实现(详解)

目录 前言 一、打印游戏菜单 二、循环条件补充 三、实现猜数字 1、生成随机数 2、猜数字 四、源码 前言 学了这么久的C语言&#xff0c;目前就可以通过我们曾经所学的知识来写一个猜数字游戏。怎么实现的呢&#xff1f;跟着我的脚步往下看吧&#xff01; 思路&#xff1a…

C语言猜数字小游戏---详解+源码

学了一些基础的C语言语法后我们就可以开始试着写一些小程序或者小游戏了&#xff0c;今天我就给大家用C语言写一个简单的猜数字小游戏。 源代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<windows.h> #include<stdlib.h> #…

【C语言编程】实现猜数字游戏

用C语言编程的方法来实现我们在生活中经常玩到的一个猜数字小游戏&#xff0c;其主要玩法就是我们编写出一个程序&#xff0c;起先计算机会先自动生成一个数&#xff0c;这个数也就是我们需要去才对的数&#xff0c;然后玩家在这个程序的执行开始后先输入一个数&#xff0c;拿这…

Python每日一练——第3天:三种猜数字小游戏

前言&#x1f4e2;&#x1f4e2; Python每日一练来啦&#xff0c;本文已收录于&#xff1a;《Python每日一练》专栏 此专栏目的在于&#xff0c;帮忙学习Python的小白提高编程能力&#xff0c;训练逻辑思维&#xff0c;每周持续更新中&#xff0c;欢迎免费订阅&#xff01;&a…

猜数字小游戏——c语言实现(详解)

目录 一、实现目标 二、准备部分 1.1 时间戳 2.1 rand&#xff08;&#xff09;函数 3.1 srand函数 4.1time函数 三、随机数的实现 四、游戏菜单的实现 五、菜单功能的实现 六、游戏主体部分 七、游戏完整代码 八、游戏实现效果图 九、总结 一、实现目标 1.写一个…

通过游戏编程学Python(1)— 猜数字

通过游戏编程学Python 通过游戏编程学Python&#xff08;1&#xff09;— 猜数字 文章目录 通过游戏编程学Python前言一、知识点二、第一个游戏 —— 猜数字1. 玩法简介2. 游戏流程 三、程序代码三、代码详细分析1. import语句2.输入与输出3.While循环4.代码段5.变量类型转换6…

C语言实现猜数字游戏(超详解)

目录 前言 一、游戏描述 二、代码实现 1.生成游戏菜单 2.构建主函数 3.构建游戏函数 三、二分法实现猜数 代码附上: 写在最后&#xff1a; 前言 猜数字小游戏是我们大多数人学习C语言时都会了解到的一个有趣的C语言小游戏&#xff0c;下面我将详细介绍该游戏的实现和…

都说要打造个人IP,那到底什么才是个人IP?

什么是个人IP&#xff0c;它由哪些组成&#xff1f; 它由多个方面组成&#xff0c;包括个人的网络行为、习惯、兴趣爱好、位置信息&#xff0c;以及其他可以用于识别个人的数据。 目录 什么是个人IP&#xff0c;它由哪些组成&#xff1f; 第一&#xff0c;性格方面 第二&am…

一键自动修改IP小工具分享

一键自动修改IP小工具分享 1.功能介绍2. 测试环境3. 背景4. 使用方法配置文件修改 5. 补充说明电脑上有多个网卡显示当前IP 6. 参考文档7. .exe程序下载链接 1.功能介绍 功能: 1. 可以一键修改电脑的IP(包括自动获取IP和手动配置固定IP); 2. 配置文件可根据需求修改; 3. 操作简…

普通网红如何打造个人IP?个人IP打造有哪些注意事项?

不管你是做哪个行业的,你一定要把自己个人IP打造成一个爆款,做窄做小,让你的用户去对号入座。 个人IP如何打造?把自己打造成爆款? 比如你是做保险的,你不能所有保险都去做,而是只做某一类保险,只针对某一类人群的保险。 比如只做美国保险,并且只做美国个人方面的报下,针对…

网络 IP

ip地址的分类 既然每个人的ip地址都不一样&#xff0c;那一台主机怎么通过ip地址找到另一台主机的呢&#xff0c;茫茫人海&#xff0c;不可能一个个查找把&#xff0c;所以就有专门的人来管理和分配这个ip地址&#xff0c;看看以前怎么分的地址(了解) 网络号由你所连的网决定&a…