李泽帆 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) {
ITObject obj = list.getTObject(i);
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");
this.tipMgr.addTip(tip);
}

View File

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

View File

@ -5,11 +5,15 @@ import java.util.*;
import com.taurus.core.entity.ITArray;
import com.taurus.core.entity.TObject;
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 redis.clients.jedis.Jedis;
public class RoomCard {
public static final Logger logger = Logger.getLogger(RoomCard.class);
public ArrayList<Integer> cardList;
EXRoom room;
public ArrayList<Integer> subCardList;
@ -22,8 +26,8 @@ public class RoomCard {
}
public void init() {
this.cardList.clear();
this.subCardList.clear();
// this.cardList.clear();
// this.subCardList.clear();
// this.sanlong();
this.initCard();
@ -60,10 +64,19 @@ public class RoomCard {
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 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 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 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 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() {
this.cardList.clear();
for (int index = 1; index <= 10; index++) {
for (int index2 = 0; index2 < 4; index2++) {
this.cardList.add(100 + index);
@ -599,8 +613,8 @@ public class RoomCard {
for (int index = 0; index < 20; index++) {
int tmpcard = this.pop();
if (this.checksanlong(dealCards, tmpcard)) {
this.cardList.add(tmpcard);
this.shuffle();
int tmpcard1 = this.pop();
if (this.checksanlong(dealCards, tmpcard1)) {

View File

@ -12,7 +12,7 @@ public class RuleWeight {
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_KAN = 3;
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_CHOW_OTHER = 1;
public final static int SMALL_CARD = 1;
public final static int BIG_CARD = 2;

View File

@ -57,14 +57,14 @@ public class PRChi {
int huXi = 0;
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) {
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();
opcard.addInt(chiGroup[0]);
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);
owner.getRoom().activeCard=0;
EXMainServer.gameCtr.actionCard(owner, card, card, type, owner.seat, opcard);
EXMainServer.playerRuleMgr.condition(PlayerRuleManager.HU_RULE, owner);
}

View File

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

View File

@ -30,6 +30,10 @@ public class Paixing {
// logger.info("当前胡息:"+player.huXi+",最后胡牌胡息:"+lastHuxi);
// }
// logger.info("当前行动的牌:" + room.activeCard);
// logger.info("用户的牌:" + player.cardInhand);
// if(room.activeCard!=0) {
// player.cardInhand.add(room.activeCard);
// }
// 原始算法计算
boolean canWin = win.tryWin(player);
if (canWin && !isWin) {
@ -41,13 +45,6 @@ public class Paixing {
if (!isWin) {
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++) {
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.type = 1;
if (win.stack.get(i).size() > 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);
@ -150,6 +163,14 @@ public class Paixing {
huXi = 6;
}
break;
case RuleWeight.TYPE_CHOW_OTHER:
if (cardType == RuleWeight.SMALL_CARD) {
huXi = 3;
} else {
huXi = 6;
}
break;
case RuleWeight.TYPE_PONG:
if (cardType == RuleWeight.SMALL_CARD) {
huXi = 1;

View File

@ -1,12 +1,20 @@
package extend.zp.uitl;
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.RuleWeight;
public class WinCardNew {
public static final Logger logger = Logger.getLogger(WinCardNew.class);
private boolean isJiang = false;
private List<Integer> cardList;
private Stack<List<List<OpCard>>> opCardStack;
@ -324,6 +332,7 @@ public class WinCardNew {
List<Integer> tempList = new ArrayList<>();
List<Integer> opCardList = new ArrayList<>();
tempList.addAll(cardList);
if (CardUtil.cardNum(card, cardList) == 3) {
opCardList.add(card);
opCardList.add(card);

View File

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