⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 24game.c

📁 1) 随机产生四个1-13的数
💻 C
📖 第 1 页 / 共 2 页
字号:
                {
                    if(l==i||l==j||l==k)
                    {
                        continue;
                    }
                    expression[1][0]=iNumInput[0][i];
                    expression[3][0]=iNumInput[0][j];
                    expression[5][0]=iNumInput[0][k];
                    expression[8][0]=iNumInput[0][l];

					expression[1][1]=eNumber;
					expression[3][1]=eNumber;
					expression[5][1]=eNumber;
					expression[8][1]=eNumber;
					for (ii=0;ii<4;ii++)
					{
						for (jj=0;jj<4;jj++)
						{
							for (kk=0;kk<4;kk++)
							{

									expression[2][0] = oper[ii];
									expression[2][1] = eOperator;
									expression[4][0] = oper[jj];
									expression[4][1] = eOperator;
									expression[7][0] = oper[kk];
									expression[7][1] = eOperator;
									expression[9][0] = oper[6];
									expression[9][1] = eOperator;
									expression[0][0] = oper[4];
									expression[0][1] = eOperator;
									expression[6][0] = oper[5];
									expression[6][1] = eOperator;									
									dRes = CalcOneExpress(expression);
									if(Equal24(dRes))
									{
										PR("可以这样运算:%c%d%c%d%c%d%c%c%d\n",oper[4],expression[1][0],oper[ii],expression[3][0],oper[jj],expression[5][0],oper[5],oper[kk],expression[8][0]);
										return TRUE;
										
									}								
							}
						}
					}//end of for oper
				}
			}
		}
	}
	return FALSE;
}

int CalcArray4(int iNumInput[2][4])
{
	// (a * b * c) * d	//9 number
	int expression[10][2];
	int ii,jj,i,j,k,l,kk;
	int dRes;
//	PR("CalcArray4\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)    
        {
            if(j==i)
            {
                continue;
            }
            for(k=0;k<4;k++)
            {
                if(k==i||k==j)
                {
                    continue;
                }
                for(l=0;l<4;l++)
                {
                    if(l==i||l==j||l==k)
                    {
                        continue;
                    }
                    expression[0][0]=iNumInput[0][i];
                    expression[3][0]=iNumInput[0][j];
                    expression[5][0]=iNumInput[0][k];
                    expression[8][0]=iNumInput[0][l];

					expression[0][1]=eNumber;
					expression[3][1]=eNumber;
					expression[5][1]=eNumber;
					expression[8][1]=eNumber;
					for (ii=0;ii<4;ii++)
					{
						for (jj=0;jj<4;jj++)
						{
							for (kk=0;kk<4;kk++)
							{
									expression[1][0] = oper[ii];
									expression[1][1] = eOperator;
									expression[4][0] = oper[jj];
									expression[4][1] = eOperator;
									expression[7][0] = oper[kk];
									expression[7][1] = eOperator;
									expression[9][0] = oper[6];
									expression[9][1] = eOperator;
									expression[2][0] = oper[4];
									expression[2][1] = eOperator;
									expression[6][0] = oper[5];
									expression[6][1] = eOperator;
									
									dRes = CalcOneExpress(expression);
									if(Equal24(dRes))
									{
										PR("可以这样运算:%d%c%c%d%c%d%c%c%d\n",expression[0][0],oper[ii],oper[4],expression[3][0],oper[jj],expression[5][0],oper[5],oper[kk],expression[8][0]);
										return TRUE;
										
									}								
							}
						}
					}//end of for oper
				}
			}
		}
	}
	return FALSE;
}

int CalcArray5(int iNumInput[2][4])
{
	// (a * b) * (c * d)	//11 number
	int expression[12][2];
	int ii,jj,i,j,k,l,kk;
	int dRes;
//	PR("CalcArray5\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)    
        {
            if(j==i)
            {
                continue;
            }
            for(k=0;k<4;k++)
            {
                if(k==i||k==j)
                {
                    continue;
                }
                for(l=0;l<4;l++)
                {
                    if(l==i||l==j||l==k)
                    {
                        continue;
                    }
                    expression[1][0]=iNumInput[0][i];
                    expression[3][0]=iNumInput[0][j];
                    expression[7][0]=iNumInput[0][k];
                    expression[9][0]=iNumInput[0][l];

					expression[1][1]=eNumber;
					expression[3][1]=eNumber;
					expression[7][1]=eNumber;
					expression[9][1]=eNumber;
					for (ii=0;ii<4;ii++)
					{
						for (jj=0;jj<4;jj++)
						{
							for (kk=0;kk<4;kk++)
							{
									expression[2][0] = oper[ii];
									expression[2][1] = eOperator;
									expression[5][0] = oper[jj];
									expression[5][1] = eOperator;
									expression[8][0] = oper[kk];
									expression[8][1] = eOperator;
									expression[11][0] = oper[6];
									expression[11][1] = eOperator;
									expression[0][0] = oper[4];
									expression[0][1] = eOperator;
									expression[6][0] = oper[4];
									expression[6][1] = eOperator;
									expression[4][0] = oper[5];
									expression[4][1] = eOperator;
									expression[10][0] = oper[5];
									expression[10][1] = eOperator;

									
									dRes = CalcOneExpress(expression);
									if(Equal24(dRes))
									{
										PR("可以这样运算:%c%d%c%d%c%c%c%d%c%d%c\n",oper[4],expression[1][0],oper[ii],expression[3][0],oper[5],oper[jj],oper[4],expression[7][0],oper[kk],expression[9][0],oper[5]);
										return TRUE;
										
									}								
							}
						}
					}//end of for oper
				}
			}
		}
	}
	return FALSE;
}

