IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 24点游戏 -> 正文阅读

[C++知识库]24点游戏

24点游戏

快到新年了,我为大家编了一个游戏——24点

24点游戏简介

相信大家基本了解24点游戏,不过我在说一下,24点游戏就是给出4个1~10的数,通过加减乘除的基本运算法则得到24。

游戏代码

游戏部分借鉴
游戏有些缺陷只能将4个数固定位置进行运算。

#include<bits/stdc++.h>
using namespace std;

//倒计时函数类 
class Clock{
	int h;
	int m;
	int s;
public:
	void set(int hour,int min,int sec);//set(int ,int ,int )
	void tick();
	void show();
	void run();
};
void Clock::set(int hour,int min,int sec)
{
	h=hour;
	m=min;
	s=sec;
}
void Clock::tick()
{
	time_t t=time(NULL);//取得当前时间
	while(time(NULL)==t);
	if(--s<0){
		s=59;
		if(--m<0){
			m=59;
			--h<0;
		}
	}
}
void Clock::show()
{
	cout<<'\r';
	if(h<10)cout<<0;
	cout<<"                                     "<<h<<':';
	if(m<10)cout<<0;
	cout<<m<<':';
	if(s<10)cout<<0;
	cout<<s<<flush;
}
void Clock::run()
{
	while(h!=0||m!=0||s!=0){
		tick();
		show();
	}
	cout<<"     "<<endl;
	cout<<"                                     答题时间到!"<<endl;
	cout<<'\a';
}

