扑克24点游戏JAVA源代码Word下载.docx
- 文档编号:16002995
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:34
- 大小:126.21KB
扑克24点游戏JAVA源代码Word下载.docx
《扑克24点游戏JAVA源代码Word下载.docx》由会员分享,可在线阅读,更多相关《扑克24点游戏JAVA源代码Word下载.docx(34页珍藏版)》请在冰豆网上搜索。
99485方片6*方片5-方片4-方片2=24.0
99486方片5*方片4+方片3+方片1=24.0
99487方片4*方片3*方片2*方片1=24.0
99488方片4*方片3*方片2/方片1=24.0
134********53
3.源码
附带正文:
packagecom.test.puke;
/**
*
*@authorGuanChi
*BUG说明:
*1.应该优先计算乘法(10+7/4*8)或(7/4*8+10)两种情况
*2.组合重复情况是否需要过滤,如上面
*/
publicclassPuke24Test
{
publicstaticvoidserviceExce()
{
intcount=0;
Puke24Testpuke24=newPuke24Test();
PokerContainerPokerContainer=puke24.newPokerContainer();
java.util.TreeSet<
Poker>
sPokers=PokerContainer.getPokers();
java.util.TreeMap<
String,Poker>
mPokers=puke24.getTreeMapPokersByTreeSet(sPokers);
Poker[]Pokers4=newPoker[4];
for(inti=1;
i<
=mPokers.size();
i++)
{
Pokers4[0]=mPokers.get("
"
+i);
for(intj=i+1;
j<
j++)
{
Pokers4[1]=mPokers.get("
+j);
for(intk=j+1;
k<
k++)
{
Pokers4[2]=mPokers.get("
+k);
for(intl=k+1;
l<
l++)
{
Pokers4[3]=mPokers.get("
+l);
Expression24[]exps=calcBy4Pokers(Pokers4);
for(intm=0;
m<
exps.length;
m++)
{
if(null!
=exps[m]&
&
24==exps[m].getResult())
{
System.out.println("
+++count+exps[m]);
}
}
}
}
}
}
//按次序获取四张牌,轮询所有组合方式,轮询所有计算方式,获取结果为24的
}
publicstaticExpression24[]calcBy4Pokers(Poker[]pokers4)
Expression24[]exps=newExpression24[4*4*4*4*4*4*4];
intn=0;
//第一个计算符号
for(bytei=1;
=4;
//第二个计算符号
for(bytej=1;
//第三个计算符号
for(bytek=1;
//第一个计算扑克牌
for(inta=1;
a<
a++)
//第二个计算扑克牌
for(intb=a+1;
b<
b++)
//第二张拍的脚码不能大于4,并且不能和前面牌重复
if(b>
4)
b=-4;
//第三个计算扑克牌
for(intc=b+1;
c<
c++)
//第三张拍的脚码不能大于4,并且不能和前面牌重复
if(c>
{
c=-4;
}
//第四个计算扑克牌
for(intd=c+1;
d<
d++)
//第四张拍的脚码不能大于4,并且不能和前面牌重复
if(d>
{
d=-4;
}
//计算单个算式的值
exps[n++]=calcByExp(
pokers4[a-1],
Math.convertByteType2CS(i),
pokers4[b-1],
Math.convertByteType2CS(j),
pokers4[c-1],
Math.convertByteType2CS(k),
pokers4[d-1]
);
returnexps;
/**
*给定三个计算符号的顺序,把四张牌轮流各个位置,计算出结果
*@parampoker第一张扑克
*@paramj第一个计算符号
*@parampoker2第二张扑克
*@paramk第二个计算符号
*@parampoker3第三张扑克
*@paraml第三个计算符号
*@parampoker4第四张扑克
*@return表达式
*@attention?
代表未知符号在该方法注释里面
privatestaticExpression24calcByExp(Pokerpoker,Math.CountSymbolj,Pokerpoker2,
Math.CountSymbolk,Pokerpoker3,Math.CountSymboll,Pokerpoker4)
doubled=0;
//当第一个计算符号为乘号或者除号的时候,先计算乘除法(如,1*2?
3?
if(j==Math.CountSymbol.MUL||j==Math.CountSymbol.DIV)
d=Math.calc(poker.getNumber(),j,poker2.getNumber());
//当第二个符号也为乘除法的时候,用第一次计算的值和第三个数相乘除,然后直接和第四个数字计算(如,1*2*3?
if(k==Math.CountSymbol.MUL||k==Math.CountSymbol.DIV)
d=Math.calc(d,k,poker3.getNumber());
d=Math.calc(d,l,poker4.getNumber());
//当第二个符号不为乘除法,第三个符号为乘除法的时候,先计算第三、第四个数,然后把第一次计算和这次计算结果相运算(如,1*2-3*4)
elseif(l==Math.CountSymbol.MUL||l==Math.CountSymbol.DIV)
doubled2=Math.calc(d,l,poker4.getNumber());
d=Math.calc(d,l,d2);
//当第二个符号不为乘除法,第三个符号也不为乘除法的时候,一口气计算完毕(如,1*2+3-4)
else
//第一个符号不为乘除法的时候,第二个符号为乘除法的时候(如,1+2*3?
elseif(k==Math.CountSymbol.MUL||k==Math.CountSymbol.DIV)
d=Math.calc(poker2.getNumber(),k,poker3.getNumber());
d=Math.calc(d,l,poker4.getNumber());
d=Math.calc(poker.getNumber(),j,d);
//第一个符号不为乘除法的时候,第二个符号不为乘除法的时候,第三个符号为乘除法的时候(如,1+2-3*4)
elseif(l==Math.CountSymbol.MUL||l==Math.CountSymbol.DIV)
d=Math.calc(poker3.getNumber(),l,poker4.getNumber());
doubled2=Math.calc(poker.getNumber(),j,poker2.getNumber());
d=Math.calc(d,k,d2);
//第一个符号不为乘除法的时候,第二个符号不为乘除法的时候,第三个符号不为乘除法的时候(如,1+2-3+4)
else
d=Math.calc(d,k,poker3.getNumber());
Expression24exp24=newExpre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 扑克 24 游戏 JAVA 源代码