int CalcArray6(int iNumInput[2][4])
{
	// ((a * b) * c) * d	//11 number
	int expression[12][2];
	int ii,jj,i,j,k,l,kk;
	int dRes;
//	PR("CalcArray6\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)    
        {
            if(j==i)
            {
                continue;
            }
            for(k=0;k<4;k++)
            {
                if(k==i||k==j)
                {
                    continue;
                }
                for(l=0;l<4;l++)
                {
                    if(l==i||l==j||l==k)
                    {
                        continue;
                    }
                    expression[2][0]=iNumInput[0][i];
                    expression[4][0]=iNumInput[0][j];
                    expression[7][0]=iNumInput[0][k];
                    expression[10][0]=iNumInput[0][l];

					expression[2][1]=eNumber;
					expression[4][1]=eNumber;
					expression[7][1]=eNumber;
					expression[10][1]=eNumber;
					for (ii=0;ii<4;ii++)
					{
						for (jj=0;jj<4;jj++)
						{
							for (kk=0;kk<4;kk++)
							{

									expression[3][0] = oper[ii];
									expression[3][1] = eOperator;
									expression[6][0] = oper[jj];
									expression[6][1] = eOperator;
									expression[9][0] = oper[kk];
									expression[9][1] = eOperator;
									expression[11][0] = oper[6];
									expression[11][1] = eOperator;
									expression[0][0] = oper[4];
									expression[0][1] = eOperator;
									expression[1][0] = oper[4];
									expression[1][1] = eOperator;
									expression[5][0] = oper[5];
									expression[5][1] = eOperator;
									expression[8][0] = oper[5];
									expression[8][1] = eOperator;
									
									dRes = CalcOneExpress(expression);
									if(Equal24(dRes))
									{
										PR("可以这样运算:%c%c%d%c%d%c%c%d%c%c%d\n",oper[4],oper[4],expression[2][0],oper[ii],expression[4][0],oper[5],oper[jj],expression[7][0],oper[5],oper[kk],expression[10][0]);
										return TRUE;										
									}								
							}
						}
					}//end of for oper
				}
			}
		}
	}
	return FALSE;
}

int CalcArray7(int iNumInput[2][4])
{
	// (a * b * c) * d	//9 number
	int expression[12][2];
	int ii,jj,i,j,k,l,kk;
	int dRes;
//	PR("CalcArray7\n");
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)    
        {
            if(j==i)
            {
                continue;
            }
            for(k=0;k<4;k++)
            {
                if(k==i||k==j)
                {
                    continue;
                }
                for(l=0;l<4;l++)
                {
                    if(l==i||l==j||l==k)
                    {
                        continue;
                    }
                    expression[1][0]=iNumInput[0][i];
                    expression[4][0]=iNumInput[0][j];
                    expression[6][0]=iNumInput[0][k];
                    expression[10][0]=iNumInput[0][l];

					expression[1][1]=eNumber;
					expression[4][1]=eNumber;
					expression[6][1]=eNumber;
					expression[10][1]=eNumber;
					for (ii=0;ii<4;ii++)
					{
						for (jj=0;jj<4;jj++)
						{
							for (kk=0;kk<4;kk++)
							{
									expression[2][0] = oper[ii];
									expression[2][1] = eOperator;
									expression[5][0] = oper[jj];
									expression[5][1] = eOperator;
									expression[9][0] = oper[kk];
									expression[9][1] = eOperator;
									expression[11][0] = oper[6];
									expression[11][1] = eOperator;
									expression[0][0] = oper[4];
									expression[0][1] = eOperator;
									expression[3][0] = oper[4];
									expression[3][1] = eOperator;
									expression[7][0] = oper[5];
									expression[7][1] = eOperator;
									expression[8][0] = oper[5];
									expression[8][1] = eOperator;
									
									dRes = CalcOneExpress(expression);
									if(Equal24(dRes))
									{
										PR("可以这样运算:%c%d%c%c%d%c%d%c%c%c%d\n",oper[4],expression[1][0],oper[ii],oper[4],expression[4][0],oper[jj],expression[6][0],oper[5],oper[5],oper[kk],expression[10][0]);
										return TRUE;										
									}								
							}
						}
					}//end of for oper
				}
			}
		}
	}
	return FALSE;
}

