C++实现简单的猜数字小游戏
猜数字
小游戏介绍:猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了,还是小了,相等表示猜到了。如果猜到,则结束程序。
小游戏实现的功能:
1.设置随机数:生成1到100的随机数
2.精美的菜单:让用户明白怎么操作游戏
3.五次猜机会:只有五次猜数字的机会
4.游戏登入页面:输入密码登入小游戏
5.自行选择操作:用户自行选择玩游戏或者退出游戏
首先来到我们的头文件:
#include<iostream>//标准输入输出流
#include<malloc.h>//动态开辟内存
#include<assert.h>//断言
#include <Windows.h>//改变字体颜色
#include<ctime>//使用time函数
#include<conio.h>//使用getch函数
枚举常量:
enum Menu
{Quit = 0,Play = 1
};
小游戏的登入系统 :
void menu2()
{int input = 0, count = 0, i = 0;char mima[20] = "123";char shuru[20] = { 0 };system("color F4");cout << "\t\t\t **************************************" << endl;cout << "\t\t\t | *欢迎来到猜数字小游戏* |" << endl;cout << "\t\t\t | * * |" << endl;cout << "\t\t\t ------------------------------------ " << endl;cout<<"请输入登入密码:"<<endl;while ((count = _getch()) != '\r'){if (count == '\b'){i--;cout << "\b \b" << endl;}else{shuru[i++] = count;cout<<"*"<<flush; //flush不换行的输出流}}shuru[i++] = '\0';if (strcmp(mima, shuru) == 0)//比较字符串的大小{cout << "\n密码正确,您已进入系统!" << endl;}else{cout << "密码错误,请重新输入!" << endl;exit(0);//关闭当前文件}system("pause");system("cls");
}
我们的游戏环节:
void game()
{int r = rand() % 100 + 1;//生成1到100之间的随机数int* ptr = (int*)malloc(sizeof(int));assert(ptr);//判断ptr的动态内存有没有开辟成功int count = 5;while (count--){cout << "请输入你喜欢的数字>:" <<endl;cin >> *ptr;if (*ptr > r){cout << "你还有" << count << "次机会" << endl;cout << "猜大啦!" << endl;}else{cout << "你还有" << count << "次机会" << endl;cout << "猜小啦!" << endl;}if (*ptr == r){cout << "恭喜你,猜对了!" << endl;break;}if (count == 0){cout << "很遗憾,失败了,正确的值为" << r << endl;}}free(ptr);//释放空间ptr = NULL;
}
我们的操作菜单:
void menu1()
{system("color F4");cout << "|----------------------------------|" << endl;cout << "|----------*猜数字游戏*------------|" << endl;cout << "|------------1.Play----------------|" << endl;cout << "|------------0.Quit----------------|" << endl;cout << "|----------------------------------|" << endl;
}
我们的main函数:
int main()
{menu2();srand((unsigned int)time(NULL));//添加随机数种子,利用当前时间作为随机数,防止每次随机数都一样int* input = (int*)malloc(sizeof(int));assert(input);//判断input的动态内存有没有开辟成功do {system("cls");//清空控制台menu1();cout << "请输入当前操作:" << endl;cin >> *input;switch (*input){case Quit://枚举类型美化选项cout << "--------*您已退出游戏*--------" << endl;system("pause");break;case Play:game();system("pause");break;default:cout << "-----------*输入错误,重新输入*-----------" << endl;cin >> *input;system("pause");}} while (*input);free(input);//释放空间input = NULL;return 0;
}
以下就是我们猜数字小游戏的整个代码啦:
#include<iostream> #include<malloc.h> #include<assert.h> #include <Windows.h> #include<ctime> #include<conio.h> using namespace std; enum Menu {Quit = 0,Play = 1 }; void menu2() {int input = 0, count = 0, i = 0;char mima[20] = "123";char shuru[20] = { 0 };system("color F4");cout << "\t\t\t **************************************" << endl;cout << "\t\t\t | *欢迎来到猜数字小游戏* |" << endl;cout << "\t\t\t | * * |" << endl;cout << "\t\t\t ------------------------------------ " << endl;cout<<"请输入登入密码:"<<endl;while ((count = _getch()) != '\r'){if (count == '\b'){i--;cout << "\b \b" << endl;}else{shuru[i++] = count;cout<<"*"<<flush;}}shuru[i++] = '\0';if (strcmp(mima, shuru) == 0){cout << "\n密码正确,您已进入系统!" << endl;}else{cout << "密码错误,请重新输入!" << endl;exit(0);}system("pause");system("cls"); } void game() {int r = rand() % 100 + 1;int* ptr = (int*)malloc(sizeof(int));assert(ptr);int count = 5;while (count--){cout << "请输入你喜欢的数字>:" <<endl;cin >> *ptr;if (*ptr > r){cout << "你还有" << count << "次机会" << endl;cout << "猜大啦!" << endl;}else{cout << "你还有" << count << "次机会" << endl;cout << "猜小啦!" << endl;}if (*ptr == r){cout << "恭喜你,猜对了!" << endl;break;}if (count == 0){cout << "很遗憾,失败了,正确的值为" << r << endl;}}free(ptr);ptr = NULL; } void menu1() {system("color F4");cout << "|----------------------------------|" << endl;cout << "|----------*猜数字游戏*------------|" << endl;cout << "|------------1.Play----------------|" << endl;cout << "|------------0.Quit----------------|" << endl;cout << "|----------------------------------|" << endl; } int main() {menu2();srand((unsigned int)time(NULL));int* input = (int*)malloc(sizeof(int));assert(input);do {system("cls");menu1();cout << "请输入当前操作:" << endl;cin >> *input;switch (*input){case Quit:cout << "--------*您已退出游戏*--------" << endl;system("pause");break;case Play:game();system("pause");break;default:cout << "-----------*输入错误,重新输入*-----------" << endl;cin >> *input;system("pause");}} while (*input);free(input);input = NULL;return 0; }
相关文章:
C++实现简单的猜数字小游戏
猜数字 小游戏介绍:猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了,还是小了,相等表示猜到了。如果猜到&…...
人工智能导论复习资料
题型 1、简答题(5题) 2、设计题 3、综合题 4、论述题(10分) 考点 第一章 1、人工智能的定义、发展; 2、人工智能的学派、认知观及其间的关系; 3、人工智能要素及系统分类; 4、人工智能的研究、…...
Sentinel使用详解
组件简介 Sentinel是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀、消息削峰填谷、集群流量控…...
Vue3源码梳理:响应式系统的前世今生
响应性数据的前世 js的程序性: 一套固定的,不会发生变化的执行流程 1 )没有响应的数据 // 定义商品对象 const product {price: 10,quantity: 2 }// 总价格 let total product.price * product.quantity console.log(总价格:${total}) //…...
Jetpack Compose开发一个Android WiFi导航应用
在以前的一篇文章构建一个WIFI室内定位系统_wifi定位系统-CSDN博客中,我介绍了如何用Android来测量WiFi信号,上传到服务器进行分析后,生成室内不同地方的WiFi指纹,从而帮助进行室内导航。当时我是用的HTML5的技术来快速开发一个An…...
【Mode Management】ComM详细介绍
目录 1. Introduction and functional overview 2.Dependencies to other modules 3.Functional specification 3.1 Partial Network Cluster Management 3.2 ComM channel state machine 3.2.1 Behaviour in state COMM_NO_COMMUNICATION 3.2.1.1 COMM_NO_COM_NO_PENDI…...
【C++多线程编程】(二)之详解锁(lock)和解锁(unlock)
在C多线程编程中,锁(lock)和解锁(unlock)通常用于管理共享资源的访问,以防止多个线程同时对资源进行修改,从而避免竞态条件(Race Condition)和数据不一致性问题。C标准库…...
【Mypy】超级实用的python高级库!
今天,我很兴奋地向大家介绍一个神奇的Python库:Mypy。这个库是Python世界中的一颗璀璨明星,提供了静态类型检查的强大功能,极大地增强了Python这门动态类型语言的健壮性和可维护性。我们将深入探索Mypy的多个方面,并通…...
【Python基础】循环语句
文章目录 [toc]什么是循环Python中的循环方式while循环格式示例 什么是循环 程序中需要重复执行的代码,可以通过循环实现比如和女朋友道歉,或一万遍“宝宝,我错了”,在没有学习循环之前,我们只能通过如下方式实现 pr…...
【面试】广告优化
a1:点击率公式是什么?点击率低的原因是什么? 点击率点击/曝光,点击率低的原因主要有两点:一是创意不吸引人;二是目标受众不准确/定向过宽不精确,广告曝光给了对产品不感兴趣用户 a2:…...
RabbitMQ插件详解:rabbitmq_message_timestamp【Rabbitmq 五】
欢迎来到我的博客,代码的世界里,每一行都是一个故事 RabbitMQ时空之旅:rabbitmq_message_timestamp的奇妙世界 前言什么是rabbitmq_message_timestamprabbitmq_message_timestamp 的定义与作用:如何在 RabbitMQ 中启用消息时间戳&…...
AD9361 Evaluation Software配置脚本转换工具
最近在玩一个开源的AD9361项目,AD9361采用纯逻辑配置,不需要ARM或者MicroBlaze。其中,先是用AD9361 Evaluation Software生成配置脚本,再转换成ad9361_lut.v。 在网上查了一圈,有个转换工具叫bit_converter࿰…...
Centos7 配置Git
随笔记录 目录 1, 新建用户 2. 给用户设置密码相关操作 3. 为新用户添加sudo 权限 4. 配置Git 4.1 配置Git 4.2 查看id_ras.pub 5, 登录Git 配置SSH 秘钥 6. Centos7 登录Git 7. clone 指定branch到本地 8. 将新代码复制到指定路径 9. 上传指定代码 …...
python工具方法 44 数据仿真生成(粘贴目标切片到背景图像上,数据标签校验)
在深度学习训练中数据是一个很重要的因素,在数据不够时需要我们基于现有的数据进行增强生成新的数据。此外,在某特殊情况,如对某些目标切片数据(例如:石块分割切片)预测效果较差,需要增强其在训练数据中的频率。故此,我们可以将先有数据标注中的目标裁剪出来,作为样本…...
Llama 架构分析
从代码角度进行Llama 架构分析 Llama 架构分析前言Llama 架构分析分词网络主干DecoderLayerAttentionMLP 下游任务因果推理文本分类 Llama 架构分析 前言 Meta 开发并公开发布了 Llama系列大型语言模型 (LLM),这是一组经过预训练和微调的生成文本模型,参…...
vue3前端 md5工具类
工具类 /*** Namespace for hashing and other cryptographic functions* Copyright (c) Andrew Valums* Licensed under the MIT license, http://valums.com/mit-license/*/var V V || {}; V.Security V.Security || {};(function () {// for faster accessvar S V.Secur…...
Unity触摸 射线穿透UI解决
unity API 之EventSystem.current.IsPointerOverGameObject() 命名空间 :UnityEngine.EventSystems 官方描述: public bool IsPointerOverGameObject(); public bool IsPointerOverGameObject(int pointerId); //触摸屏时需要的参数ÿ…...
基于QTreeWidget实现带Checkbox的多级组织结构选择树
基于QTreeWidget实现带Checkbox的多级组织结构选择树 采用基于QWidgetMingw实现的原生的组织结构树 通过QTreeWidget控件实现的带Checkbox多级组织结构树。 Qt相关系列文章: 一、Qt实现的聊天画面消息气泡 二、基于QTreeWidget实现多级组织结构 三、基于QTreeWidget…...
探索 Vim:一个强大的文本编辑器
引言: Vim(Vi IMproved)是一款备受推崇的文本编辑器,拥有强大的功能和高度可定制性,提供丰富的编辑和编程体验。本文将探讨 Vim 的基本概念、使用技巧以及为用户带来的独特优势。 简介和发展 1. Vim 的简介和历史 V…...
K8S(十)—容器探针
这里写目录标题 容器探针(probe)检查机制探测结果探测类型何时该使用存活态探针?何时该使用就绪态探针?何时该使用启动探针? 使用exechttptcpgrpc使用命名端口 使用启动探针保护慢启动容器定义就绪探针配置探针HTTP 探测TCP 探测探针层面的…...
Nunchaku-FLUX.1-dev镜像安全加固:非root运行/最小权限/网络策略限制
Nunchaku-FLUX.1-dev镜像安全加固:非root运行/最小权限/网络策略限制 1. 为什么需要安全加固? 当你把Nunchaku-FLUX.1-dev这个强大的文生图模型部署在自己的服务器上时,可能更多关注的是它能生成多么精美的图片,或者处理中文提示…...
如何借助Kilo Code提升开发效率:从入门到专家的资源指南
如何借助Kilo Code提升开发效率:从入门到专家的资源指南 【免费下载链接】kilocode Kilo Code (forked from Roo Code) gives you a whole dev team of AI agents in your code editor. 项目地址: https://gitcode.com/GitHub_Trending/ki/kilocode 开篇价值…...
实时语音合成全解析:技术原理、应用场景与未来展望
实时语音合成全解析:技术原理、应用场景与未来展望 引言 在人工智能浪潮席卷全球的今天,让机器“开口说话”已不再是科幻场景。实时语音合成(Real-Time TTS) 技术,作为连接数字世界与人类听觉的桥梁,正以…...
KeyDecoder项目架构分析:理解Flutter应用的数据流与状态管理
KeyDecoder项目架构分析:理解Flutter应用的数据流与状态管理 【免费下载链接】KeyDecoder KeyDecoder app lets you use your smartphone or tablet to decode your mechanical keys in seconds. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyDecoder Ke…...
探索Beyond All Reason:重新定义开源实时战略游戏体验
探索Beyond All Reason:重新定义开源实时战略游戏体验 【免费下载链接】Beyond-All-Reason www.beyondallreason.info 项目地址: https://gitcode.com/gh_mirrors/be/Beyond-All-Reason Beyond All Reason是一款基于Spring引擎开发的开源实时战略(…...
Redis非主键索引查询实践,网友推荐:高效数据检索新方案
最近,关于使用Redis进行非主键查询的话题在开发者社区中引起了新的讨论。2024年7月,有技术博主分享了一套基于Redis Sorted Set和Hash的组合索引方案,声称在处理千万级用户数据的场景下,查询延迟降低了近70%。同年早些时候&#x…...
Empire渗透测试框架深度解析:如何构建无文件攻击链的实战指南
Empire渗透测试框架深度解析:如何构建无文件攻击链的实战指南 【免费下载链接】Empire EmpireProject/Empire: Empire 是一个开源的Post-Exploitation框架,主要用于渗透测试后的操作阶段,通过模块化的设计实现远程命令执行、持久化连接、凭证…...
3个实用技巧:如何用LeagueAkari提升你的英雄联盟游戏体验
3个实用技巧:如何用LeagueAkari提升你的英雄联盟游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联…...
别再傻傻克隆了!Conda 4.14+ 一键重命名虚拟环境的正确姿势(附版本检查)
Conda虚拟环境重命名终极指南:从版本检查到高效实践 在Python开发中,虚拟环境管理是每个开发者必备的核心技能。作为最流行的Python环境管理工具之一,Conda在4.14版本引入了一个革命性功能——直接重命名虚拟环境。这个看似简单的改进&#…...
石家庄整家定制哪个口碑好
在石家庄选择整家定制服务时,许多家庭会关注品牌的口碑、设计、环保与工艺。一个注重细节、提供系统解决方案的品牌,往往能更好地满足现代家居生活的需求。为什么整家定制受到青睐?整家定制能够根据户型、居住者习惯和审美偏好,提…...



