该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
return tmp.getColorType()==getColorType()
&&tmp.getColorValue()==getColorValue();
}
public void setIsUnderCard(boolean p){//设置为底牌
is_under_card=p;
if(is_under_card)is_under_card=true;
}
public void setCardOutTime(){//设置为已出牌
which_time_out=CardRule.getCurOutTime();
}
public int getCardOutTime(){//取得该牌出牌轮次
return which_time_out;
}
public void setIsScoreWinCard(boolean p){
if(isScoreCard())is_score_win_card=p;//只有分数纸牌才能设置为已赢得的得分
}
public final static int getRandom(int a,int b){
int min=Math.min(a,b);
int max=Math.max(a,b);
double rnd=Math.random();
double range=(double)(max+1-min);
return min+(int)(range*rnd);
}
public int getGradeDiff(Card tmp){
//不同花色副牌比较,先出者为大
if(!isOwner()&&!tmp.isOwner()&&getColorType()!=tmp.getColorType())return 100;
else return getPower()-tmp.getPower();
}
public int getPower(){
int x=24;
if(isBigKing())return 38+x;//大王
if(isSallKing())return 37+x;//小王
if(CardRule.getOwnerColorType()==CardRule.CARD_COLOR_TYPE_KNG){//无主牌
if(isOwnerValue())return 36+x;//主
}else{//有主牌
if(isOwnerColorType()&&isOwnerValue())return 36+x;//正主
if(isOwnerValue())return 35+x;//副主
}
int power=getColorValue();
if(getColorValue()
if(isOwnerColorType())return power+20+x;
return power;
}
public float getOrderPower(){
float ret=(float)getPower();
byte[] order_color_types=CardRule.getOrderCardColorTypes();
if(isOwner()){
if(isKing())return ret;
for(int i=0;isOwnerValue()&&i
if(order_color_types[i]==getColorType())
return (0.2F*(float)i)+ret;
return ret;
}
for(int i=0;i
if(order_color_types[i]==getColorType())
return (float)(i*14)+ret;
throw new RuntimeException();
}
public float getOrderPowerDiff(Card tmp){
return getOrderPower()-tmp.getOrderPower();
}
public void print(){
String split="_";
String color_type1=CardRule.COLOR_TYPES_STR[getColorType()];
if(isKing())System.out.print((isSallKing()?"小":"大")+color_type1+"["+this.arrayIndex+split+getPower()+split+this.getOrderPower()+"]"+"主");
else{
String color_value1=CardRule.COLOR_VALUES_STR[getColorValueIndex()];
System.out.print(color_type1+color_value1+"["+this.arrayIndex+split+this.getPower()+split+this.getOrderPower()+"]");
if(isOwner()){
if(isOwnerValue())System.out.print((isOwnerColorType()?"正":"副"));
System.out.print("主");
}else System.out.print("副");
}
System.out.print("");
System.out.print(" ");
}
public void println(){
String split="_";
String color_type1=CardRule.COLOR_TYPES_STR[getColorType()];
if(isKing())System.out.println((isSallKing()?"小":"大")+color_type1+"["+this.arrayIndex+split+getPower()+split+this.getOrderPower()+"]"+"主");
else{
String color_value1=CardRule.COLOR_VALUES_STR[getColorValueIndex()];
System.out.print(color_type1+color_value1+"["+this.arrayIndex+split+getPower()+split+this.getOrderPower()+"]");
if(isOwner()){
if(isOwnerValue())System.out.print((isOwnerColorType()?"正":"副"));
System.out.println("主");
}else System.out.println("副");
}
System.out.print("");
}
}
/**
若首家试图联出的牌并非都是大牌时,则其必须出欲联出的牌中的最小牌。如:
首家试图联出98844时,若其余某家有此花色的J,则首家必须出9,
若其余某家有此花色的QQ或55,则首家必须出44
*/
以上是八十分游戏的核心源代码,希望对广大Java编程爱好者成长有所帮助。
有问题请和我联系,qq:475501616,或者在http://www.soft-hr.cn上下载我的完整源码!