int Calc24(int number[2][4])
{
	//括号的几种情况
	//1	无括号
	//2 (a b) c d		同a b (c d), 下省略
	//3 (a b c) d
	//4 a (b c) d
	//5 (a b) (c d)
	//6 ((a b) c) d
	//7 (a (b c)) d
	
	if (CalcArray1(number))//计算不含括号的情况
		return TRUE;
	if (CalcArray2(number))
	{				 
		return TRUE;
	}
	if (CalcArray3(number))
	{		 
		return TRUE;
	}
	if (CalcArray4(number))
	{		 
		return TRUE;
	}
	if (CalcArray5(number))
	{		 
		return TRUE;
	}
	if (CalcArray6(number))
	{		 
		return TRUE;
	}
	if (CalcArray7(number))
	{		 
		return TRUE;
	}
	PR("这四个数字不能算出24点.\n");
	return FALSE;	
}
/****************计算机计算模块*******************************/

void game_24_main(){
	char s[40],ch,mood;
	int result,t=1,t0=1,nall=0,nright=0,t1=1;
	double right;
	while(t==1){
		PR("你想采用什么模式?\n");
		PR("    ****************************************************\n");
		PR("    *-------24点游戏菜单-------------------------------*\n");
		PR("    *   计算机给出四个数字,你来算直到你想退出:-----0   *\n");  
		PR("    *自己给出四个数字,要计算机来算,直到想退出:-----1   *\n");
		PR("    *                            退出24点游戏:-----2   *\n");
		PR("    ****************************************************\n");
		PR("请选择模式:");
		mood=getch();
		PR("%c\n",ch);
//		scanf( "  %c",&mood);
		if (mood=='0'){
			nall=0;
			nright=0;
			t0=1;
			while(t0==1){
				number[2][4]=randomm();
				PR("这四个数字是: %d   %d    %d   %d\n",number[0][0],number[0][1],number[0][2],number[0][3]);
				PR("请输入算式\n做上5道看看会有什么结果……\n");
				PR("如果你认为这四个数算不出24点,请输入	?\n");
				PR("计算机将会给出答案,算不出也是一种答案!\n");
				PR("你的算式是:");
				scanf ("%s",s);
				if(s[0]=='?'){
					if (Calc24(number)==1){
						nall++;
					}
				}
				else {					
					result=EvaluateExpression(s);
					PR("你输入的算式的结果是: %d \n",result);
					if(result==24){
					PR("恭喜您,你算对了!\n");
					nright++;
					nall++;
                    }
					else {
						PR("对不起,你算错了,谢谢!\n");
						Calc24(number);
						nall++;
					}
				}//else
				PR("你共做了%d道,做对了%d道\n",nall,nright);
				if (nall%5==0&&nall!=0){
					right=(double)nright/nall;
					PR("你的正确率为: %f\n",right);
					if (right<0.5){
						PR("训练尚未成功,同志仍须努力!\n");
					}
					else if(right>=0.5&&right<0.7){
						PR("不错不错,假以时日,必成良材!\n");
					}
					else if(right>=0.7&&right<0.8){
						PR("将遇良材,非大战三百回合不可!\n");
					}
					else if(right>=0.8&&right<0.96){
						PR("对你的敬佩之情,如滔滔江水,绵绵不绝---^^\n");
					}
					else {
						PR("如此才智,老夫自愧不如\n");
					}
				}
				PR("继续这个模式吗?请选择: 'y':继续	'n':退出?\n");
				ch=getch();
   	//			scanf(" %c",&ch);
				if(ch=='n'||ch=='N'){
					t0=0;			
				}
				else  if (ch=='Y'||ch=='y')   t0=1;
				else{
					PR("你的选择(输入)有误!\n"); 
		//			t0=0;
       			}
			}//while mood 0
		}//end if mood 0
		else if (mood=='1'){
			t1=1;
			while (t1==1){
				PR("请输入四个正整数1-13:(用逗号隔开) ");
				scanf("%d,%d,%d,%d",&number[0][0],&number[0][1],&number[0][2],&number[0][3]);
				Calc24(number);
				PR("继续这个模式吗?请选择: 'y':继续	'n':退出?\n");
				ch=getch();
//				scanf(" %c",&ch);
				if(ch=='n'||ch=='N'){
					t1=0;			
				}
				else  if (ch=='Y'||ch=='y')   t1=1;
				else{
					PR("你的选择(输入)有误!\n"); 
					t1=0;
			 	}
			}
		}//end mood 1
		else if (mood=='2'){
	//		PR("		再见!\n");
			t=0;
		}
		else {
			PR("mood =%c\n",mood);
			PR("你的选择(输入)有误!\n");
	//		t=0;
		}
	}//end big while 
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -