德州 Java_java 模拟德州扑克
packagecom.lzx.demo;importorg.junit.Test;importjava.util.Arrays;importjava.util.HashMap;importjava.util.Map;public classTexasPoker {public static intcomparePoker(Poker[] poker,Poker[] poker2){int type1=getType(poker);int type2=getType(poker2);if(type1==type2){return getValueSum(poker)-getValueSum(poker2);
}else{return type1-type2;
}
}//获取牌的总值
public static intgetValueSum (Poker[] poker){int sum = 0;for(Poker p:poker) {
sum+=p.getValue();
}returnsum;
}//获取牌的类型值
public static intgetType(Poker[] poker){int type=isFlush(poker);if(type==9){returntype;
}else{
type=isFour(poker);returntype;
}
}//是否是同花顺 是返回同花顺的类型值9
public static intisFlush(Poker[] poker){boolean flag =true;//是否是顺子 默认是
int type =1;int heartsNum=0;//红桃
int spadeNum=0;//黑桃
int clubNum=0;//梅花
int diamondNum=0;//方块
for(Poker p:poker) {switch(p.flowercolor){case 1:
heartsNum++;break;case 2:
clubNum++;break;case 3:
diamondNum++;break;case 4:
spadeNum++;break;
}
}//是否同花
if(heartsNum==5||spadeNum==5||clubNum==5||diamondNum==5){
type=6;//1、排序
Arrays.sort(poker);//2、是否是顺
for (int i = 0; i
flag=false;returntype;
}
}
type=9;
}returntype;
}//是否是4条 是返回四条类型值8
public static intisFour(Poker[] poker){
Map map = newHashMap();for (int i = 0; i
Integer num=map.get(poker[i].getName());
map.put(poker[i].getName(),num==null?1:num+1);
}for(Integer value : map.values()) {//四条
if(value==4){//将4条的值放大8倍 提高同类型比较的准确性
for (int i = 0; i
poker[i].setValue(poker[i].getValue()<<3);
}return 8;
}
}return 0;
}private class Poker implements Comparable{private String name;//2 3 4 5…J Q K A
private int value;//牌值
private int flowercolor;//花色 1:红桃 2 梅花 3方块 4黑桃
public Poker(String name,int value, intflowercolor) {this.name =name;this.value=value;this.flowercolor =flowercolor;
}publicPoker() {
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetValue() {returnvalue;
}public void setValue(intvalue) {this.value=value;
}public intgetFlowercolor() {returnflowercolor;
}public void setFlowercolor(intflowercolor) {this.flowercolor =flowercolor;
}
@Overridepublic intcompareTo(Poker poker) {return this.value-poker.value;
}
}//同花顺比较
@Testpublic voidtestone(){
Poker[] pokers= new Poker[5];
Poker[] pokers2= new Poker[5];
TexasPoker texasPoker= newTexasPoker();
Poker p= texasPoker.new Poker(“J”,11, 1);
Poker p1= texasPoker.new Poker(“Q”,12, 1);
Poker p2= texasPoker.new Poker(“K”,13, 1);
Poker p3= texasPoker.new Poker(“A”,14, 1);
Poker p4= texasPoker.new Poker(“10”,10, 1);
Poker p5= texasPoker.new Poker(“5”,5, 1);
Poker p6= texasPoker.new Poker(“6”,6, 1);
Poker p7= texasPoker.new Poker(“7”,7, 1);
Poker p8= texasPoker.new Poker(“8”,8, 1);
Poker p9= texasPoker.new Poker(“9”,9, 1);
pokers[0]=p;
pokers[1]=p1;
pokers[2]=p2;
pokers[3]=p3;
pokers[4]=p4;
pokers2[0]=p5;
pokers2[1]=p6;
pokers2[2]=p7;
pokers2[3]=p8;
pokers2[4]=p9;
System.out.println(comparePoker(pokers,pokers2));
}//同花顺和四条比较
@Testpublic voidtest2(){
Poker[] pokers= new Poker[5];
Poker[] pokers2= new Poker[5];
TexasPoker texasPoker= newTexasPoker();
Poker p= texasPoker.new Poker(“J”,11, 1);
Poker p1= texasPoker.new Poker(“Q”,12, 1);
Poker p2= texasPoker.new Poker(“K”,13, 1);
Poker p3= texasPoker.new Poker(“A”,14, 1);
Poker p4= texasPoker.new Poker(“10”,10, 1);
Poker p5= texasPoker.new Poker(“4”,4, 1);
Poker p6= texasPoker.new Poker(“4”,4, 2);
Poker p7= texasPoker.new Poker(“4”,4, 3);
Poker p8= texasPoker.new Poker(“4”,4, 4);
Poker p9= texasPoker.new Poker(“9”,9, 1);
pokers[0]=p;
pokers[1]=p1;
pokers[2]=p2;
pokers[3]=p3;
pokers[4]=p4;
pokers2[0]=p5;
pokers2[1]=p6;
pokers2[2]=p7;
pokers2[3]=p8;
pokers2[4]=p9;
System.out.println(comparePoker(pokers,pokers2));
}//四条比较
@Testpublic voidtest3(){
Poker[] pokers= new Poker[5];
Poker[] pokers2= new Poker[5];
TexasPoker texasPoker= newTexasPoker();
Poker p= texasPoker.new Poker(“2”,2, 1);
Poker p1= texasPoker.new Poker(“2”,2, 2);
Poker p2= texasPoker.new Poker(“2”,2, 3);
Poker p3= texasPoker.new Poker(“2”,2, 4);
Poker p4= texasPoker.new Poker(“A”,14, 1);
Poker p5= texasPoker.new Poker(“4”,4, 1);
Poker p6= texasPoker.new Poker(“4”,4, 2);
Poker p7= texasPoker.new Poker(“4”,4, 3);
Poker p8= texasPoker.new Poker(“4”,4, 4);
Poker p9= texasPoker.new Poker(“9”,9, 1);
pokers[0]=p;
pokers[1]=p1;
pokers[2]=p2;
pokers[3]=p3;
pokers[4]=p4;
pokers2[0]=p5;
pokers2[1]=p6;
pokers2[2]=p7;
pokers2[3]=p8;
pokers2[4]=p9;
System.out.println(comparePoker(pokers,pokers2));
}
}
还没有评论,来说两句吧...