master
parent
050a629d63
commit
5ae4bcdc6d
|
|
@ -59,12 +59,25 @@ public class RoomCard {
|
|||
}
|
||||
|
||||
public void sanlong() {
|
||||
List list2 = Arrays.asList(103, 104, 104, 105, 106, 107, 108, 108, 108, 109, 110, 110, 201, 203, 204, 204, 207,
|
||||
208, 209, 210);
|
||||
List list = Arrays.asList(101, 102, 103, 104, 105, 105, 107, 107, 107, 108, 110, 110, 201, 201, 202, 202, 204,
|
||||
205, 207, 210);
|
||||
List list3 = Arrays.asList(207, 106, 205, 206, 202, 202, 108, 104, 202, 109, 208, 206, 106, 209, 102, 210, 205,
|
||||
202, 209);
|
||||
|
||||
// //不够胡息
|
||||
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);
|
||||
// List list3 = Arrays.asList(102, 209, 109, 203, 101, 110, 101, 205, 108, 201, 206, 203, 202, 106, 104, 209, 209, 205, 204, 109);
|
||||
//
|
||||
|
||||
// //够胡息
|
||||
// List list2 = Arrays.asList(103, 104, 104, 105, 106, 107, 108, 108, 108, 109, 110, 110, 201, 203, 204, 204, 207,
|
||||
// 208, 209, 210);
|
||||
// List list = Arrays.asList(101, 102, 103, 104, 105, 105, 107, 107, 107, 108, 110, 110, 201, 201, 202, 202, 204,
|
||||
// 205, 207, 210);
|
||||
// List list3 = Arrays.asList(207, 106, 205, 206, 202, 202, 108, 104, 202, 109, 208, 206, 106, 209, 102, 210, 205,
|
||||
// 202, 209);
|
||||
|
||||
// List list2 = Arrays.asList(102, 104, 107, 107, 108, 108, 109, 109, 110, 203, 204, 204, 205, 207, 207, 208, 208, 208, 208, 209);
|
||||
// List list = Arrays.asList(103, 103, 103, 104, 106, 109, 110, 201, 202, 202, 202, 202, 203, 206, 206, 206, 207, 209, 210, 210);
|
||||
// List list3 = Arrays.asList(108, 210, 207, 105, 105, 105, 103, 204, 203, 209, 106, 106, 107, 107, 102, 203, 110, 110, 106, 201);
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ public class PRDrawPaoState extends StateBase<EXPlayer> {
|
|||
opcard.addInt(card);
|
||||
|
||||
EXMainServer.gameCtr.actionCard(owner, card, card, RuleWeight.TYPE_PAO, fromseat, opcard);
|
||||
owner.getRoom().activeCard=0;
|
||||
int count = owner.tiCount + owner.kongCount;
|
||||
if (count<2&&!owner.guohupao){
|
||||
EXMainServer.playerRuleMgr.condition(PlayerRuleManager.HU_RULE, owner);
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ public class PRTiState extends StateBase<EXPlayer> {
|
|||
opcard.addInt(card);
|
||||
opcard.addInt(card);
|
||||
owner.tipai_count = owner.tipai_count + 1;
|
||||
owner.getRoom().activeCard=0;
|
||||
EXMainServer.gameCtr.actionCard(owner, card, card, RuleWeight.TYPE_TI, owner.seat, opcard);
|
||||
EXMainServer.playerRuleMgr.condition(PlayerRuleManager.HU_RULE, owner);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,7 +52,8 @@ public class PRWeiState extends StateBase<EXPlayer> {
|
|||
ITArray opcard = TArray.newInstance();
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,14 +23,17 @@ public class Paixing {
|
|||
haveCardCount++;
|
||||
}
|
||||
}
|
||||
if (haveCardCount >= 2) {
|
||||
player.huXi+=win.tryKeziBefore(room.activeCard, player);
|
||||
|
||||
logger.info("当前胡息:"+player.huXi);
|
||||
}
|
||||
logger.info("当前行动的牌:" + room.activeCard);
|
||||
// int lastHuxi = 0;
|
||||
// if (haveCardCount >= 2) {
|
||||
// lastHuxi=win.tryKeziBefore(room.activeCard, player);
|
||||
//
|
||||
// logger.info("当前胡息:"+player.huXi+",最后胡牌胡息:"+lastHuxi);
|
||||
// }
|
||||
// logger.info("当前行动的牌:" + room.activeCard);
|
||||
// 原始算法计算
|
||||
if (win.tryWin(player) && !isWin) {
|
||||
boolean canWin = win.tryWin(player);
|
||||
if (canWin && !isWin) {
|
||||
|
||||
if (player.huXi >= 15) {
|
||||
isWin = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,17 +3,21 @@ package extend.zp.uitl;
|
|||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
import com.taurus.core.util.Logger;
|
||||
|
||||
import extend.zp.EXPlayer;
|
||||
import extend.zp.EXRoom;
|
||||
import extend.zp.OpCard;
|
||||
import extend.zp.RuleWeight;
|
||||
import extend.zp.player.rulestate.PRChi;
|
||||
|
||||
public class WinCard {
|
||||
public int pair_count;
|
||||
public int long_count;
|
||||
public Stack<List<Integer>> stack;
|
||||
public Stack<Integer> stackHuxi;
|
||||
public List<Integer> cardList;
|
||||
public int pair_count;
|
||||
public int long_count;
|
||||
public Stack<List<Integer>> stack;
|
||||
public Stack<Integer> stackHuxi;
|
||||
public List<Integer> cardList;
|
||||
public static final Logger logger = Logger.getLogger(WinCard.class);
|
||||
|
||||
private void push(List<Integer> cardGroup) {
|
||||
this.stack.push(cardGroup);
|
||||
|
|
@ -28,6 +32,10 @@ public class WinCard {
|
|||
}
|
||||
|
||||
boolean tryKezi(int card, EXPlayer player) {
|
||||
if(player.getRoom().activeCard!=0) {
|
||||
card = player.getRoom().activeCard;
|
||||
}
|
||||
// logger.info("当前牌数量:" + CardUtil.cardNum(card, this.cardList) + "--" + card);
|
||||
if (CardUtil.cardNum(card, this.cardList) >= 3) {
|
||||
CardUtil.removeCard(this.cardList, card, CardUtil.cardNum(card, this.cardList));
|
||||
List<Integer> cardGroup = new ArrayList<Integer>();
|
||||
|
|
@ -36,12 +44,17 @@ public class WinCard {
|
|||
cardGroup.add(card);
|
||||
this.push(cardGroup);
|
||||
int huXi = 0;
|
||||
if (player.getRoom().isTianHu && card == player.getRoom().drawCard && player.getRoom().bankerSeat == player.seat) {
|
||||
if (player.getRoom().isTianHu && card == player.getRoom().drawCard
|
||||
&& player.getRoom().bankerSeat == player.seat) {
|
||||
huXi = Paixing.caclHuxi(RuleWeight.TYPE_KAN, card);
|
||||
} else {
|
||||
huXi = Paixing.caclHuxi(RuleWeight.TYPE_PONG, card);
|
||||
}
|
||||
// logger.info("计算胡息:" + huXi + "--" + card);
|
||||
|
||||
player.huXi += huXi;
|
||||
logger.info("总胡息:" + player.huXi);
|
||||
|
||||
this.stackHuxi.push(huXi);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -163,6 +176,7 @@ public class WinCard {
|
|||
}
|
||||
|
||||
public boolean tryWin(EXPlayer player) {
|
||||
|
||||
if (this.cardList.size() == 0) {
|
||||
if (player.tiCount + player.kongCount > 0) {
|
||||
if (this.pair_count == 1) {
|
||||
|
|
@ -185,11 +199,9 @@ public class WinCard {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
if (activeCard == 0) {
|
||||
activeCard = this.cardList.get(0);
|
||||
}
|
||||
|
||||
if (activeCard % 100 == 1) {
|
||||
if (tryShunzi1(activeCard, player)) {
|
||||
if (tryWin(player)) {
|
||||
|
|
@ -279,7 +291,9 @@ public class WinCard {
|
|||
}
|
||||
} else {
|
||||
if (tryKezi(activeCard, player)) {
|
||||
if (tryWin(player)) {
|
||||
|
||||
boolean canWin = tryWin(player);
|
||||
if (canWin) {
|
||||
return true;
|
||||
}
|
||||
this.rollBack();
|
||||
|
|
@ -334,33 +348,33 @@ public class WinCard {
|
|||
public static void main(String[] args) throws ClassNotFoundException, IOException {
|
||||
Map<String, String> redis_room_map = new HashMap<>();
|
||||
|
||||
redis_room_map.put("id","749322");
|
||||
redis_room_map.put("game","17");
|
||||
redis_room_map.put("maxPlayers","2");
|
||||
redis_room_map.put("players","[168168,791309]");
|
||||
redis_room_map.put("group","532196");
|
||||
redis_room_map.put("owner","{user}:123456");
|
||||
redis_room_map.put("create_time","1749539730");
|
||||
redis_room_map.put("options","{\"tuoguan_active_time\":0,\"daniao\":2,\"pid\":17,\"shoupai\":0,\"honghu\":true,\"yikuaibian\":true,\"tiandihu\":true,\"isvip\":0,\"mode\":1,\"hpData\":{\"limitloot\":0,\"limitInRoom\":0,\"type\":1,\"times\":3000,\"maxRound\":100,\"xipai_rewardType\":3,\"limitPump\":0,\"limitPlay\":1000,\"robot_room\":0,\"basePump\":0,\"anchou_rewardType\":3,\"tex_times_room\":1000,\"rewards_list\":[{\"UpperLimitReward\":0,\"pumpProportion\":0,\"UpperLimit\":0}]},\"kahu\":true,\"maxRound\":100,\"mingwei\":true,\"hp_no_limit\":0,\"isNonnegative\":1,\"wuhu\":true,\"game_id\":17,\"maxPlayers\":2,\"hunum\":0,\"fengding\":1,\"haidiliao\":false,\"tuoguan\":false,\"isHidden\":0,\"xi_pai\":true,\"yidianhong\":true,\"shisanhong\":true,\"tuoguan_active_timeIndex\":1,\"tuoguan_result_type\":0,\"xi_pai_score\":1000,\"choupai\":0}");
|
||||
redis_room_map.put("cache_ver","12345");
|
||||
redis_room_map.put("times","100");
|
||||
redis_room_map.put("pay","2");
|
||||
redis_room_map.put("payer","2");
|
||||
redis_room_map.put("AA","1");
|
||||
redis_room_map.put("agent","true");
|
||||
redis_room_map.put("status","1");
|
||||
redis_room_map.put("isActive","true");
|
||||
redis_room_map.put("opt","1");
|
||||
redis_room_map.put("round","1");
|
||||
redis_room_map.put("gpid","17");
|
||||
redis_room_map.put("open","0");
|
||||
redis_room_map.put("kick_time","30");
|
||||
redis_room_map.put("seats","[1,2]");
|
||||
redis_room_map.put("id", "749322");
|
||||
redis_room_map.put("game", "17");
|
||||
redis_room_map.put("maxPlayers", "2");
|
||||
redis_room_map.put("players", "[168168,791309]");
|
||||
redis_room_map.put("group", "532196");
|
||||
redis_room_map.put("owner", "{user}:123456");
|
||||
redis_room_map.put("create_time", "1749539730");
|
||||
redis_room_map.put("options",
|
||||
"{\"tuoguan_active_time\":0,\"daniao\":2,\"pid\":17,\"shoupai\":0,\"honghu\":true,\"yikuaibian\":true,\"tiandihu\":true,\"isvip\":0,\"mode\":1,\"hpData\":{\"limitloot\":0,\"limitInRoom\":0,\"type\":1,\"times\":3000,\"maxRound\":100,\"xipai_rewardType\":3,\"limitPump\":0,\"limitPlay\":1000,\"robot_room\":0,\"basePump\":0,\"anchou_rewardType\":3,\"tex_times_room\":1000,\"rewards_list\":[{\"UpperLimitReward\":0,\"pumpProportion\":0,\"UpperLimit\":0}]},\"kahu\":true,\"maxRound\":100,\"mingwei\":true,\"hp_no_limit\":0,\"isNonnegative\":1,\"wuhu\":true,\"game_id\":17,\"maxPlayers\":2,\"hunum\":0,\"fengding\":1,\"haidiliao\":false,\"tuoguan\":false,\"isHidden\":0,\"xi_pai\":true,\"yidianhong\":true,\"shisanhong\":true,\"tuoguan_active_timeIndex\":1,\"tuoguan_result_type\":0,\"xi_pai_score\":1000,\"choupai\":0}");
|
||||
redis_room_map.put("cache_ver", "12345");
|
||||
redis_room_map.put("times", "100");
|
||||
redis_room_map.put("pay", "2");
|
||||
redis_room_map.put("payer", "2");
|
||||
redis_room_map.put("AA", "1");
|
||||
redis_room_map.put("agent", "true");
|
||||
redis_room_map.put("status", "1");
|
||||
redis_room_map.put("isActive", "true");
|
||||
redis_room_map.put("opt", "1");
|
||||
redis_room_map.put("round", "1");
|
||||
redis_room_map.put("gpid", "17");
|
||||
redis_room_map.put("open", "0");
|
||||
redis_room_map.put("kick_time", "30");
|
||||
redis_room_map.put("seats", "[1,2]");
|
||||
|
||||
;
|
||||
EXRoom room = new EXRoom("749322",redis_room_map);
|
||||
EXPlayer player = new EXPlayer(168168,room,"ddddddd");
|
||||
|
||||
EXRoom room = new EXRoom("749322", redis_room_map);
|
||||
EXPlayer player = new EXPlayer(168168, room, "ddddddd");
|
||||
|
||||
List<Integer> list = new ArrayList<>();
|
||||
String str = "106";
|
||||
|
|
@ -369,18 +383,18 @@ public class WinCard {
|
|||
}
|
||||
player.cardInhand = list;
|
||||
|
||||
|
||||
List<OpCard> op = new ArrayList<OpCard>();
|
||||
OpCard opCard=new OpCard(3, 102, 102, 102, 9);
|
||||
OpCard opCard = new OpCard(3, 102, 102, 102, 9);
|
||||
op.add(opCard);
|
||||
WinCard win = new WinCard(list, 106);
|
||||
boolean res = win.tryWin(player);
|
||||
}
|
||||
|
||||
|
||||
int tryKeziBefore(int card, EXPlayer player) {
|
||||
int huXi = 0;
|
||||
if (CardUtil.cardNum(card, this.cardList) >= 3) {
|
||||
if (player.getRoom().isTianHu && card == player.getRoom().drawCard && player.getRoom().bankerSeat == player.seat) {
|
||||
if (player.getRoom().isTianHu && card == player.getRoom().drawCard
|
||||
&& player.getRoom().bankerSeat == player.seat) {
|
||||
huXi = Paixing.caclHuxi(RuleWeight.TYPE_KAN, card);
|
||||
} else {
|
||||
huXi = Paixing.caclHuxi(RuleWeight.TYPE_PONG, card);
|
||||
|
|
|
|||
Loading…
Reference in New Issue