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 探测探针层面的…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...



