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);
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;
}
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);
t2=calculate(t1,c,op2);
t3=calculate(t2,d,op3);
return t3;
}
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);
t2=calculate(a,t1,op1);
t3=calculate(t2,d,op3);
return t3;
}
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);
t2=calculate(b,t1,op2);
t3=calculate(a,t2,op1);
return t3;
}
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);
t2=calculate(t1,d,op3);
t3=calculate(a,t2,op1);
return t3;
}
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);
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;
int select=1;
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:
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;
else
{
cout<<" 对不起,这四个数字通过计算不能得到24"<<endl;
break;
}
}
case 1:
select=0;
system("cls");
cout<< "**********************************************************************************************"<<endl
<< "****************************** 24点真人游戏 *****************************"<<endl
<< "**********************************************************************************************"<<endl
<< "**********************************************************************************************"<<endl
<< "********** ********"<<endl
<< "********* 游戏结束,明年再战!! ********"<<endl
<< "********** ********"<<endl
<< "********** ********"<<endl
<< "********* 明年将会有更好玩更精美的游戏,欢迎大家再次体验!! ********"<<endl
<< "**********************************************************************************************"<<endl;
break;
default:
cout<<"请在0和1之间选择"<<endl;
}
}
return 0;
}
希望大家提建议。
|