李泽帆 2026-07-25 05:59:15 +08:00
parent 5ae4bcdc6d
commit ccf3e0d076
10 changed files with 560 additions and 487 deletions

View File

@ -302,7 +302,7 @@ public class EXPlayer extends Player {
for (int i = 0; i < list.size(); ++i) { for (int i = 0; i < list.size(); ++i) {
ITObject obj = list.getTObject(i); ITObject obj = list.getTObject(i);
ITArray opCard = obj.getTArray("opcard"); ITArray opCard = obj.getTArray("opcard");
Tip tip = new Tip(eventCard, opCard, weight, rule, RuleWeight.TYPE_CHOW); Tip tip = new Tip(eventCard, opCard, weight, rule, RuleWeight.TYPE_CHOW_OTHER);
tip.bi_list = obj.getTArray("bi_list"); tip.bi_list = obj.getTArray("bi_list");
this.tipMgr.addTip(tip); this.tipMgr.addTip(tip);
} }

View File

@ -423,7 +423,7 @@ public class EXRoom extends Room {
huXi += opCard.huXi; huXi += opCard.huXi;
huXiNum++; huXiNum++;
} }
if (opCard.type == RuleWeight.TYPE_CHOW) { if (opCard.type == RuleWeight.TYPE_CHOW || opCard.type == RuleWeight.TYPE_CHOW_OTHER) {
if (CardUtil.isRedCard(opCard.card1)) { if (CardUtil.isRedCard(opCard.card1)) {
redCard++; redCard++;
@ -529,6 +529,7 @@ public class EXRoom extends Room {
} }
// 红胡 // 红胡
// logger.info("红胡redCard:" + redCard);
if (redCard >= 10 && redCard < 13) { if (redCard >= 10 && redCard < 13) {
player.winFan = player.winFan * 2; player.winFan = player.winFan * 2;
player.mingtangList.add(new MingTang(RuleWeight.HONG_HU, 2, 2)); player.mingtangList.add(new MingTang(RuleWeight.HONG_HU, 2, 2));
@ -697,7 +698,7 @@ public class EXRoom extends Room {
kuaibiannum++; kuaibiannum++;
} }
} }
if (tmpopcard.type == RuleWeight.TYPE_CHOW) { if (tmpopcard.type == RuleWeight.TYPE_CHOW || tmpopcard.type == RuleWeight.TYPE_CHOW_OTHER) {
if (CardUtil.isRedCard(tmpopcard.card1)) { if (CardUtil.isRedCard(tmpopcard.card1)) {
redCard++; redCard++;
} }
@ -756,6 +757,7 @@ public class EXRoom extends Room {
} }
// 红胡 // 红胡
// logger.info("红胡redCard11111111:"+redCard);
if (redCard >= 10 && redCard < 13) { if (redCard >= 10 && redCard < 13) {
player.winFan = player.winFan * 2; player.winFan = player.winFan * 2;
tmpmt.add(new MingTang(RuleWeight.HONG_HU, 2, 2)); tmpmt.add(new MingTang(RuleWeight.HONG_HU, 2, 2));
@ -889,9 +891,7 @@ public class EXRoom extends Room {
paoGroup[1] = activePlayer.drawCard; paoGroup[1] = activePlayer.drawCard;
paoGroup[2] = activePlayer.drawCard; paoGroup[2] = activePlayer.drawCard;
paoGroup[3] = activePlayer.drawCard; paoGroup[3] = activePlayer.drawCard;
player.paoGroup.add(paoGroup); player.paoGroup.add(paoGroup);
huXi = Paixing.caclHuxi(RuleWeight.TYPE_PAO, activePlayer.drawCard); huXi = Paixing.caclHuxi(RuleWeight.TYPE_PAO, activePlayer.drawCard);
player.opCardList.add(new OpCard(RuleWeight.TYPE_PAO, activePlayer.drawCard, player.opCardList.add(new OpCard(RuleWeight.TYPE_PAO, activePlayer.drawCard,
activePlayer.drawCard, activePlayer.drawCard, huXi)); activePlayer.drawCard, activePlayer.drawCard, huXi));
@ -902,12 +902,16 @@ public class EXRoom extends Room {
OpCard opcard = new OpCard(); OpCard opcard = new OpCard();
opcard.card1 = win.stack.get(j).get(0); opcard.card1 = win.stack.get(j).get(0);
opcard.card2 = win.stack.get(j).get(1); opcard.card2 = win.stack.get(j).get(1);
opcard.type = 1; opcard.type = 14;
if (win.stack.get(j).size() > 2) { if (win.stack.get(j).size() > 2) {
opcard.card3 = win.stack.get(j).get(2); opcard.card3 = win.stack.get(j).get(2);
if (opcard.card1 == opcard.card2 && opcard.card1 == opcard.card3 if (opcard.card1 == opcard.card2 && opcard.card1 == opcard.card3
&& opcard.card3 == opcard.card2) { && opcard.card3 == opcard.card2) {
opcard.type = 2; opcard.type = 2;
} else if (opcard.card1 == opcard.card2
&& opcard.card3 == 0) {
opcard.type = RuleWeight.TYPE_JIANG;
} }
} }
opcard.huXi = win.stackHuxi.get(j); opcard.huXi = win.stackHuxi.get(j);
@ -935,6 +939,8 @@ public class EXRoom extends Room {
pongGroup[2] = activePlayer.drawCard; pongGroup[2] = activePlayer.drawCard;
player.pongGroup.add(pongGroup); player.pongGroup.add(pongGroup);
logger.info("来到这里增加了pong的类型" + activePlayer.drawCard);
logger.info("来到这里增加了pong的类型" + pongGroup);
huXi = Paixing.caclHuxi(RuleWeight.TYPE_PONG, activePlayer.drawCard); huXi = Paixing.caclHuxi(RuleWeight.TYPE_PONG, activePlayer.drawCard);
player.opCardList.add(new OpCard(RuleWeight.TYPE_PONG, activePlayer.drawCard, player.opCardList.add(new OpCard(RuleWeight.TYPE_PONG, activePlayer.drawCard,
@ -990,12 +996,16 @@ public class EXRoom extends Room {
OpCard opcard = new OpCard(); OpCard opcard = new OpCard();
opcard.card1 = win.stack.get(j).get(0); opcard.card1 = win.stack.get(j).get(0);
opcard.card2 = win.stack.get(j).get(1); opcard.card2 = win.stack.get(j).get(1);
opcard.type = 1; opcard.type = 14;
if (win.stack.get(j).size() > 2) { if (win.stack.get(j).size() > 2) {
opcard.card3 = win.stack.get(j).get(2); opcard.card3 = win.stack.get(j).get(2);
if (opcard.card1 == opcard.card2 && opcard.card1 == opcard.card3 if (opcard.card1 == opcard.card2 && opcard.card1 == opcard.card3
&& opcard.card3 == opcard.card2) { && opcard.card3 == opcard.card2) {
opcard.type = 2; opcard.type = 2;
} else if (opcard.card1 == opcard.card2
&& opcard.card3 == 0) {
opcard.type = RuleWeight.TYPE_JIANG;
} }
} }
opcard.huXi = win.stackHuxi.get(j); opcard.huXi = win.stackHuxi.get(j);
@ -1077,12 +1087,15 @@ public class EXRoom extends Room {
OpCard opcard = new OpCard(); OpCard opcard = new OpCard();
opcard.card1 = win.stack.get(j).get(0); opcard.card1 = win.stack.get(j).get(0);
opcard.card2 = win.stack.get(j).get(1); opcard.card2 = win.stack.get(j).get(1);
opcard.type = 1; opcard.type = 14;
if (win.stack.get(j).size() > 2) { if (win.stack.get(j).size() > 2) {
opcard.card3 = win.stack.get(j).get(2); opcard.card3 = win.stack.get(j).get(2);
if (opcard.card1 == opcard.card2 && opcard.card1 == opcard.card3 if (opcard.card1 == opcard.card2 && opcard.card1 == opcard.card3
&& opcard.card3 == opcard.card2) { && opcard.card3 == opcard.card2) {
opcard.type = 2; opcard.type = 2;
} else if (opcard.card1 == opcard.card2
&& opcard.card3 == 0) {
opcard.type = RuleWeight.TYPE_JIANG;
} }
} }
opcard.huXi = win.stackHuxi.get(j); opcard.huXi = win.stackHuxi.get(j);
@ -1139,22 +1152,32 @@ public class EXRoom extends Room {
scoreSrc = caclScore(player); scoreSrc = caclScore(player);
// System.out.println("scoreSrc:"+scoreSrc); // System.out.println("scoreSrc:"+scoreSrc);
// 用于标识一块扁 // // 用于标识一块扁
int scoreSrcnew = caclScoreNew(player, int scoreSrcnew = caclScoreNew(player,
checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), false); checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), false);
if (scoreSrcnew == 0) { // logger.info("11111111111111");
scoreSrcnew = caclScoreNew(player, // logger.info("scoreSrcnew:" + scoreSrcnew);
checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), true); //
} // if (scoreSrcnew == 0) {
if (scoreSrcnew < scoreSrc || scoreSrcnew < 15) { // scoreSrcnew = caclScoreNew(player,
scoreSrcnew = caclScoreNew(player, // checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), true);
!checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), false); // }
if (scoreSrcnew == 0) { // logger.info("2222222222222");
scoreSrcnew = caclScoreNew(player, //
!checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), true); // logger.info("scoreSrcnew:" + scoreSrcnew);
} // logger.info("scoreSrc:" + scoreSrc);
} // logger.info("checkpaoflag:" + checkpaoflag);
//
// if (scoreSrcnew < scoreSrc || scoreSrcnew < 15) {
// scoreSrcnew = caclScoreNew(player,
// !checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), false);
// if (scoreSrcnew == 0) {
// scoreSrcnew = caclScoreNew(player,
// !checkpaoflag ? 0 : (this.activeCard == 0 ? activePlayer.drawCard : this.activeCard), true);
// }
// }
// logger.info("3333333333333333333");
//
if (scoreSrcnew >= 15) { if (scoreSrcnew >= 15) {
player.newcalc = 1; player.newcalc = 1;
@ -1175,6 +1198,7 @@ public class EXRoom extends Room {
player.cardInhand.clear(); player.cardInhand.clear();
} else { } else {
for (OpCard opCard : player.handCard) { for (OpCard opCard : player.handCard) {
logger.info("增加类型:" + opCard.type + "-" + opCard.card1 + "--" + opCard.card2 + "--" + opCard.card3);
player.opCardList.add(opCard); player.opCardList.add(opCard);
} }
} }

View File

@ -5,11 +5,15 @@ import java.util.*;
import com.taurus.core.entity.ITArray; import com.taurus.core.entity.ITArray;
import com.taurus.core.entity.TObject; import com.taurus.core.entity.TObject;
import com.taurus.core.plugin.redis.Redis; import com.taurus.core.plugin.redis.Redis;
import com.taurus.core.util.Logger;
import extend.zp.player.rulestate.PRChi;
import extend.zp.uitl.CardUtil; import extend.zp.uitl.CardUtil;
import redis.clients.jedis.Jedis; import redis.clients.jedis.Jedis;
public class RoomCard { public class RoomCard {
public static final Logger logger = Logger.getLogger(RoomCard.class);
public ArrayList<Integer> cardList; public ArrayList<Integer> cardList;
EXRoom room; EXRoom room;
public ArrayList<Integer> subCardList; public ArrayList<Integer> subCardList;
@ -22,8 +26,8 @@ public class RoomCard {
} }
public void init() { public void init() {
this.cardList.clear(); // this.cardList.clear();
this.subCardList.clear(); // this.subCardList.clear();
// this.sanlong(); // this.sanlong();
this.initCard(); this.initCard();
@ -60,10 +64,19 @@ public class RoomCard {
public void sanlong() { public void sanlong() {
List list2 = Arrays.asList(102, 103, 105, 106, 107, 107, 108, 109, 201, 202, 203, 203, 206, 206, 207, 208, 208, 208, 209, 210);
List list = Arrays.asList(101, 101, 104, 104, 109, 109, 110, 110, 110, 201, 201, 202, 203, 204, 204, 205, 205, 207, 208, 210);
List list3 = Arrays.asList(209, 205, 109, 104, 202, 204, 201, 206, 101, 105, 106, 101, 203, 210, 205, 102, 103, 204, 206, 207);
// List list2 = Arrays.asList(101, 102, 102, 104, 104, 105, 106, 106, 108, 201, 203, 204, 204, 205, 208, 208, 209, 209, 210, 210);
// List list = Arrays.asList(102, 103, 104, 105, 107, 110, 202, 202, 202, 202, 203, 203, 205, 205, 206, 206, 206, 208, 209, 210);
// List list3 = Arrays.asList(106, 103, 205, 102, 104, 110, 207, 106, 107, 201, 108, 201, 206, 110, 103, 103, 110, 101, 105, 108);
// //不够胡息 // //不够胡息
List list2 = Arrays.asList(101, 102, 103, 104, 105, 105, 107, 108, 108, 109, 204, 204, 205, 205, 205, 206, 206, 207, 209, 210); // List list2 = Arrays.asList(101, 102, 103, 104, 105, 105, 107, 108, 108, 109, 204, 204, 205, 205, 205, 206, 206, 207, 209, 210);
List list = Arrays.asList(101, 102, 103, 104, 105, 108, 109, 109, 201, 202, 203, 203, 203, 204, 206, 207, 207, 208, 208, 209); // List list = Arrays.asList(101, 102, 103, 104, 105, 108, 109, 109, 201, 202, 203, 203, 203, 204, 206, 207, 207, 208, 208, 209);
List list3 = Arrays.asList(102, 107, 204, 209, 208, 107, 110, 103, 106, 205, 105, 207, 210, 108, 103, 201, 110, 110, 104, 202); // List list3 = Arrays.asList(102, 107, 204, 209, 208, 107, 110, 103, 106, 205, 105, 207, 210, 108, 103, 201, 110, 110, 104, 202);
// List list2 = Arrays.asList(101, 103, 103, 105, 106, 108, 109, 109, 110, 201, 202, 203, 204, 204, 205, 205, 208, 208, 210, 210); // List list2 = Arrays.asList(101, 103, 103, 105, 106, 108, 109, 109, 110, 201, 202, 203, 204, 204, 205, 205, 208, 208, 210, 210);
// List list = Arrays.asList(101, 102, 103, 104, 104, 104, 105, 105, 107, 107, 107, 107, 108, 110, 201, 202, 207, 209, 210, 210); // List list = Arrays.asList(101, 102, 103, 104, 104, 104, 105, 105, 107, 107, 107, 107, 108, 110, 201, 202, 207, 209, 210, 210);
@ -538,6 +551,7 @@ public class RoomCard {
} }
private void initCard() { private void initCard() {
this.cardList.clear();
for (int index = 1; index <= 10; index++) { for (int index = 1; index <= 10; index++) {
for (int index2 = 0; index2 < 4; index2++) { for (int index2 = 0; index2 < 4; index2++) {
this.cardList.add(100 + index); this.cardList.add(100 + index);
@ -599,8 +613,8 @@ public class RoomCard {
for (int index = 0; index < 20; index++) { for (int index = 0; index < 20; index++) {
int tmpcard = this.pop(); int tmpcard = this.pop();
if (this.checksanlong(dealCards, tmpcard)) { if (this.checksanlong(dealCards, tmpcard)) {
this.cardList.add(tmpcard); this.cardList.add(tmpcard);
this.shuffle(); this.shuffle();
int tmpcard1 = this.pop(); int tmpcard1 = this.pop();
if (this.checksanlong(dealCards, tmpcard1)) { if (this.checksanlong(dealCards, tmpcard1)) {

View File

@ -12,7 +12,7 @@ public class RuleWeight {
public final static int PAO = 8; public final static int PAO = 8;
public final static int TYPE_CHOW = 1; public final static int TYPE_CHOW = 14;
public final static int TYPE_PONG = 2; public final static int TYPE_PONG = 2;
public final static int TYPE_KAN = 3; public final static int TYPE_KAN = 3;
public final static int TYPE_WEI = 4; public final static int TYPE_WEI = 4;
@ -29,6 +29,7 @@ public class RuleWeight {
public final static int TYPE_PINGHU = 13;//平胡 public final static int TYPE_PINGHU = 13;//平胡
public final static int TYPE_CHOW_OTHER = 1;
public final static int SMALL_CARD = 1; public final static int SMALL_CARD = 1;
public final static int BIG_CARD = 2; public final static int BIG_CARD = 2;

View File

@ -57,14 +57,14 @@ public class PRChi {
int huXi = 0; int huXi = 0;
if (chiGroup[0] % 100 != chiGroup[1] % 100) { if (chiGroup[0] % 100 != chiGroup[1] % 100) {
if (chiGroup[0] % 100 + chiGroup[1] % 100 + chiGroup[2] % 100 == 6 || chiGroup[0] % 100 + chiGroup[1] % 100 + chiGroup[2] % 100 == 19) { if (chiGroup[0] % 100 + chiGroup[1] % 100 + chiGroup[2] % 100 == 6 || chiGroup[0] % 100 + chiGroup[1] % 100 + chiGroup[2] % 100 == 19) {
huXi += Paixing.caclHuxi(RuleWeight.TYPE_CHOW, chiGroup[0]); huXi += Paixing.caclHuxi(RuleWeight.TYPE_CHOW_OTHER, chiGroup[0]);
} }
} }
player.opCardList.add(new OpCard(RuleWeight.TYPE_CHOW, chiGroup[0], chiGroup[1], chiGroup[2], huXi)); player.opCardList.add(new OpCard(RuleWeight.TYPE_CHOW_OTHER, chiGroup[0], chiGroup[1], chiGroup[2], huXi));
ITArray opcard = TArray.newInstance(); ITArray opcard = TArray.newInstance();
opcard.addInt(chiGroup[0]); opcard.addInt(chiGroup[0]);
opcard.addInt(chiGroup[2]); opcard.addInt(chiGroup[2]);
EXMainServer.gameCtr.actionCard(player, card, card, bi ? RuleWeight.TYPE_BI : RuleWeight.TYPE_CHOW, activePlayer.seat, opcard); EXMainServer.gameCtr.actionCard(player, card, card, bi ? RuleWeight.TYPE_BI : RuleWeight.TYPE_CHOW_OTHER, activePlayer.seat, opcard);
} }
} }

View File

@ -53,7 +53,6 @@ public class PRWeiState extends StateBase<EXPlayer> {
opcard.addInt(card); opcard.addInt(card);
opcard.addInt(card); opcard.addInt(card);
owner.getRoom().activeCard=0;
EXMainServer.gameCtr.actionCard(owner, card, card, type, owner.seat, opcard); EXMainServer.gameCtr.actionCard(owner, card, card, type, owner.seat, opcard);
EXMainServer.playerRuleMgr.condition(PlayerRuleManager.HU_RULE, owner); EXMainServer.playerRuleMgr.condition(PlayerRuleManager.HU_RULE, owner);
} }

View File

@ -53,7 +53,7 @@ public class TipManager {
Map.Entry<Integer, Tip> entry = it.next(); Map.Entry<Integer, Tip> entry = it.next();
Tip tip = entry.getValue(); Tip tip = entry.getValue();
card = tip.card; card = tip.card;
if (tip.type == RuleWeight.TYPE_CHOW) { if (tip.type == RuleWeight.TYPE_CHOW_OTHER) {
this.owner.chouChiSet.add(tip.card); this.owner.chouChiSet.add(tip.card);
} }
if (tip.type == RuleWeight.TYPE_PONG) { if (tip.type == RuleWeight.TYPE_PONG) {
@ -77,7 +77,7 @@ public class TipManager {
Tip tip = this.tipMap.get(id); Tip tip = this.tipMap.get(id);
this.tipMap.remove(id); this.tipMap.remove(id);
if (tip.type == RuleWeight.TYPE_CHOW) { if (tip.type == RuleWeight.TYPE_CHOW_OTHER) {
tip.biid = biid; tip.biid = biid;
Iterator<Entry<Integer, Tip>> it = this.tipMap.entrySet().iterator(); Iterator<Entry<Integer, Tip>> it = this.tipMap.entrySet().iterator();
while (it.hasNext()) { while (it.hasNext()) {
@ -85,7 +85,7 @@ public class TipManager {
if (entry.getValue().type == RuleWeight.TYPE_PONG) { if (entry.getValue().type == RuleWeight.TYPE_PONG) {
this.owner.chouPongSet.add(tip.card); this.owner.chouPongSet.add(tip.card);
} }
if (entry.getValue().type != RuleWeight.TYPE_CHOW && entry.getValue().type != RuleWeight.TYPE_BI) { if (entry.getValue().type != RuleWeight.TYPE_CHOW_OTHER && entry.getValue().type != RuleWeight.TYPE_BI) {
it.remove(); it.remove();
} }
} }
@ -171,7 +171,7 @@ public class TipManager {
Map.Entry<Integer, Tip> entry = it.next(); Map.Entry<Integer, Tip> entry = it.next();
Tip tip = entry.getValue(); Tip tip = entry.getValue();
card = tip.card; card = tip.card;
if (tip.type == RuleWeight.TYPE_CHOW) { if (tip.type == RuleWeight.TYPE_CHOW_OTHER) {
this.owner.chouChiSet.add(tip.card); this.owner.chouChiSet.add(tip.card);
} }
@ -187,12 +187,12 @@ public class TipManager {
Tip tip = this.tipMap.get(id); Tip tip = this.tipMap.get(id);
this.tipMap.remove(id); this.tipMap.remove(id);
if (tip.type == RuleWeight.TYPE_CHOW) { if (tip.type == RuleWeight.TYPE_CHOW_OTHER) {
tip.biid = biid; tip.biid = biid;
Iterator<Entry<Integer, Tip>> it = this.tipMap.entrySet().iterator(); Iterator<Entry<Integer, Tip>> it = this.tipMap.entrySet().iterator();
while (it.hasNext()) { while (it.hasNext()) {
Map.Entry<Integer, Tip> entry = it.next(); Map.Entry<Integer, Tip> entry = it.next();
if (entry.getValue().type != RuleWeight.TYPE_CHOW && entry.getValue().type != RuleWeight.TYPE_BI) { if (entry.getValue().type != RuleWeight.TYPE_CHOW_OTHER && entry.getValue().type != RuleWeight.TYPE_BI) {
it.remove(); it.remove();
} }
} }

View File

@ -30,6 +30,10 @@ public class Paixing {
// logger.info("当前胡息:"+player.huXi+",最后胡牌胡息:"+lastHuxi); // logger.info("当前胡息:"+player.huXi+",最后胡牌胡息:"+lastHuxi);
// } // }
// logger.info("当前行动的牌:" + room.activeCard); // logger.info("当前行动的牌:" + room.activeCard);
// logger.info("用户的牌:" + player.cardInhand);
// if(room.activeCard!=0) {
// player.cardInhand.add(room.activeCard);
// }
// 原始算法计算 // 原始算法计算
boolean canWin = win.tryWin(player); boolean canWin = win.tryWin(player);
if (canWin && !isWin) { if (canWin && !isWin) {
@ -41,13 +45,6 @@ public class Paixing {
if (!isWin) { if (!isWin) {
player.resetHuXi(); player.resetHuXi();
/*
* if (player.getRoom().isTianHu) { if (player.tiCount >= 3) { player.isMingTang
* = false; isWin = true; } if (player.kanGroup.size() >= 5) { player.isMingTang
* = false; isWin = true; } if (player.tiCount >= 1 && player.kanGroup.size() >=
* 4) { player.isMingTang = false; isWin = true; } if (player.tiCount >= 2 &&
* player.kanGroup.size() >= 3) { player.isMingTang = false; isWin = true; } }
*/
for (int i = 0; i < player.pongGroup.size(); i++) { for (int i = 0; i < player.pongGroup.size(); i++) {
if (drawCard == player.pongGroup.get(i)[0] && !player.getRoom().paochucardlist.contains(drawCard)) { if (drawCard == player.pongGroup.get(i)[0] && !player.getRoom().paochucardlist.contains(drawCard)) {
@ -107,8 +104,24 @@ public class Paixing {
opcard.card2 = win.stack.get(i).get(1); opcard.card2 = win.stack.get(i).get(1);
opcard.type = 1; opcard.type = 1;
if (win.stack.get(i).size() > 2) { if (win.stack.get(i).size() > 2) {
opcard.card3 = win.stack.get(i).get(2); opcard.card3 = win.stack.get(i).get(2);
opcard.type = 2; if (opcard.card1 == opcard.card2 && opcard.card1 == opcard.card3) {
// 3张牌都一样则是碰
opcard.type = 2;
} else if (win.stack.get(i).get(2) == 0) {
// 2张牌一样则是将
opcard.type = RuleWeight.TYPE_JIANG;
} else {
// 否则则是吃
// logger.info("第一张牌"+win.stack.get(i).get(0));
// logger.info("第二张牌"+win.stack.get(i).get(1));
// logger.info("第三张牌"+win.stack.get(i).get(2));
opcard.type = RuleWeight.TYPE_CHOW;
}
} else if (win.stack.get(i).size() == 2) {
opcard.type = RuleWeight.TYPE_JIANG;
} }
opcard.huXi = win.stackHuxi.get(i); opcard.huXi = win.stackHuxi.get(i);
@ -150,6 +163,14 @@ public class Paixing {
huXi = 6; huXi = 6;
} }
break; break;
case RuleWeight.TYPE_CHOW_OTHER:
if (cardType == RuleWeight.SMALL_CARD) {
huXi = 3;
} else {
huXi = 6;
}
break;
case RuleWeight.TYPE_PONG: case RuleWeight.TYPE_PONG:
if (cardType == RuleWeight.SMALL_CARD) { if (cardType == RuleWeight.SMALL_CARD) {
huXi = 1; huXi = 1;

View File

@ -1,12 +1,20 @@
package extend.zp.uitl; package extend.zp.uitl;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Stack;
import com.taurus.core.util.Logger;
import extend.zp.OpCard; import extend.zp.OpCard;
import extend.zp.RuleWeight; import extend.zp.RuleWeight;
public class WinCardNew { public class WinCardNew {
public static final Logger logger = Logger.getLogger(WinCardNew.class);
private boolean isJiang = false; private boolean isJiang = false;
private List<Integer> cardList; private List<Integer> cardList;
private Stack<List<List<OpCard>>> opCardStack; private Stack<List<List<OpCard>>> opCardStack;
@ -324,6 +332,7 @@ public class WinCardNew {
List<Integer> tempList = new ArrayList<>(); List<Integer> tempList = new ArrayList<>();
List<Integer> opCardList = new ArrayList<>(); List<Integer> opCardList = new ArrayList<>();
tempList.addAll(cardList); tempList.addAll(cardList);
if (CardUtil.cardNum(card, cardList) == 3) { if (CardUtil.cardNum(card, cardList) == 3) {
opCardList.add(card); opCardList.add(card);
opCardList.add(card); opCardList.add(card);

View File

@ -1,439 +1,444 @@
package extend.zp.uitl; //package extend.zp.uitl;
//
import extend.zp.OpCard; //import extend.zp.OpCard;
import extend.zp.RuleWeight; //import extend.zp.RuleWeight;
//import extend.zp.player.rulestate.PRChi;
import java.io.IOException; //
import java.util.*; //import java.io.IOException;
//import java.util.*;
public class WinCardPxNew { //
private boolean isJiang = false; //import com.taurus.core.util.Logger;
private List<Integer> cardList; //
private Stack<List<List<OpCard>>> opCardStack; //public class WinCardPxNew {
private List<List<OpCard>> lastOpCard; // public static final Logger logger = Logger.getLogger(WinCardPxNew.class);
private Integer addCard; //
private int huxi = 0; // private boolean isJiang = false;
private List<OpCard> opCardList; // private List<Integer> cardList;
// private Stack<List<List<OpCard>>> opCardStack;
public boolean cpaixing = false; // private List<List<OpCard>> lastOpCard;
// private Integer addCard;
public List<WinOpCard> winList; // private int huxi = 0;
// private List<OpCard> opCardList;
public List<List<OpCard>> opCardsList; //
// public boolean cpaixing = false;
public boolean checkHu() { //
try { // public List<WinOpCard> winList;
int card = addCard == 0 ? (this.cardList.size() > 0 ? this.cardList.get(0) : 0) : addCard; //
List<OpCard> list = new ArrayList<OpCard>(); // public List<List<OpCard>> opCardsList;
if (card > 0) { //
list = groupCard(card, this.cardList, true); // public boolean checkHu() {
} else if (card == 0) { // try {
addWinOpCard(huxi, null); // int card = addCard == 0 ? (this.cardList.size() > 0 ? this.cardList.get(0) : 0) : addCard;
return true; // List<OpCard> list = new ArrayList<OpCard>();
} // if (card > 0) {
List<Integer> tempCardList = new ArrayList<>(); // list = groupCard(card, this.cardList, true);
for (OpCard opCard : list) { // } else if (card == 0) {
tempCardList.clear(); // addWinOpCard(huxi, null);
tempCardList.addAll(cardList); // return true;
Collections.sort(tempCardList); // }
removeOpCard(tempCardList, opCard); // List<Integer> tempCardList = new ArrayList<>();
List<OpCard> opCardS = new ArrayList<>(); // for (OpCard opCard : list) {
List<List<OpCard>> opCardS_1 = new ArrayList<>(); // tempCardList.clear();
opCardS.add(opCard); // tempCardList.addAll(cardList);
opCardS_1.add(opCardS); // Collections.sort(tempCardList);
this.opCardStack.push(opCardS_1); // removeOpCard(tempCardList, opCard);
checkWin(tempCardList); // List<OpCard> opCardS = new ArrayList<>();
} // List<List<OpCard>> opCardS_1 = new ArrayList<>();
} catch (Exception e) { // opCardS.add(opCard);
return false; // opCardS_1.add(opCardS);
} // this.opCardStack.push(opCardS_1);
return Win(); // checkWin(tempCardList);
} // }
// } catch (Exception e) {
// return false;
private boolean Win() { // }
List<Integer> tempCardList = new ArrayList<>(); // return Win();
boolean hu, isExJiang; // }
for (List<OpCard> opCards : this.lastOpCard) { //
isExJiang = false; //
tempCardList.clear(); // private boolean Win() {
tempCardList.addAll(cardList); // List<Integer> tempCardList = new ArrayList<>();
hu = false; // boolean hu, isExJiang;
int huxi = this.huxi; // for (List<OpCard> opCards : this.lastOpCard) {
for (OpCard tempOpCard : opCards) { // isExJiang = false;
removeOpCard(tempCardList, tempOpCard); // tempCardList.clear();
if (tempOpCard.type == RuleWeight.TYPE_JIANG) { // tempCardList.addAll(cardList);
isExJiang = true; // hu = false;
continue; // int huxi = this.huxi;
} // for (OpCard tempOpCard : opCards) {
huxi += tempOpCard.huXi; // removeOpCard(tempCardList, tempOpCard);
} // if (tempOpCard.type == RuleWeight.TYPE_JIANG) {
// isExJiang = true;
hu = isJiang ? isExJiang && tempCardList.size() == 0 : tempCardList.size() == 0 ; // continue;
// }
if (hu&&huxi>=15) { // huxi += tempOpCard.huXi;
addWinOpCard(huxi, opCards); // }
} //
// hu = isJiang ? isExJiang && tempCardList.size() == 0 : tempCardList.size() == 0 ;
} //
return !winList.isEmpty(); // if (hu&&huxi>=15) {
} // addWinOpCard(huxi, opCards);
// }
private void removeOpCard(List<Integer> cards, OpCard opCard) { //
if (opCard.card1 > 0) { // }
CardUtil.removeCard(cards, opCard.card1, 1); // return !winList.isEmpty();
} // }
if (opCard.card2 > 0) { //
CardUtil.removeCard(cards, opCard.card2, 1); // private void removeOpCard(List<Integer> cards, OpCard opCard) {
} // if (opCard.card1 > 0) {
if (opCard.card3 > 0) { // CardUtil.removeCard(cards, opCard.card1, 1);
CardUtil.removeCard(cards, opCard.card3, 1); // }
} // if (opCard.card2 > 0) {
} // CardUtil.removeCard(cards, opCard.card2, 1);
// }
private boolean isExJiang(List<List<OpCard>> list) { // if (opCard.card3 > 0) {
for (List<OpCard> opCard : list) { // CardUtil.removeCard(cards, opCard.card3, 1);
for (OpCard opCard2 : opCard) { // }
if (opCard2.type == RuleWeight.TYPE_JIANG) { // }
return false; //
} // private boolean isExJiang(List<List<OpCard>> list) {
} // for (List<OpCard> opCard : list) {
} // for (OpCard opCard2 : opCard) {
return true; // if (opCard2.type == RuleWeight.TYPE_JIANG) {
} // return false;
// }
private void checkWinnew(List<Integer> cardList) throws ClassNotFoundException, IOException { // }
// }
} // return true;
// }
private void checkWin(List<Integer> cardList) throws ClassNotFoundException, IOException { //
List<List<OpCard>> opCards = this.opCardStack.pop(); // private void checkWinnew(List<Integer> cardList) throws ClassNotFoundException, IOException {
if (opCards.isEmpty()) { //
return; // }
} //
List<List<OpCard>> list = new ArrayList<>(); // private void checkWin(List<Integer> cardList) throws ClassNotFoundException, IOException {
if (cardList.size() == 0) { // List<List<OpCard>> opCards = this.opCardStack.pop();
list = CardUtil.deepCopy(opCards); // if (opCards.isEmpty()) {
this.lastOpCard.addAll(list); // return;
return; // }
} // List<List<OpCard>> list = new ArrayList<>();
List<OpCard> oplist = null, opList2 = null; // if (cardList.size() == 0) {
for (Integer card : cardList) { // list = CardUtil.deepCopy(opCards);
oplist = groupCard(card, cardList, isExJiang(opCards)); // this.lastOpCard.addAll(list);
if (oplist.size() > 0) { // return;
break; // }
} // List<OpCard> oplist = null, opList2 = null;
} // for (Integer card : cardList) {
if (oplist.size() > 0) { // oplist = groupCard(card, cardList, isExJiang(opCards));
List<Integer> tempCardList = new ArrayList<>(); // if (oplist.size() > 0) {
for (OpCard opCard : oplist) { // break;
tempCardList.clear(); // }
tempCardList.addAll(cardList); // }
list = new ArrayList<>(); // if (oplist.size() > 0) {
removeOpCard(tempCardList, opCard); // List<Integer> tempCardList = new ArrayList<>();
list = CardUtil.deepCopy(opCards); // for (OpCard opCard : oplist) {
for (List<OpCard> tempOpCard : list) { // tempCardList.clear();
tempOpCard.add(opCard); // tempCardList.addAll(cardList);
} // list = new ArrayList<>();
for (Integer card : tempCardList) { // removeOpCard(tempCardList, opCard);
opList2 = groupCard(card, tempCardList, isExJiang(list)); // list = CardUtil.deepCopy(opCards);
if (opList2.size() > 0) { // for (List<OpCard> tempOpCard : list) {
break; // tempOpCard.add(opCard);
} // }
} // for (Integer card : tempCardList) {
if (opList2 != null && opList2.size() > 0) { // opList2 = groupCard(card, tempCardList, isExJiang(list));
this.opCardStack.push(list); // if (opList2.size() > 0) {
checkWin(tempCardList); // break;
} else { // }
this.lastOpCard.addAll(list); // }
} // if (opList2 != null && opList2.size() > 0) {
// this.opCardStack.push(list);
} // checkWin(tempCardList);
} else { // } else {
list = new ArrayList<>(); // this.lastOpCard.addAll(list);
list = CardUtil.deepCopy(opCards); // }
this.lastOpCard.addAll(list); //
} // }
// } else {
} // list = new ArrayList<>();
// list = CardUtil.deepCopy(opCards);
/** // this.lastOpCard.addAll(list);
* ij<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD> // }
* //
* @param card // }
* @return //
*/ // /**
private List<OpCard> groupCard(int card, List<Integer> cardList, boolean first) { // * ij<><C4B3><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>
List<OpCard> opCardList = new ArrayList<>(); // *
List<Integer> tempList = new ArrayList<>(); // * @param card
tempList.addAll(cardList); // * @return
shunzi1_10(card, opCardList, tempList); // */
shunzi2710(card, opCardList, tempList); // private List<OpCard> groupCard(int card, List<Integer> cardList, boolean first) {
jiaopai(card, opCardList, tempList); // List<OpCard> opCardList = new ArrayList<>();
kan(card, opCardList, tempList); // List<Integer> tempList = new ArrayList<>();
if (isJiang && first) { // tempList.addAll(cardList);
jiang(card, opCardList, tempList); // shunzi1_10(card, opCardList, tempList);
} // shunzi2710(card, opCardList, tempList);
return opCardList; // jiaopai(card, opCardList, tempList);
} // kan(card, opCardList, tempList);
// if (isJiang && first) {
/** // jiang(card, opCardList, tempList);
* <EFBFBD><EFBFBD>һ<EFBFBD>Խ<EFBFBD> // }
*/ // return opCardList;
private void jiang(int card, List<OpCard> list, List<Integer> cardList) { // }
List<Integer> tempList = new ArrayList<>(); //
tempList.addAll(cardList); // /**
if (isJiang) { // * <20><>һ<EFBFBD>Խ<EFBFBD>
if (CardUtil.cardNum(card, cardList) >= 2) { // */
OpCard opCard = new OpCard(); // private void jiang(int card, List<OpCard> list, List<Integer> cardList) {
opCard.card1 = card; // List<Integer> tempList = new ArrayList<>();
opCard.card2 = card; // tempList.addAll(cardList);
opCard.huXi = 0; // if (isJiang) {
opCard.type = RuleWeight.TYPE_JIANG; // if (CardUtil.cardNum(card, cardList) >= 2) {
list.add(opCard); // OpCard opCard = new OpCard();
} // opCard.card1 = card;
} // opCard.card2 = card;
} // opCard.huXi = 0;
// opCard.type = RuleWeight.TYPE_JIANG;
/** // list.add(opCard);
* <EFBFBD><EFBFBD>С 1 2 3 4 5 6 7 8 9 ˳<EFBFBD><EFBFBD> // }
* // }
* @param card // }
*/ //
private void shunzi1_10(int card, List<OpCard> list, List<Integer> cardList) { // /**
List<Integer> tempList = new ArrayList<>(); // * <20><>С 1 2 3 4 5 6 7 8 9 ˳<><CBB3>
tempList.addAll(cardList); // *
CardUtil.distinctList(tempList); // * @param card
Collections.sort(tempList); // */
List<Integer> opCardList = new ArrayList<>(); // private void shunzi1_10(int card, List<OpCard> list, List<Integer> cardList) {
// AB (C) // List<Integer> tempList = new ArrayList<>();
if (CardUtil.cardNum(card - 2, cardList) >= 1 && CardUtil.cardNum(card - 1, cardList) >= 1) { // tempList.addAll(cardList);
opCardList.clear(); // CardUtil.distinctList(tempList);
opCardList.add(card); // Collections.sort(tempList);
opCardList.add(card - 1); // List<Integer> opCardList = new ArrayList<>();
opCardList.add(card - 2); // // AB (C)
list.add(addOpCard(opCardList)); // if (CardUtil.cardNum(card - 2, cardList) >= 1 && CardUtil.cardNum(card - 1, cardList) >= 1) {
// opCardList.clear();
} // opCardList.add(card);
// (A) B C // opCardList.add(card - 1);
if (CardUtil.cardNum(card + 1, cardList) >= 1 && CardUtil.cardNum(card + 2, cardList) >= 1) { // opCardList.add(card - 2);
opCardList.clear(); // list.add(addOpCard(opCardList));
opCardList.add(card); //
opCardList.add(card + 1); // }
opCardList.add(card + 2); // // (A) B C
list.add(addOpCard(opCardList)); // if (CardUtil.cardNum(card + 1, cardList) >= 1 && CardUtil.cardNum(card + 2, cardList) >= 1) {
} // opCardList.clear();
// A (B) C // opCardList.add(card);
if (CardUtil.cardNum(card - 1, cardList) >= 1 && CardUtil.cardNum(card + 1, cardList) >= 1) { // opCardList.add(card + 1);
opCardList.clear(); // opCardList.add(card + 2);
opCardList.add(card); // list.add(addOpCard(opCardList));
opCardList.add(card - 1); // }
opCardList.add(card + 1); // // A (B) C
list.add(addOpCard(opCardList)); // if (CardUtil.cardNum(card - 1, cardList) >= 1 && CardUtil.cardNum(card + 1, cardList) >= 1) {
} // opCardList.clear();
} // opCardList.add(card);
// opCardList.add(card - 1);
private OpCard addOpCard(List<Integer> opCardList) { // opCardList.add(card + 1);
Collections.sort(opCardList); // list.add(addOpCard(opCardList));
int huXi = 0; // }
// 123 ˳<><CBB3><EFBFBD>к<EFBFBD>Ϣ С3<D0A1><33>6 // }
if (opCardList.get(0) % 100 == 1) { //
huXi = Paixing.caclHuxi(RuleWeight.TYPE_CHOW, opCardList.get(0)); // private OpCard addOpCard(List<Integer> opCardList) {
} // Collections.sort(opCardList);
OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW, opCardList.get(0), opCardList.get(1), opCardList.get(2), huXi); // int huXi = 0;
return opCard; // // 123 ˳<><CBB3><EFBFBD>к<EFBFBD>Ϣ С3<D0A1><33>6
} // if (opCardList.get(0) % 100 == 1) {
// huXi = Paixing.caclHuxi(RuleWeight.TYPE_CHOW_OTHER, opCardList.get(0));
/** // }
* <EFBFBD><EFBFBD>С 2 7 10˳<EFBFBD><EFBFBD> <EFBFBD>к<EFBFBD>Ϣ С3<EFBFBD><EFBFBD>6 // OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW_OTHER, opCardList.get(0), opCardList.get(1), opCardList.get(2), huXi);
* // return opCard;
* @param card // }
*/ //
private void shunzi2710(int card, List<OpCard> list, List<Integer> cardList) { // /**
if (card % 100 == 2 || card % 100 == 7 || card % 100 == 10) { // * <20><>С 2 7 10˳<30><CBB3> <20>к<EFBFBD>Ϣ С3<D0A1><33>6
List<Integer> tempList = new ArrayList<>(); // *
tempList.addAll(cardList); // * @param card
CardUtil.distinctList(tempList); // */
Collections.sort(tempList); // private void shunzi2710(int card, List<OpCard> list, List<Integer> cardList) {
// (2) 7 10 // if (card % 100 == 2 || card % 100 == 7 || card % 100 == 10) {
List<Integer> opCardList = new ArrayList<>(); // List<Integer> tempList = new ArrayList<>();
if (CardUtil.cardNum(card + 5, cardList) >= 1 && CardUtil.cardNum(card + 8, cardList) >= 1) { // tempList.addAll(cardList);
opCardList.add(card); // CardUtil.distinctList(tempList);
opCardList.add(card + 5); // Collections.sort(tempList);
opCardList.add(card + 8); // // (2) 7 10
// 2 (7) 10 // List<Integer> opCardList = new ArrayList<>();
} else if (CardUtil.cardNum(card - 5, cardList) >= 1 && CardUtil.cardNum(card + 3, cardList) >= 1) { // if (CardUtil.cardNum(card + 5, cardList) >= 1 && CardUtil.cardNum(card + 8, cardList) >= 1) {
opCardList.add(card); // opCardList.add(card);
opCardList.add(card - 5); // opCardList.add(card + 5);
opCardList.add(card + 3); // opCardList.add(card + 8);
// 2 7 (10) // // 2 (7) 10
} else if (CardUtil.cardNum(card - 8, cardList) >= 1 && CardUtil.cardNum(card - 3, cardList) >= 1) { // } else if (CardUtil.cardNum(card - 5, cardList) >= 1 && CardUtil.cardNum(card + 3, cardList) >= 1) {
opCardList.add(card); // opCardList.add(card);
opCardList.add(card - 3); // opCardList.add(card - 5);
opCardList.add(card - 8); // opCardList.add(card + 3);
} // // 2 7 (10)
if (opCardList.size() > 0) { // } else if (CardUtil.cardNum(card - 8, cardList) >= 1 && CardUtil.cardNum(card - 3, cardList) >= 1) {
Collections.sort(opCardList); // opCardList.add(card);
int huXi = Paixing.caclHuxi(RuleWeight.TYPE_CHOW, opCardList.get(0)); // opCardList.add(card - 3);
OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW, opCardList.get(0), opCardList.get(1), opCardList.get(2), huXi); // opCardList.add(card - 8);
list.add(opCard); // }
if (opCard.card1 != card) { // if (opCardList.size() > 0) {
CardUtil.removeCard(tempList, opCard.card1, 1); // Collections.sort(opCardList);
} // int huXi = Paixing.caclHuxi(RuleWeight.TYPE_CHOW, opCardList.get(0));
if (opCard.card2 != card) { // OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW, opCardList.get(0), opCardList.get(1), opCardList.get(2), huXi);
CardUtil.removeCard(tempList, opCard.card2, 1); // list.add(opCard);
} // if (opCard.card1 != card) {
if (opCard.card3 != card) { // CardUtil.removeCard(tempList, opCard.card1, 1);
CardUtil.removeCard(tempList, opCard.card3, 1); // }
} // if (opCard.card2 != card) {
shunzi2710(card, list, tempList); // CardUtil.removeCard(tempList, opCard.card2, 1);
} // }
return; // if (opCard.card3 != card) {
} // CardUtil.removeCard(tempList, opCard.card3, 1);
} // }
// shunzi2710(card, list, tempList);
/** // }
* aaA AAa <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> û<EFBFBD><EFBFBD>Ϣ // return;
* // }
* @param card // }
*/ //
private void jiaopai(int card, List<OpCard> list, List<Integer> cardList) { // /**
List<Integer> tempList = new ArrayList<>(); // * aaA AAa <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> û<><C3BB>Ϣ
tempList.addAll(cardList); // *
int type = card / 100; // * @param card
int bg_num = type == 1 ? 100 : -100; // */
int bi_card = card + bg_num; // private void jiaopai(int card, List<OpCard> list, List<Integer> cardList) {
// aaA // List<Integer> tempList = new ArrayList<>();
if (CardUtil.cardNum(card, cardList) >= 2 && CardUtil.cardNum(bi_card, cardList) >= 1) { // tempList.addAll(cardList);
OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW, card, card, bi_card, 0); // int type = card / 100;
list.add(opCard); // int bg_num = type == 1 ? 100 : -100;
// AAa // int bi_card = card + bg_num;
} else if (CardUtil.cardNum(card, cardList) >= 1 && CardUtil.cardNum(bi_card, cardList) >= 2) { // // aaA
OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW, card, bi_card, bi_card, 0); // if (CardUtil.cardNum(card, cardList) >= 2 && CardUtil.cardNum(bi_card, cardList) >= 1) {
list.add(opCard); // OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW, card, card, bi_card, 0);
} // list.add(opCard);
} // // AAa
// } else if (CardUtil.cardNum(card, cardList) >= 1 && CardUtil.cardNum(bi_card, cardList) >= 2) {
/** // OpCard opCard = new OpCard(RuleWeight.TYPE_CHOW, card, bi_card, bi_card, 0);
* 3<EFBFBD><EFBFBD> // list.add(opCard);
* // }
* @param card // }
* @param list //
*/ // /**
private void kan(int card, List<OpCard> list, List<Integer> cardList) { // * 3<><33>
List<Integer> tempList = new ArrayList<>(); // *
List<Integer> opCardList = new ArrayList<>(); // * @param card
tempList.addAll(cardList); // * @param list
if (CardUtil.cardNum(card, cardList) == 3) { // */
opCardList.add(card); // private void kan(int card, List<OpCard> list, List<Integer> cardList) {
opCardList.add(card); // List<Integer> tempList = new ArrayList<>();
opCardList.add(card); // List<Integer> opCardList = new ArrayList<>();
int huxi = Paixing.caclHuxi(RuleWeight.TYPE_PONG, card); // tempList.addAll(cardList);
OpCard opCard = new OpCard(RuleWeight.TYPE_PONG, opCardList.get(0), opCardList.get(1), opCardList.get(2), huxi); // if (CardUtil.cardNum(card, cardList) == 3) {
list.add(opCard); // opCardList.add(card);
} // opCardList.add(card);
} // opCardList.add(card);
// int huxi = Paixing.caclHuxi(RuleWeight.TYPE_PONG, card);
private void addWinOpCard(int huxi, List<OpCard> opCard) { // OpCard opCard = new OpCard(RuleWeight.TYPE_PONG, opCardList.get(0), opCardList.get(1), opCardList.get(2), huxi);
if (opCard == null) { // list.add(opCard);
opCard = new ArrayList<>(); // }
} // }
opCard.addAll(this.opCardList); //
WinOpCard wo = new WinOpCard(opCard, huxi); // private void addWinOpCard(int huxi, List<OpCard> opCard) {
opCardsList.add(opCard); // if (opCard == null) {
winList.add(wo); // opCard = new ArrayList<>();
} // }
// opCard.addAll(this.opCardList);
public static void main(String[] args) throws ClassNotFoundException, IOException { // WinOpCard wo = new WinOpCard(opCard, huxi);
List<Integer> list = new ArrayList<>(); // opCardsList.add(opCard);
String str = "203,204,205,103,103,103,207,208,209,207,208,209,107,108,109,104,104"; // winList.add(wo);
for (String card : str.split(",")) { // }
list.add(Integer.parseInt(card)); //
} // public static void main(String[] args) throws ClassNotFoundException, IOException {
//List<OpCard> op = new ArrayList<OpCard>(); // List<Integer> list = new ArrayList<>();
//OpCard opCard=new OpCard(RuleWeight.TYPE_TI, 206, 206, 206, 12); // String str = "203,204,205,103,103,103,207,208,209,207,208,209,107,108,109,104,104";
//op.add(opCard); // for (String card : str.split(",")) {
// list.add(Integer.parseInt(card));
//WinCardNew winCard2 = new WinCardNew(list, 0, 0, true, op); // }
int[] arrs = {0,0}; // //List<OpCard> op = new ArrayList<OpCard>();
// //OpCard opCard=new OpCard(RuleWeight.TYPE_TI, 206, 206, 206, 12);
//System.out.println(arrs); // //op.add(opCard);
for(int i=0;i<2;i++){ //
if (i==0){ // //WinCardNew winCard2 = new WinCardNew(list, 0, 0, true, op);
arrs[i] = -190; // int[] arrs = {0,0};
}else{ //
arrs[i] = 80; // //System.out.println(arrs);
} // for(int i=0;i<2;i++){
//System.out.println(arrs[i]); // if (i==0){
} // arrs[i] = -190;
Arrays.sort(arrs); // }else{
int max = arrs[1]; // arrs[i] = 80;
int oth = arrs[0]; // }
//System.out.println(max+"==="+oth); // //System.out.println(arrs[i]);
// }
// Arrays.sort(arrs);
/* op = winCard2.groupCard(207); */ // int max = arrs[1];
//System.out.println(winCard2.checkHu()); // int oth = arrs[0];
//winCard2.checkWin(list); // //System.out.println(max+"==="+oth);
//winCard2.winList.forEach(wl -> System.out.println(wl.toString())); //
//System.out.println(winCard2.opCardsList); //
// /* op = winCard2.groupCard(207); */
/*int maxCount = 34; // //System.out.println(winCard2.checkHu());
int otherCount = -15; // //winCard2.checkWin(list);
double maxc = 0; // //winCard2.winList.forEach(wl -> System.out.println(wl.toString()));
maxc =(double) maxCount / 10; // //System.out.println(winCard2.opCardsList);
maxCount = (int) Math.round(maxc)*10; //
double maxo = 0; // /*int maxCount = 34;
if (otherCount<0){ // int otherCount = -15;
maxo =(double)-otherCount/10L; // double maxc = 0;
otherCount = -(int) Math.round(maxo)*10; // maxc =(double) maxCount / 10;
}else{ // maxCount = (int) Math.round(maxc)*10;
maxo =(double)otherCount/10L; // double maxo = 0;
otherCount = (int) Math.round(maxo)*10; // if (otherCount<0){
} // maxo =(double)-otherCount/10L;
List<Integer> redcards = new ArrayList<>(); // otherCount = -(int) Math.round(maxo)*10;
redcards.add(207); // }else{
redcards.add(202); // maxo =(double)otherCount/10L;
redcards.add(207); // otherCount = (int) Math.round(maxo)*10;
List<Integer> tmp = redcards; // }
int a=0; // List<Integer> redcards = new ArrayList<>();
int f= 0; // redcards.add(207);
for(int i=0;i<tmp.size();i++){ // redcards.add(202);
if (a==0){ // redcards.add(207);
a = tmp.get(i); // List<Integer> tmp = redcards;
} // int a=0;
if (a!= tmp.get(i)){ // int f= 0;
f++; // for(int i=0;i<tmp.size();i++){
} // if (a==0){
} // a = tmp.get(i);
// }
System.out.println(f);*/ // if (a!= tmp.get(i)){
} // f++;
// }
/** // }
* //
* @param cardInhand // System.out.println(f);*/
* :<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // }
* @param addCard //
* : <EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>0 // /**
* @param huxi // *
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĺ<EFBFBD>Ϣ // * @param cardInhand
* @param isJiang // * :<3A><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD> // * @param addCard
*/ // * : <20>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>0
public WinCardPxNew(List<Integer> cardInhand, int addCard, int huxi, boolean isJiang, List<OpCard> opCardList) { // * @param huxi
this.opCardStack = new Stack<>(); // * <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĺ<D0B5>Ϣ
this.lastOpCard = new ArrayList<>(); // * @param isJiang
this.cardList = new ArrayList<Integer>(cardInhand); // * <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA>
this.opCardList = new ArrayList<>(opCardList); // */
if (addCard > 0) { // public WinCardPxNew(List<Integer> cardInhand, int addCard, int huxi, boolean isJiang, List<OpCard> opCardList) {
this.cardList.add(addCard); // this.opCardStack = new Stack<>();
} // this.lastOpCard = new ArrayList<>();
Collections.sort(this.cardList); // this.cardList = new ArrayList<Integer>(cardInhand);
this.isJiang = isJiang; // this.opCardList = new ArrayList<>(opCardList);
this.addCard = addCard; // if (addCard > 0) {
this.huxi = huxi; // this.cardList.add(addCard);
this.winList = new ArrayList<>(); // }
this.opCardsList = new ArrayList<>(); // Collections.sort(this.cardList);
} // this.isJiang = isJiang;
} // this.addCard = addCard;
// this.huxi = huxi;
// this.winList = new ArrayList<>();
// this.opCardsList = new ArrayList<>();
// }
//}