fix: ISMCTS包庄决策——600次模拟估算P(win), 阈值45%
替换占位逻辑(大牌≥6张)为真正的蒙特卡洛评估: - EstimateWinProbability(): 模拟N局完整对局, 统计我第一个出完的概率 - 阈值45%: 包庄收益翻倍, 略微倾斜于有利局势 - 日志: [ISMCTS posX] 包庄评估: P(win)=XX% → 包庄/不包 原理: 包庄不改变牌局流程(不像斗地主叫地主), 只翻倍输赢。 因此决策简化为 P(win|我的手牌) ≥ 阈值 → 包庄。
This commit is contained in:
@ -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;
|
||||
}
|
||||
|
||||
/// <summary>模拟 N 局随机对局,统计我第一个出完的概率</summary>
|
||||
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;
|
||||
}
|
||||
|
||||
/// <summary>模拟一局只看胜负——不指定第一步出什么</summary>
|
||||
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<TCardInfoPdkF>[3];
|
||||
hands[myPos - 1] = new List<TCardInfoPdkF>(myHand);
|
||||
hands[nextPos - 1] = new List<TCardInfoPdkF>();
|
||||
hands[oppPos - 1] = new List<TCardInfoPdkF>();
|
||||
|
||||
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)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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"}}
|
||||
{"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"}}
|
||||
157
output.txt
157
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!
|
||||
|
||||
Reference in New Issue
Block a user