Files
hjha-server/gamepack/gamepack.txt
xiaoou a75733e4ae feat: ISMCTS bot + full documentation
新增:
- PdkFriendServer/Logic/IsmctsBot.cs: ISMCTS蒙特卡洛搜索机器人
  - 800次模拟/决策,对手手牌从未知牌池随机采样
  - 包庄决策:大牌(≥J/Q/K/A/2)数量 ≥6 则包庄
  - winRate日志输出,决策透明
- docs/bot-architecture.md: 系统架构文档
- docs/bot-algorithms.md: A/B/C三条算法路径完整分析
- docs/ismcts-design.md: ISMCTS实现设计详案

切换:
- PdkGameMain.InitBots: PdkBot → IsmctsBot(默认ISMCTS)

验证:
- dotnet build 0 errors
- 多人对局完整运行:包庄→出牌→结算→test over
2026-07-07 13:27:00 +08:00

1 line
2.9 KiB
Plaintext

{"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"}}