猜数字游戏实现

目录

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://www.rhkb.cn/news/54511.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现猜数字

Python实现猜数字 对于这个问题我们需要考虑用户在输入错误后&#xff0c;需再次输入直至输入正确。 而随机数的产生我们交给random来处理。 下面献上我的代码&#xff1a; import random start‘y’ #这里个人感觉多余了&#xff0c;各位可以直接用 while True&#xff1a; wh…

chatgpt赋能python:Python最简单的游戏:猜数字

Python最简单的游戏&#xff1a;猜数字 你是否曾经想过&#xff0c;在学习Python编程语言的过程中&#xff0c;能够写一个小游戏来锻炼自己的编程技能呢&#xff1f;如果是的话&#xff0c;那么你一定会被这个最简单的游戏——猜数字&#xff0c;所吸引。在这篇文章中&#xf…

猜数字游戏详解

今天咱们来一起做一个游戏&#xff0c;可以算上是一个中小型的项目了&#xff0c;大概120多行代码&#xff0c;哈哈哈。来一起加油吧&#xff01; 当我们面对一个不小的项目的时候&#xff0c;我们先不要着急着手于项目的制作&#xff0c;我们要先学会在脑海中对项目的整体进行…

php猜数字

1.要求&#xff1a;随机写1-10中任意一个数&#xff0c;把猜的数填入文本框&#xff0c;如果猜的数小了&#xff0c;提示“猜小了“&#xff0c;猜大了就提示“猜大了”&#xff0c;如果相等&#xff0c;提示“猜对了”&#xff0c;并重新产生随机数&#xff0c;进行下一次游戏…

关于猜数字游戏的实现

关于简易猜数字游戏的实现 对于今天的三子棋游戏&#xff0c;有以下几个特性: 玩家通过输入数字来选择是否进行游戏或退出游戏&#xff0c;选错时会提示并重新输入通过键盘输入数据后&#xff0c;电脑会提示玩家所猜的数据过大或过小&#xff0c;若猜对则打印恭喜你&#xff…

猜数字游戏代码

for c in range(1,100): aint(input("请输入猜数的数值:1&#xff5e;100")) if (1&#xff1c;a&#xff1c;100) : break else : print("超出范围&#xff0c;请重新输入&#xff01;") for b in range(1,6): dint(input(&q…

世界顶级五大女程序媛,不仅技术强还都是美女

文章目录 1.计算机程序创始人&#xff1a;勒芙蕾丝伯爵夫人2.首位获得图灵奖的女性&#xff1a;法兰艾伦3.谷歌经典首页守护神&#xff1a;玛丽莎梅耶尔4.COBOL之母&#xff1a;葛丽丝穆雷霍普5.史上最强游戏程序媛-余国荔 说起程序员的话&#xff0c;人们想到的都会是哪些理工…

通过百度API检测人脸特征,获取颜值、年龄、性别--C语言实现

文章目录 通过百度API检测人脸特征&#xff0c;获取颜值、年龄、性别--C语言实现一、创建应用获取AK、SK1.注册登陆后点击&#xff1a;人脸识别云服务2.立即使用3.免费尝鲜领取后、创建应用4.拿到API Key 和Secret Key 二、通过API获取图片的颜值、年龄、性别信息1.获取access_…

这款社交APP,不建议女生下

最近发现&#xff0c;一个叫做Hay的APP霸榜App Store榜首多天。 这是一个专注全球聊天交友的APP&#xff0c;主打即时视频聊天功能。 即使语言不通也完全没有关系&#xff0c;Hay在视频聊天的下方&#xff0c;有app内置的翻译&#xff0c;翻译成双方能看得懂的语言。 想体验这款…

【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)

需要源码请点赞关注收藏后评论区留下QQ~~~ 本系统根据已有的模型上改写&#xff0c;添加了在给照片打分的同时可以显示照片&#xff0c;这样显得更加直观和真实 一、百度API文档 如需要请自行前往官网查询文档相关内容 百度API官网 部分内容如下 接口能力 人脸检测&#…

