java实现24点纸牌游戏
本文题目为大家分享了java实现24点纸牌游戏的具体代码,供大家参考,具体内容如下
题目
24点游戏是经典的纸牌益智游戏。
常见游戏规则:
从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求编程解决24点游戏。
基本要求:随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。
分析
用穷举法列出四个数加上三个运算符号所构成的表达式所有可能的结果
算法实现
importjava.util.*;
publicclasspoint24{
staticintsum=0;
staticint[]sum()//产生随机数并显示的方法
{
Randomrand=newRandom();
intr1=(1+rand.nextInt(13));
intr2=(1+rand.nextInt(13));
intr3=(1+rand.nextInt(13));
intr4=(1+rand.nextInt(13));
System.out.print("发出的牌为:");
switch(r1)
{
case1:System.out.print("A");break;
case11:System.out.print("J");break;
case12:System.out.print("Q");break;
case13:System.out.print("K");break;
default:System.out.print(r1);break;
}
switch(r2)
{
case1:System.out.print("A");break;
case11:System.out.print("J");break;
case12:System.out.print("Q");break;
case13:System.out.print("K");break;
default:System.out.print(""+r2);break;
}
switch(r3)
{
case1:System.out.print("A");break;
case11:System.out.print("J");break;
case12:System.out.print("Q");break;
case13:System.out.print("K");break;
default:System.out.print(""+r3);break;
}
switch(r4)
{
case1:System.out.println("A");break;
case11:System.out.println("J");break;
case12:System.out.println("Q");break;
case13:System.out.println("K");break;
default:System.out.println(""+r4);break;
}
int[]s=newint[]{r1,r2,r3,r4};
returns;
}
staticintjs(inti,intj,intx)//两个数之间计算符号确认
{
intm=0;
switch(x)
{
case0:m=i+j;break;
case1:m=i-j;break;
case2:m=i*j;break;
case3:
m=i/j;if(i%j!=0)m=-1;//如果除不尽直接让m=-1,以便直接结束此次循环
break;
}
returnm;
}
staticStringprin(ints1,ints2,ints3,ints4,intx1,intx2,intx3)//打印解的表达式
{
Stringch="";
switch(s1)
{
case1:System.out.print("A");ch="A";break;
case11:System.out.print("J");ch="J";break;
case12:System.out.print("Q");ch="Q";break;
case13:System.out.print("K");ch="K";break;
default:System.out.print(s1);ch=(String)(s1+"0");break;
}
switch(x1)
{
case0:System.out.print("+");ch+="+";break;
case1:System.out.print("-");ch+="-";break;
case2:System.out.print("*");ch+="*";break;
case3:System.out.print("/");ch+="/";break;
}
switch(s2)
{
case1:System.out.print("A");ch+="A";break;
case11:System.out.print("J");ch+="J";break;
case12:System.out.print("Q");ch+="Q";break;
case13:System.out.print("K");ch+="K";break;
default:System.out.print(s2);ch+=(String)(s2+"");break;
}
switch(x2)
{
case0:System.out.print("+");ch+="+";break;
case1:System.out.print("-");ch+="-";break;
case2:System.out.print("*");ch+="*";break;
case3:System.out.print("/");ch+="/";break;
}
switch(s3)
{
case1:System.out.print("A");ch+="A";break;
case11:System.out.print("J");ch+="J";break;
case12:System.out.print("Q");ch+="Q";break;
case13:System.out.print("K");ch+="K";break;
default:System.out.print(s3);ch+=(String)(s3+"");break;
}
switch(x3)
{
case0:System.out.print("+");ch+="+";break;
case1:System.out.print("-");ch+="-";break;
case2:System.out.print("*");ch+="*";break;
case3:System.out.print("/");ch+="/";break;
}
switch(s4)
{
case1:System.out.println("A");ch+="A";break;
case11:System.out.println("J");ch+="J";break;
case12:System.out.println("Q");ch+="Q";break;
case13:System.out.println("K");ch+="K";break;
default:System.out.println(s4);ch+=(String)(s4+"");break;
}
//System.out.println(""+ch);
returnch;
}
staticString[]con(ints[])//枚举计算是否存在解
{
booleanflag=false;
String[]ch=newString[100];
intjs1,js2,js3=0;
for(inti=0;i<4;i++)
{
for(intj=0;j<4;j++)
{
if(i!=j)
{
for(intk=0;k<4;k++)
{
if(i!=j&&j!=k&&i!=k)
{
for(intl=0;l<4;l++)
{
if(i!=j&&j!=k&&k!=l&&i!=k&&i!=l&&j!=l)
{
for(intx1=0;x1<3;x1++)
{
for(intx2=0;x2<3;x2++)
{
for(intx3=0;x3<3;x3++)
{
js1=js(s[i],s[j],x1);
if(js1==-1)continue;
js2=js(js1,s[k],x2);
if(js2==-1)continue;
js3=js(js2,s[l],x3);
if(js3==-1)continue;
if(js3!=-1)
{
if(js3==24)
{ch[sum]=prin(s[i],s[j],s[k],s[l],x1,x2,x3);
flag=true;
sum++;
}
}
}}}}}}}}}}
if(flag==false)
{
System.out.println("不存在一组解使其成为\"24点\"");
}
returnch;
}
publicstaticvoidmain(String[]args)
{
booleanf=false;
Scannerin=newScanner(System.in);
while(!f)
{
int[]s=sum();//产生4个随机纸牌
con(s);//求解并打印
System.out.println();
System.out.println("继续(1)or结束(0)");
if(in.nextInt()==1)
{f=false;}
else
{f=true;}
}
}
}
运行结果
随机数产生测试:
运行:
更多精彩游戏小代码,请点击《游戏专题》阅读
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。