diff --git a/PdkFriendServer/Logic/IsmctsBot.cs b/PdkFriendServer/Logic/IsmctsBot.cs
index 1e14d7f9..260de9c7 100644
--- a/PdkFriendServer/Logic/IsmctsBot.cs
+++ b/PdkFriendServer/Logic/IsmctsBot.cs
@@ -26,10 +26,86 @@ namespace PdkFriendServer.Logic
public bool DecideBaoZhuang(PdkBotView view)
{
- // 包庄决策:用快速模拟评估——手牌质量高就包
- // 简化:手牌中 >10 的大牌(J/Q/K/A/2)多就包
- int bigCards = view.MyHand.Count(c => c.GameNum >= 11);
- return bigCards >= 6; // ≥6 张大牌 → 有一定控制力
+ // ISMCTS 包庄决策:模拟 N 局,估算自己第一个出完的概率
+ // 包庄不改变牌局流程,只翻倍输赢:P(win)*2*gain - P(lose)*2*loss
+ // 阈值 45%——因为包庄成功收益翻倍,略微倾斜有利于局势占优
+ double winRate = EstimateWinProbability(view);
+ bool shouldBao = winRate >= 0.45;
+
+ Console.WriteLine($"[ISMCTS pos{view.MyPos}] 包庄评估: P(win)={winRate:P0} → {(shouldBao ? "包庄" : "不包")}");
+ return shouldBao;
+ }
+
+ /// 模拟 N 局随机对局,统计我第一个出完的概率
+ private double EstimateWinProbability(PdkBotView view)
+ {
+ int myPos = view.MyPos;
+ var hand = view.MyHand;
+ int sims = Math.Min(_simulations, 600); // 包庄模拟用 600 次,比出牌少
+
+ int wins = 0;
+ for (int s = 0; s < sims; s++)
+ {
+ if (SimulateWin(hand, view))
+ wins++;
+ }
+ return (double)wins / sims;
+ }
+
+ /// 模拟一局只看胜负——不指定第一步出什么
+ private bool SimulateWin(TCardInfoPdkF[] myHand, PdkBotView view)
+ {
+ int myPos = view.MyPos;
+ int nextPos = myPos % 3 + 1;
+ int oppPos = (myPos + 1) % 3 + 1;
+
+ var hands = new List[3];
+ hands[myPos - 1] = new List(myHand);
+ hands[nextPos - 1] = new List();
+ hands[oppPos - 1] = new List();
+
+ var allCards = GenerateDeck();
+ var unknown = allCards.Where(c => !myHand.Any(h => h.ID == c.ID)).ToList();
+ Shuffle(unknown);
+
+ int nextCnt = view.ShenYuCard[nextPos - 1];
+ int oppCnt = view.ShenYuCard[oppPos - 1];
+ hands[nextPos - 1].AddRange(unknown.Take(nextCnt));
+ hands[oppPos - 1].AddRange(unknown.Skip(nextCnt).Take(oppCnt));
+
+ // 模拟到有人出完
+ int current = myPos;
+ var maxPlay = new PlayOutCardPdkF(); // GameNum=0 → 新一轮
+ int maxPlayer = 0;
+
+ for (int move = 0; move < 400; move++)
+ {
+ var curHand = hands[current - 1];
+ if (curHand.Count == 0) return current == myPos;
+
+ bool isNewRound = maxPlayer == current || maxPlay.GameNum == 0;
+ var curMax = isNewRound ? new PlayOutCardPdkF() : maxPlay;
+ var tips = PdkCardAlgorithm.GetTipCard(curMax, curHand.ToArray(), null, false);
+
+ if (tips != null && tips.Count > 0)
+ {
+ var pick = tips[0];
+ maxPlay = new PlayOutCardPdkF
+ {
+ Pos = (byte)current,
+ GameNum = pick[0].GameNum,
+ Type = pick.Count == 1 ? CardType1.DanZhang : CardType1.DuiZi,
+ Ids = pick.Select(c => c.ID).ToArray()
+ };
+ maxPlayer = current;
+ foreach (var id in maxPlay.Ids)
+ curHand.RemoveAll(c => c.ID == id);
+ }
+ current = current % 3 + 1;
+ }
+
+ return hands[myPos - 1].Count <= hands[nextPos - 1].Count
+ && hands[myPos - 1].Count <= hands[oppPos - 1].Count;
}
public PlayOutCardPdkF DecidePlay(PdkBotView view)
diff --git a/exe/PdkFriendServer/PdkFriendServer.dll b/exe/PdkFriendServer/PdkFriendServer.dll
index 4f42588f..e16b7922 100644
Binary files a/exe/PdkFriendServer/PdkFriendServer.dll and b/exe/PdkFriendServer/PdkFriendServer.dll differ
diff --git a/exe/PdkFriendServer/PdkFriendServer.pdb b/exe/PdkFriendServer/PdkFriendServer.pdb
index 88c47f7a..42b9bdba 100644
Binary files a/exe/PdkFriendServer/PdkFriendServer.pdb and b/exe/PdkFriendServer/PdkFriendServer.pdb differ
diff --git a/exe/hjha-console/PdkFriendServer.dll b/exe/hjha-console/PdkFriendServer.dll
index 4f42588f..e16b7922 100644
Binary files a/exe/hjha-console/PdkFriendServer.dll and b/exe/hjha-console/PdkFriendServer.dll differ
diff --git a/exe/hjha-console/PdkFriendServer.pdb b/exe/hjha-console/PdkFriendServer.pdb
index 88c47f7a..42b9bdba 100644
Binary files a/exe/hjha-console/PdkFriendServer.pdb and b/exe/hjha-console/PdkFriendServer.pdb differ
diff --git a/exe/hjha-console/hjha-console.dll b/exe/hjha-console/hjha-console.dll
index c4df0ab4..47bce560 100644
Binary files a/exe/hjha-console/hjha-console.dll and b/exe/hjha-console/hjha-console.dll differ
diff --git a/exe/hjha-console/hjha-console.pdb b/exe/hjha-console/hjha-console.pdb
index 98001b13..617d661c 100644
Binary files a/exe/hjha-console/hjha-console.pdb and b/exe/hjha-console/hjha-console.pdb differ
diff --git a/gamepack/gamepack.txt b/gamepack/gamepack.txt
index 8ca9f2eb..9c0bfaa4 100644
--- a/gamepack/gamepack.txt
+++ b/gamepack/gamepack.txt
@@ -1 +1 @@
-{"CardPack":{"Cards":[{"CardInfos":[{"Flower":1,"Num":2,"GameState":1,"ID":2,"GameNum":16},{"Flower":4,"Num":13,"GameState":1,"ID":52,"GameNum":13},{"Flower":3,"Num":12,"GameState":1,"ID":38,"GameNum":12},{"Flower":1,"Num":11,"GameState":1,"ID":11,"GameNum":11},{"Flower":4,"Num":11,"GameState":1,"ID":50,"GameNum":11},{"Flower":2,"Num":10,"GameState":1,"ID":23,"GameNum":10},{"Flower":3,"Num":10,"GameState":1,"ID":36,"GameNum":10},{"Flower":4,"Num":10,"GameState":1,"ID":49,"GameNum":10},{"Flower":2,"Num":9,"GameState":1,"ID":22,"GameNum":9},{"Flower":2,"Num":8,"GameState":1,"ID":21,"GameNum":8},{"Flower":3,"Num":8,"GameState":1,"ID":34,"GameNum":8},{"Flower":1,"Num":7,"GameState":1,"ID":7,"GameNum":7},{"Flower":1,"Num":5,"ID":5,"GameNum":5},{"Flower":2,"Num":4,"GameState":1,"ID":17,"GameNum":4},{"Flower":4,"Num":4,"GameState":1,"ID":43,"GameNum":4},{"Flower":2,"Num":3,"GameState":1,"ID":16,"GameNum":3}]},{"CardInfos":[{"Flower":3,"Num":1,"GameState":1,"ID":27,"GameNum":14},{"Flower":2,"Num":13,"GameState":1,"ID":26,"GameNum":13},{"Flower":1,"Num":12,"GameState":1,"ID":12,"GameNum":12},{"Flower":4,"Num":12,"GameState":1,"ID":51,"GameNum":12},{"Flower":2,"Num":11,"GameState":1,"ID":24,"GameNum":11},{"Flower":1,"Num":10,"GameState":1,"ID":10,"GameNum":10},{"Flower":3,"Num":9,"GameState":1,"ID":35,"GameNum":9},{"Flower":4,"Num":9,"GameState":1,"ID":48,"GameNum":9},{"Flower":1,"Num":8,"GameState":1,"ID":8,"GameNum":8},{"Flower":4,"Num":8,"GameState":1,"ID":47,"GameNum":8},{"Flower":4,"Num":7,"GameState":1,"ID":46,"GameNum":7},{"Flower":1,"Num":6,"GameState":1,"ID":6,"GameNum":6},{"Flower":3,"Num":6,"GameState":1,"ID":32,"GameNum":6},{"Flower":4,"Num":6,"GameState":1,"ID":45,"GameNum":6},{"Flower":3,"Num":5,"GameState":1,"ID":31,"GameNum":5},{"Flower":4,"Num":5,"GameState":1,"ID":44,"GameNum":5}]},{"CardInfos":[{"Flower":1,"Num":1,"GameState":1,"ID":1,"GameNum":14},{"Flower":4,"Num":1,"GameState":1,"ID":40,"GameNum":14},{"Flower":1,"Num":13,"GameState":1,"ID":13,"GameNum":13},{"Flower":3,"Num":13,"GameState":1,"ID":39,"GameNum":13},{"Flower":2,"Num":12,"GameState":1,"ID":25,"GameNum":12},{"Flower":3,"Num":11,"GameState":1,"ID":37,"GameNum":11},{"Flower":1,"Num":9,"GameState":1,"ID":9,"GameNum":9},{"Flower":2,"Num":7,"GameState":1,"ID":20,"GameNum":7},{"Flower":3,"Num":7,"GameState":1,"ID":33,"GameNum":7},{"Flower":2,"Num":6,"GameState":1,"ID":19,"GameNum":6},{"Flower":2,"Num":5,"GameState":1,"ID":18,"GameNum":5},{"Flower":1,"Num":4,"GameState":1,"ID":4,"GameNum":4},{"Flower":3,"Num":4,"GameState":1,"ID":30,"GameNum":4},{"Flower":1,"Num":3,"GameState":1,"ID":3,"GameNum":3},{"Flower":3,"Num":3,"GameState":1,"ID":29,"GameNum":3},{"Flower":4,"Num":3,"ID":42,"GameNum":3}]}]},"Info":{"GameZT":4,"MaxPlayCard":{"Pos":1,"Type":2,"GameNum":5,"Ids":"BQ=="},"ActivePlayCard":{"Pos":1,"Type":2,"GameNum":5,"Ids":"BQ=="},"WhoPlay":1,"FistPlay":3,"BaoZhuang":"AAAB","PlayNum":3,"OverPos":1,"ZhaDans":[0,0,0],"ShenYuCard":"DxAP","Score":[0,0,0],"BaoPos":3,"PlayTuoGauan":"AAAA"}}
\ No newline at end of file
+{"CardPack":{"Cards":[{"CardInfos":[{"Flower":1,"Num":2,"GameState":1,"ID":2,"GameNum":16},{"Flower":3,"Num":1,"GameState":1,"ID":27,"GameNum":14},{"Flower":3,"Num":13,"GameState":1,"ID":39,"GameNum":13},{"Flower":4,"Num":13,"GameState":1,"ID":52,"GameNum":13},{"Flower":3,"Num":11,"GameState":1,"ID":37,"GameNum":11},{"Flower":4,"Num":11,"GameState":1,"ID":50,"GameNum":11},{"Flower":1,"Num":8,"GameState":1,"ID":8,"GameNum":8},{"Flower":3,"Num":8,"GameState":1,"ID":34,"GameNum":8},{"Flower":4,"Num":8,"GameState":1,"ID":47,"GameNum":8},{"Flower":2,"Num":7,"GameState":1,"ID":20,"GameNum":7},{"Flower":3,"Num":6,"GameState":1,"ID":32,"GameNum":6},{"Flower":1,"Num":5,"GameState":1,"ID":5,"GameNum":5},{"Flower":1,"Num":4,"GameState":1,"ID":4,"GameNum":4},{"Flower":4,"Num":4,"GameState":1,"ID":43,"GameNum":4},{"Flower":1,"Num":3,"GameState":1,"ID":3,"GameNum":3},{"Flower":2,"Num":3,"GameState":1,"ID":16,"GameNum":3}]},{"CardInfos":[{"Flower":1,"Num":13,"GameState":1,"ID":13,"GameNum":13},{"Flower":2,"Num":12,"GameState":1,"ID":25,"GameNum":12},{"Flower":4,"Num":12,"GameState":1,"ID":51,"GameNum":12},{"Flower":1,"Num":11,"GameState":1,"ID":11,"GameNum":11},{"Flower":1,"Num":10,"GameState":1,"ID":10,"GameNum":10},{"Flower":4,"Num":10,"GameState":1,"ID":49,"GameNum":10},{"Flower":1,"Num":9,"GameState":1,"ID":9,"GameNum":9},{"Flower":3,"Num":9,"GameState":1,"ID":35,"GameNum":9},{"Flower":4,"Num":9,"GameState":1,"ID":48,"GameNum":9},{"Flower":2,"Num":8,"GameState":1,"ID":21,"GameNum":8},{"Flower":1,"Num":6,"GameState":1,"ID":6,"GameNum":6},{"Flower":2,"Num":6,"GameState":1,"ID":19,"GameNum":6},{"Flower":4,"Num":6,"GameState":1,"ID":45,"GameNum":6},{"Flower":2,"Num":4,"GameState":1,"ID":17,"GameNum":4},{"Flower":3,"Num":3,"GameState":1,"ID":29,"GameNum":3},{"Flower":4,"Num":3,"ID":42,"GameNum":3}]},{"CardInfos":[{"Flower":1,"Num":1,"GameState":1,"ID":1,"GameNum":14},{"Flower":4,"Num":1,"GameState":1,"ID":40,"GameNum":14},{"Flower":2,"Num":13,"GameState":1,"ID":26,"GameNum":13},{"Flower":1,"Num":12,"GameState":1,"ID":12,"GameNum":12},{"Flower":3,"Num":12,"GameState":1,"ID":38,"GameNum":12},{"Flower":2,"Num":11,"GameState":1,"ID":24,"GameNum":11},{"Flower":2,"Num":10,"GameState":1,"ID":23,"GameNum":10},{"Flower":3,"Num":10,"GameState":1,"ID":36,"GameNum":10},{"Flower":2,"Num":9,"GameState":1,"ID":22,"GameNum":9},{"Flower":1,"Num":7,"GameState":1,"ID":7,"GameNum":7},{"Flower":3,"Num":7,"GameState":1,"ID":33,"GameNum":7},{"Flower":4,"Num":7,"GameState":1,"ID":46,"GameNum":7},{"Flower":2,"Num":5,"GameState":1,"ID":18,"GameNum":5},{"Flower":3,"Num":5,"GameState":1,"ID":31,"GameNum":5},{"Flower":4,"Num":5,"GameState":1,"ID":44,"GameNum":5},{"Flower":3,"Num":4,"ID":30,"GameNum":4}]}]},"Info":{"GameZT":4,"MaxPlayCard":{"Pos":3,"Type":2,"GameNum":4,"Ids":"Hg=="},"ActivePlayCard":{"Pos":3,"Type":2,"GameNum":4,"Ids":"Hg=="},"WhoPlay":3,"FistPlay":1,"BaoZhuang":"AgEB","PlayNum":3,"OverPos":3,"ZhaDans":[0,0,0],"ShenYuCard":"EA8P","Score":[0,0,0],"BaoPos":2,"PlayTuoGauan":"AAAA"}}
\ No newline at end of file
diff --git a/output.txt b/output.txt
index c34a99f1..0b8aa82d 100644
--- a/output.txt
+++ b/output.txt
@@ -1,75 +1,82 @@
-[07/07/2026 13:26:48]:关牌玩法, 首局黑桃3先出, 四带三, 炸弹加10, 包庄, 必压,
-[07/07/2026 13:26:48]:-------------1开始-----------------------------
-[07/07/2026 13:26:48]:ID:2 花色:黑桃 大小:2_16 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:52 花色:方块 大小:13_13 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:38 花色:梅花 大小:12_12 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:11 花色:黑桃 大小:11_11 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:50 花色:方块 大小:11_11 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:23 花色:红桃 大小:10_10 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:36 花色:梅花 大小:10_10 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:49 花色:方块 大小:10_10 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:22 花色:红桃 大小:9_9 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:21 花色:红桃 大小:8_8 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:34 花色:梅花 大小:8_8 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:7 花色:黑桃 大小:7_7 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:5 花色:黑桃 大小:5_5 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:17 花色:红桃 大小:4_4 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:43 花色:方块 大小:4_4 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:16 花色:红桃 大小:3_3 分:0 状态:在手上
-[07/07/2026 13:26:48]:-------------2开始-----------------------------
-[07/07/2026 13:26:48]:ID:27 花色:梅花 大小:1_14 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:26 花色:红桃 大小:13_13 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:12 花色:黑桃 大小:12_12 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:51 花色:方块 大小:12_12 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:24 花色:红桃 大小:11_11 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:10 花色:黑桃 大小:10_10 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:35 花色:梅花 大小:9_9 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:48 花色:方块 大小:9_9 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:8 花色:黑桃 大小:8_8 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:47 花色:方块 大小:8_8 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:46 花色:方块 大小:7_7 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:6 花色:黑桃 大小:6_6 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:32 花色:梅花 大小:6_6 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:45 花色:方块 大小:6_6 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:31 花色:梅花 大小:5_5 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:44 花色:方块 大小:5_5 分:0 状态:在手上
-[07/07/2026 13:26:48]:-------------3开始-----------------------------
-[07/07/2026 13:26:48]:ID:1 花色:黑桃 大小:1_14 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:40 花色:方块 大小:1_14 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:13 花色:黑桃 大小:13_13 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:39 花色:梅花 大小:13_13 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:25 花色:红桃 大小:12_12 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:37 花色:梅花 大小:11_11 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:9 花色:黑桃 大小:9_9 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:20 花色:红桃 大小:7_7 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:33 花色:梅花 大小:7_7 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:19 花色:红桃 大小:6_6 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:18 花色:红桃 大小:5_5 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:4 花色:黑桃 大小:4_4 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:30 花色:梅花 大小:4_4 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:3 花色:黑桃 大小:3_3 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:29 花色:梅花 大小:3_3 分:0 状态:在手上
-[07/07/2026 13:26:48]:ID:42 花色:方块 大小:3_3 分:0 状态:在手上
-[07/07/2026 13:26:48]:玩家:0,bombCount:0
-[07/07/2026 13:26:48]:玩家:1,bombCount:0
-[07/07/2026 13:26:48]:玩家:2,bombCount:0
-[07/07/2026 13:26:48]:第一个出牌位置:3,开始次数:0,上游玩家:0
-[07/07/2026 13:26:48]:whoPlay:3
-[07/07/2026 13:26:49]:保存文件:./gamepack/gamepack2026-07-07-13-26-49-044.txt
-[07/07/2026 13:26:49]:bot-包庄: pos3=包
-[07/07/2026 13:26:49]:whoPlay:3
-[07/07/2026 13:26:49]:保存文件:./gamepack/gamepack2026-07-07-13-26-49-060.txt
-[07/07/2026 13:26:49]:进入打牌流程,玩家出牌内容是:pos:3 type:DanZhang num:3 ids:len:1--42
-[07/07/2026 13:26:49]:---------------------3----- shengyu:15-------------
-[07/07/2026 13:26:49]:whoPlay:1
-[07/07/2026 13:26:49]:保存文件:./gamepack/gamepack2026-07-07-13-26-49-365.txt
-[07/07/2026 13:26:49]:进入打牌流程,玩家出牌内容是:pos:1 type:DanZhang num:5 ids:len:1--5
-[07/07/2026 13:26:49]:---------------------1----- shengyu:15-------------
-[07/07/2026 13:26:49]:whoPlay:1
-[07/07/2026 13:26:49]:保存文件:./gamepack/gamepack2026-07-07-13-26-49-638.txt
-[07/07/2026 13:26:49]:进入结算 bao:3,overpos:1
-[07/07/2026 13:26:49]:baowin:False
-[07/07/2026 13:26:49]:玩家:1 ,输赢:32
-[07/07/2026 13:26:49]:玩家:2 ,输赢:32
-[07/07/2026 13:26:49]:玩家:3 ,输赢:-64
-[07/07/2026 13:26:49]:test over!
+[07/07/2026 13:29:25]:关牌玩法, 首局黑桃3先出, 四带三, 炸弹加10, 包庄, 必压,
+[07/07/2026 13:29:25]:-------------1开始-----------------------------
+[07/07/2026 13:29:25]:ID:2 花色:黑桃 大小:2_16 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:27 花色:梅花 大小:1_14 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:39 花色:梅花 大小:13_13 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:52 花色:方块 大小:13_13 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:37 花色:梅花 大小:11_11 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:50 花色:方块 大小:11_11 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:8 花色:黑桃 大小:8_8 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:34 花色:梅花 大小:8_8 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:47 花色:方块 大小:8_8 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:20 花色:红桃 大小:7_7 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:32 花色:梅花 大小:6_6 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:5 花色:黑桃 大小:5_5 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:4 花色:黑桃 大小:4_4 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:43 花色:方块 大小:4_4 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:3 花色:黑桃 大小:3_3 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:16 花色:红桃 大小:3_3 分:0 状态:在手上
+[07/07/2026 13:29:25]:-------------2开始-----------------------------
+[07/07/2026 13:29:25]:ID:13 花色:黑桃 大小:13_13 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:25 花色:红桃 大小:12_12 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:51 花色:方块 大小:12_12 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:11 花色:黑桃 大小:11_11 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:10 花色:黑桃 大小:10_10 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:49 花色:方块 大小:10_10 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:9 花色:黑桃 大小:9_9 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:35 花色:梅花 大小:9_9 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:48 花色:方块 大小:9_9 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:21 花色:红桃 大小:8_8 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:6 花色:黑桃 大小:6_6 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:19 花色:红桃 大小:6_6 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:45 花色:方块 大小:6_6 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:17 花色:红桃 大小:4_4 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:29 花色:梅花 大小:3_3 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:42 花色:方块 大小:3_3 分:0 状态:在手上
+[07/07/2026 13:29:25]:-------------3开始-----------------------------
+[07/07/2026 13:29:25]:ID:1 花色:黑桃 大小:1_14 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:40 花色:方块 大小:1_14 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:26 花色:红桃 大小:13_13 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:12 花色:黑桃 大小:12_12 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:38 花色:梅花 大小:12_12 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:24 花色:红桃 大小:11_11 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:23 花色:红桃 大小:10_10 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:36 花色:梅花 大小:10_10 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:22 花色:红桃 大小:9_9 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:7 花色:黑桃 大小:7_7 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:33 花色:梅花 大小:7_7 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:46 花色:方块 大小:7_7 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:18 花色:红桃 大小:5_5 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:31 花色:梅花 大小:5_5 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:44 花色:方块 大小:5_5 分:0 状态:在手上
+[07/07/2026 13:29:25]:ID:30 花色:梅花 大小:4_4 分:0 状态:在手上
+[07/07/2026 13:29:25]:玩家:0,bombCount:0
+[07/07/2026 13:29:25]:玩家:1,bombCount:0
+[07/07/2026 13:29:25]:玩家:2,bombCount:0
+[07/07/2026 13:29:25]:第一个出牌位置:1,开始次数:0,上游玩家:0
+[07/07/2026 13:29:25]:whoPlay:1
+[07/07/2026 13:29:25]:保存文件:./gamepack/gamepack2026-07-07-13-29-25-456.txt
+[07/07/2026 13:29:25]:bot-包庄: pos1=不包
+[07/07/2026 13:29:25]:whoPlay:2
+[07/07/2026 13:29:25]:保存文件:./gamepack/gamepack2026-07-07-13-29-25-606.txt
+[07/07/2026 13:29:25]:bot-包庄: pos2=包
+[07/07/2026 13:29:25]:whoPlay:3
+[07/07/2026 13:29:25]:保存文件:./gamepack/gamepack2026-07-07-13-29-25-748.txt
+[07/07/2026 13:29:25]:bot-包庄: pos3=包
+[07/07/2026 13:29:25]:进入打牌,play:2 ,包庄玩家的位置:2
+[07/07/2026 13:29:25]:whoPlay:2
+[07/07/2026 13:29:25]:保存文件:./gamepack/gamepack2026-07-07-13-29-25-884.txt
+[07/07/2026 13:29:26]:进入打牌流程,玩家出牌内容是:pos:2 type:DanZhang num:3 ids:len:1--42
+[07/07/2026 13:29:26]:---------------------2----- shengyu:15-------------
+[07/07/2026 13:29:26]:whoPlay:3
+[07/07/2026 13:29:26]:保存文件:./gamepack/gamepack2026-07-07-13-29-26-037.txt
+[07/07/2026 13:29:26]:进入打牌流程,玩家出牌内容是:pos:3 type:DanZhang num:4 ids:len:1--30
+[07/07/2026 13:29:26]:---------------------3----- shengyu:15-------------
+[07/07/2026 13:29:26]:whoPlay:3
+[07/07/2026 13:29:26]:保存文件:./gamepack/gamepack2026-07-07-13-29-26-188.txt
+[07/07/2026 13:29:26]:进入结算 bao:2,overpos:3
+[07/07/2026 13:29:26]:baowin:False
+[07/07/2026 13:29:26]:玩家:1 ,输赢:32
+[07/07/2026 13:29:26]:玩家:2 ,输赢:-64
+[07/07/2026 13:29:26]:玩家:3 ,输赢:32
+[07/07/2026 13:29:26]:test over!