python神经网络:女生颜值打分器(一)

python讨论qq群&#xff1a;996113038 导语&#xff1a; 前几天写了一个批量下载“小姐姐”图片的爬虫&#xff0c;阅读量还挺高的。本来想多写一些这种类型的文章。毕竟学程序的男生比较多&#xff0c;都喜欢看与妹子相关的文章&#xff0c;但想着&#xff0c;这是一个技术类的…

python调用百度人脸识别对美女进行颜值打分

调用百度人脸识别 一、注册百度api 先百度开发者开发平台注册应用https://ai.baidu.com/tech/face/detect 1、创建应用 2、管理应用 APP_ID, API_KEY, SECRET_KEY都会用到 安装使用Python SDK 二、使用Python SDK 1、安装SDK pip install baidu-aip2、新建一个AipFace&a…

陪玩MM千千万,谁是你的NO.1?使用Python获取陪玩照片进行颜值检测打分

陪玩MM千千万&#xff0c;谁是你的NO.1&#xff1f;使用Python获取陪玩照片进行颜值检测打分 序言工欲善其事&#xff0c;必先利其器1、数据来源分析2、实现步骤3、环境与模块 代码展示 序言 哈喽好兄弟们~ 咱们这几年玩过游戏的&#xff0c;基本都知道陪玩吧&#xff01; 漂…

Python简单实现人脸识别检测, 对某平台美女主播照片进行评分排名

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 开发环境: Python 3.8 Pycharm 2021.2 模块使用: 第三方模块 requests >>> pip install requests tqdm >>> pip install tqdm 简单实现进度条效果 自带模块 os base64 采集代码 导入模块 # 数…

颜值大比拼,用数据告诉你中国哪里美女多?

这个被叫做”颜值调查”的互联网实验于4月29日晚上8点正式开放&#xff0c;截止5月4日24点&#xff0c;共有619位志愿者参与了活动&#xff0c;其中&#xff0c;地址和照片有效信息2413条。 从参与时间上看&#xff0c;29号晚上的短短4个小时以内&#xff0c;参与人数达到峰值的…

吃饱了撑的用python做一个颜值检测 并对美女排名❤

嗨害大家好鸭&#xff01;我是小熊猫&#x1f5a4;! 今天hin闲~ 要闲出P来了&#x1f4a8; 然后花了那么二、四、六、叭&#xff01;分钟~ 做了一个小小的颜值检测~ 目录&#xff08;可点击自己想去的地方哦~&#x1f60b;&#xff09; 开发环境: Python 3.8Pycharm 2021.2 …

别在看不起女程序媛了,一个高颜值女程序媛的日常

「 女程序媛崛起 」 今天这篇文&#xff0c;意义特殊&#xff0c;是我的一个迷妹程序媛-祈澈姑娘写的&#xff0c;她发给我后&#xff0c;我看了通篇&#xff0c;感觉写的很真实&#xff0c;而且又是记录女程序媛的日常&#xff0c;比较少见&#xff0c;所以我很有兴趣&#xf…

Python实现人脸识别检测,对主播进行颜值排行

前言 嗨嗨&#xff0c;我亲爱的家人们 今天来整点不一样的&#xff0c;嘿嘿 用Python简单实现对人脸识别的检测&#xff0c;对某平台主播照片进行评分排名 应该对女主播这个词不陌生吧&#xff0c;怎么说应该还是蛮多人看过一些女主播吧 我无聊的时候也会看看&#xff0c;…

我这个程序员是如何找到女朋友的

估计这是一篇虐狗的文章了&#xff01;&#xff01;请捂好小心脏 昨天刚好是恋爱一周年&#xff0c;那就写写我是如何脱单的故事了。 其实没啥好写的&#xff0c;毕竟我去年6月份换了家公司上班&#xff0c;好像还没过试用期吧。突然邻座的邻座的邻座的UI设计师就在某天加了我…