char op[4]={'+','-','*','/'};   //定义数组存放运算符
float calculate(float x,float y,int op)
{
	float s;    //定义运算后得到的结果
	switch(op)  //判断进行哪种运算
	{
	case 0:	
		s=x+y;
		break;
	case 1:
		s=x-y;
		break;
	case 2:
		s=x*y;
		break;
	case 3: 
		if(y!=0)
			s=x/y;
		break;
	}
	return s;  //返回得到的计算结果
}
    //四位数能生成5种公式,分别为((A#B)#C)#D,(A#(B#C))#D,A#(B#(C#D))A#((B#C)#D),(A#B)#(C#D)
	//对应公式1 ((A#B)#C)#D
	float cal1(float a,float b,float c,float d,int op1,int op2,int op3)
	{
		float t1,t2,t3;
		t1=calculate(a,b,op1);    //调用calculate函数
		t2=calculate(t1,c,op2);
		t3=calculate(t2,d,op3);
		return t3;
	}
	//对应公式2 (A#(B#C))#D
	float cal2(float a,float b,float c,float d,int op1,int op2,int op3)
	{
		float t1,t2,t3;
		t1=calculate(b,c,op2);   //调用calculate函数
		t2=calculate(a,t1,op1);
		t3=calculate(t2,d,op3);
		return t3;
	}
	//对应公式3 A#(B#(C#D))
	float cal3(float a,float b,float c,float d,int op1,int op2,int op3)
	{
		float t1,t2,t3;
		t1=calculate(c,d,op3);    //调用calculate函数
		t2=calculate(b,t1,op2);
		t3=calculate(a,t2,op1);
		return t3;
	}
	//对应公式4 A#((B#C)#D)
	float cal4(float a,float b,float c,float d,int op1,int op2,int op3)
	{
		float t1,t2,t3;
		t1=calculate(b,c,op2);    //调用calculate函数
		t2=calculate(t1,d,op3);
		t3=calculate(a,t2,op1);
		return t3;
	}	
	//对应公式5 (A#B)#(C#D)
	float cal5(float a,float b,float c,float d,int op1,int op2,int op3)
	{
		float t1,t2,t3;
		t1=calculate(a,b,op1);    //调用calculate函数
		t2=calculate(c,d,op3);
		t3=calculate(t1,t2,op2);
		return t3;
	}
	int get24(float a,float b,float c,float d)
	{
		int op1,op2,op3;   //定义公示中的三个运算符
		int flag=0;
		cout<<"      "<<endl; 
		cout<<"                  满足的式子如下所示:"<<endl;
		for(op1=0;op1<4;op1++)
		{
			for(op2=0;op2<4;op2++)
			{
				for(op3=0;op3<4;op3++)
				{
					if(cal1(a,b,c,d,op1,op2,op3)==24)
					{
						cout<<"                                       ";
						cout<<'('<<'('<<a<<op[op1]<<b<<')'<<op[op2]<<c<<')'<<op[op3]<<d<<'='<<24<<endl;
						flag=1;
 
					}
					if(cal2(a,b,c,d,op1,op2,op3)==24)
					{
						cout<<"                                       ";
						cout<<'('<<a<<op[op1]<<'('<<b<<op[op2]<<c<<')'<<')'<<op[op3]<<d<<'='<<24<<endl;
						flag=1;
					}
					if(cal3(a,b,c,d,op1,op2,op3)==24)
					{
						cout<<"                                       ";
						cout<<a<<op[op1]<<'('<<b<<op[op2]<<'('<<c<<op[op3]<<d<<')'<<')'<<'='<<24<<endl;
						flag=1;
					}
					if(cal4(a,b,c,d,op1,op2,op3)==24)
					{
						cout<<"                                       ";
						cout<<a<<op[op1]<<'('<<'('<<b<<op[op2]<<c<<')'<<op[op3]<<d<<')'<<'='<<24<<endl;
						flag=1;
					}
					if(cal5(a,b,c,d,op1,op2,op3)==24)
					{
						cout<<"                                       ";
						cout<<'('<<a<<op[op1]<<b<<')'<<op[op2]<<'('<<c<<op[op3]<<d<<')'<<'='<<24<<endl;
						flag=1;
					}
				}
			}
		}
		return flag;
	}
	int main()
{
	int i,a=0,b=0,c=0,d=0;  //定义i是否开始游戏,a,b,c,d为需要输入的四个数字
	int select=1;   //select表示用户选择是否进入游戏
	cout<< "**********************************************************************************************"<<endl
	    << "******************************        欢迎进入24点真人游戏       *****************************"<<endl  
	    << "**********************************************************************************************"<<endl
		<< "**********************                      祝大家                        ********************"<<endl
	    << "**********                                                                           *********"<<endl
	    << "*********                                                                             ********"<<endl
		<< "             71          77      17               11     71                     77     "<<endl        
        << "          641880141 0080888     80857777771157    80     687        708880808088807    "<<endl        
        << "          7507 706  08         889144888908809    087 8888880808    680    7           "<<endl        
        << "           187 784  80       5807    789        8100887  487 780    887   708          "<<endl        
        << "          037608714708888801 7062588080888888  70 08 7   40   88   7087777180777777    "<<endl        
        << "          77 185 7  80  80     78077718677777   7 80 745168119808  18590808080808881   "<<endl        
        << "          561486197 08  08     183   709          08 117480817714     17  788  71      "<<endl        
        << "           0  8778  80  80   880808888888080887   88    60709        086  708  680     "<<endl        
        << "          08 701 91887  88   777 777 388 77777    08  7807 7881    4087   780   7804   "<<endl        
        << "          778881  808   80           180          8070807    6808  68  080800    787   "<<endl        
        << "            77     7    77           717          11 77        7        777            "<<endl
		<< "*********                                                                             ********"<<endl
		<< "**********                                                                           *********"<<endl
	    << "******************************       史博今2021年11月29日        *****************************"<<endl 
	    
		<< "**********************************************************************************************"<<endl;
	while (select)
	{
		cout<< "**********************************************************************************************"<<endl
			<< "******************************    开始游戏请按0,退出游戏请按1   *****************************"<<endl 
	        << "**********************************************************************************************"<<endl; 
		cin>>i;
		system("cls");
		switch(i)            
		{
		case 0:      //选择0开始游戏
			int n[50];
			memset(n,0,sizeof(n));
			int a,b,c,d,w,x,y,z;    //定义生成的四个数字
			cout<< "**********************************************************************************************"<<endl
			    << "******************************       24点真人游戏,本局开始       *****************************"<<endl 
	    	    << "**********************************************************************************************"<<endl
				<< "*********  游戏第一步: 系统开始输入4个数字:                                    ********"<<endl
				<< "**********                                                                           *********"<<endl; 
			cout<<"*********       请输入第一个数字:";                               		
			cin>>a; 
			cout<<endl;
			cout<<"*********       请输入第二个数字:";
			cin>>b; 
			cout<<endl;
			cout<<"*********       请输入第三个数字:";
			cin>>c;
			cout<<endl;
			cout<<"*********       请输入第四个数字:";
			cin>>d;
			system("cls");
	    	cout<< "**********************************************************************************************"<<endl
			    << "******************************            24点真人游戏           *****************************"<<endl 
	    	    << "**********************************************************************************************"<<endl
				<< "**********************************************************************************************"<<endl
				<< "*********  游戏第二步: 快速抢答!                                                ********"<<endl 
				<< "**********                                                                            ********"<<endl 
			    << "********* 本局的四个数字为:                                                          ********"<<endl
			    << "*********       第一个数字:"<<a<<endl
				<< "*********       第二个数字:"<<b<<endl
				<< "*********       第三个数字:"<<c<<endl
				<< "*********       第四个数字:"<<d<<endl
				<< "*********       "<<endl
				<< "**********************************************************************************************"<<endl
				<< "*********                    答题时间20秒。倒计时开始!                               ********"<<endl
				<<endl; 
			//倒计时 
			Clock clock;
			clock.set(0,0,20);
			clock.run(); 
	    	cout<< "**********************************************************************************************"<<endl
				<< "**********************************************************************************************"<<endl
				<< "                                                                                              "<<endl
				<< "*********                         查看答案,请按m!                                   ********"<<endl
				<< "**********************************************************************************************"<<endl;
			char j;
			cin>>j;
			system("cls");
	    	cout<< "**********************************************************************************************"<<endl
			    << "******************************            24点真人游戏           *****************************"<<endl 
	    	    << "**********************************************************************************************"<<endl
				<< "**********************************************************************************************"<<endl
				<< "*********                         游戏第三步: 系统计算的所有答案                     ********"<<endl 
				<< "**********                                                                            ********"<<endl 
			    << "********* 本局的四个数字为:                                                          ********"<<endl
			    << "*********       第一个数字:"<<a<<endl
				<< "*********       第二个数字:"<<b<<endl
				<< "*********       第一个数字:"<<c<<endl
				<< "*********       第一个数字:"<<d<<endl
				<< "**********************************************************************************************"<<endl
				<< "*********                                    答案详情                                 ********"<<endl; 
	
			if(j=='m'){
				if(get24(a,b,c,d))break;  //判断随机生成的四个数字经过计算是否得到24
				else 
				{
					cout<<"                             对不起,这四个数字通过计算不能得到24"<<endl;
					break;
				}
			}
		case 1:    //选择1退出游戏
			select=0;
			system("cls");
			cout<< "**********************************************************************************************"<<endl
			    << "******************************            24点真人游戏           *****************************"<<endl 
	    	    << "**********************************************************************************************"<<endl
				<< "**********************************************************************************************"<<endl
				<< "**********                                                                            ********"<<endl 
				<< "*********                               游戏结束,明年再战!!                        ********"<<endl 
				<< "**********                                                                            ********"<<endl 
				<< "**********                                                                            ********"<<endl 
				<< "*********                 明年将会有更好玩更精美的游戏,欢迎大家再次体验!!          ********"<<endl 
				<< "**********************************************************************************************"<<endl;
			break;
		default:   //默认输出“请在0和1之间选择”
			cout<<"请在0和1之间选择"<<endl;
		}
	}
	return 0;
}

希望大家提建议。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-30 15:24:34  更:2021-11-30 15:27:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:22:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码