C++实现简单的猜数字小游戏

news2024/12/23 7:58:19

 猜数字


小游戏介绍:猜数字游戏是令游戏机随机产生一个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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1315854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音频DAC,ADC,CODEC的选型分析,高性能立体声

想要让模拟信号和数字信号顺利“交往”&#xff0c;就需要一座像“鹊桥”一样的中介&#xff0c;将两种不同的语言转变成统一的语言&#xff0c;消除无语言障碍。这座鹊桥就是转换器芯片&#xff0c;也就是ADC芯片。ADC芯片的全称是Analog-to-Digital Converter, 即模拟数字转换…

TCPIP介绍

可见 TCP/IP 被分为 4 层&#xff0c;每层承担的任务不一样&#xff0c;各层的协议的工作方式也不一样&#xff0c;每层封装上层数据的方式也不一样&#xff1a; 应用层&#xff1a;应用程序通过这一层访问网络&#xff0c;常见 FTP、HTTP、DNS 和 TELNET 协议&#xff1b; 传输…

【C语言】详解文件操作

&#xff08;零&#xff09;引入 终端是计算机系统中与用户进行交互的界面。 在以往的程序中&#xff0c;我们通过终端用键盘输入数据&#xff0c;通过屏幕输出信息。 但是&#xff0c;如果我们不想手动低效地输入数据&#xff0c;而是通过文件一次性高效输入&#xff1b; 如果…

OpenHarmony 如何去除系统锁屏应用

前言 OpenHarmony源码版本&#xff1a;4.0release / 3.2 release 开发板&#xff1a;DAYU / rk3568 一、3.2版本去除锁屏应用 在源码根目录下&#xff1a;productdefine/common/inherit/rich.json 中删除screenlock_mgr组件的编译配置&#xff0c;在rich.json文件中搜索th…

GraphicsProfiler 使用教程

GraphicsProfiler 使用教程 1.工具简介&#xff1a;2.Navigation介绍2.1.打开安装好的Graphics Profiler。2.2.将手机连接到计算机&#xff0c;软件会在手机中安装一个GraphicsProfiler应用(该应用是无界面的&#xff09;。2.3.Show files list2.4.Record new trace2.4.1.Appli…

自然数分解 C语言xdoj64

输入说明 一个正整数 n&#xff0c;0<n<30 输出说明 输出n个连续奇数&#xff0c;数据之间用空格隔开&#xff0c;并换行 输入样例 4 输出样例 13 15 17 19 int main() {int n;scanf("%d",&n);if(n % 2 0){//n为偶数int in;//打印数字个数&#xff0c;做循…

【每日一题】统计区间中的整数数目

文章目录 Tag题目来源解题思路方法一&#xff1a;平衡二叉搜索树 写在最后 Tag 【平衡二叉搜索树】【设计类】【2023-12-16】 题目来源 2276. 统计区间中的整数数目 解题思路 方法一&#xff1a;平衡二叉搜索树 思路 用一棵平衡二叉搜索树维护插入的区间&#xff0c;树中的…

Java-----链表练习题(上)

本篇碎碎念&#xff1a;本篇无碎碎念 今日份励志文案: 很多人认为他们在思考&#xff0c;其实他们只是在整理自己的偏见 目录 一.203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 二.21. 合并两个有序链表 - 力扣&#xff08;LeetCode&#xff09…

【STM32入门】4.2对射红外传感器计次

1.接线方式 主要是编写传感器的驱动、配合OLED&#xff0c;每遮挡对射红外传感器&#xff0c;OLED屏幕的计数就加一。 2.驱动编写 首先新建.c文件和.h文件&#xff0c;命名为CountSensor 国际惯例&#xff0c;.c文件内要包含stm32.h头文件&#xff0c;然后编写 CountSensor_…

C++初阶-list类的模拟实现

list类的模拟实现 一、基本框架1.1 节点类1.2 迭代器类1.3 list类 二、构造函数和析构函数2.1 构造函数2.2 析构函数 三、operator的重载和拷贝构造3.1 operator的重载3.2 拷贝构造 四、迭代器的实现4.1 迭代器类中的各种操作4.1 list类中的迭代器 五、list的增容和删除5.1 尾插…

力扣第2题-判断一个数值是否是回文数[简单]

题目描述 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&am…

c语言中的static静态(1)static修饰局部变量

#include<stdio.h> void test() {static int i 1;i;printf("%d ", i); } int main() {int j 0;while (j < 5){test();j j 1;}return 0; } 在上面的代码中&#xff0c;static修饰局部变量。 当用static定义一个局部变量后&#xff0c;这时局部变量就是…

蓝桥杯专题-真题版含答案-【扑克牌排列】【放麦子】【纵横放火柴游戏】【顺时针螺旋填入】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分…

人工智能与量子计算:开启未知领域的智慧之旅

导言 人工智能与量子计算的结合是科技领域的一场创新盛宴&#xff0c;引领我们进入了探索未知领域的新时代。本文将深入研究人工智能与量子计算的交汇点&#xff0c;探讨其原理、应用以及对计算领域的深远影响。 量子计算的崛起为人工智能领域注入了新的活力&#xff0c;开启了…

认知能力测验,①如何破解数字推理类测试题?

校园招聘&#xff08;秋招春招&#xff09;&#xff0c;最为常见的认知能力测验&#xff0c;在线工具网将整理分析关于认知能力测验的系列文章&#xff0c;希望能帮助大家顺利通过认知能力测评&#xff0c;找到自己心仪的工作。 数字推理测试&#xff0c;是我们在求职中经常会…

汇编语言的前世今生

计算机中的0和1是用电的状态表示的。具体来说&#xff0c;断开为0&#xff0c;接通为1。自然而言&#xff0c;这也对应着二进制。曾经时代的二进制加法机是一个划时代的产物&#xff0c;能够进行两个8位二进制数的实时加法&#xff0c;尽管今天看来很LOW。 图1 二进制加法器&am…

面向对象三大特征之二:继承

继承的快速入门 什么是继承&#xff1f; Java中提供了一个关键字extends&#xff0c;用这个关键字&#xff0c;可以让一个类与另一个类建立起父子关系 继承的特点 子类能继承父类的非私有成员&#xff08;成员变量、成员方法&#xff09; 继承后对象的创建 子类的对象是由…

商用机器人,不好用是原罪

热潮褪去后&#xff0c;所有的问题都汇总成一个词&#xff0c;不好用。 从炙手可热到“大玩具” 一款产品好用与否&#xff0c;更多时候人们不会关心它先进的技术、工艺、用料&#xff0c;也不会考虑所谓的潮流趋势或前景&#xff0c;只会用最朴素的直观感受告诉你&#xff0…

TrustZone之总线请求

接下来&#xff0c;我们将查看系统中的总线请求者&#xff0c;如下图所示&#xff1a; 系统中的A型处理器具有TrustZone感知&#xff0c;并在每个总线访问中发送正确的安全状态。然而&#xff0c;大多数现代SoC还包含非处理器总线请求者&#xff0c;例如GPU和DMA控制器。 与完成…

Modbus转Profinet网关使用方法

Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;是用于将Modbus协议和Profinet协议进行转换并进行通迅的设备。Modbus转Profinet网关&#xff08;XD-MDPN100/200&#xff09;无论是新项目还是改造项目都可轻松配置完成通迅互联。 正确的安装和配置对于确保设备的正…