feat: PdkBot — 外挂式自动出牌机器人

架构:
- IPdkBot 接口:外挂接入点,与核心逻辑解耦
- PdkBotView:只传自己手牌+公开信息(MaxPlayCard/ShenYuCard/Rule)
  不暴露其他玩家手牌——模拟真人视角
- PdkBot:score-based 最优策略
  评分维度:直接获胜>>对手威胁>>牌效率>>炸弹保留>>先手权>>黑桃3

对接:
- PdkGameMain.BotMode=true 启用
- WaitWanJiaShuRu中BuildBotView→bot.DecidePlay/DecideBaoZhuang
- GameBaoZhuang解除WhoPlay=GetNextPos注释以支持逐人轮询
- SetFalseOperation加DeskGameDo null守卫

文件:
- PdkFriendServer/Logic/PdkBot.cs(核心机器人)
- PdkFriendServer/Logic/PdkGameMain.cs(BotMode+对接)
- hjha-console/Program.cs(main.BotMode=true启动)
This commit is contained in:
2026-07-07 13:11:13 +08:00
parent 418b5db27f
commit ec87d921a3
11 changed files with 621 additions and 118 deletions

View File

@ -7,12 +7,14 @@ namespace hjha_console
{
static void Main(string[] args)
{
Console.WriteLine("=== HJHA Console Mode - 跑得快测试 ===");
Console.WriteLine("启动游戏状态机:发牌 → 包庄 → 打牌 → 结算");
Console.WriteLine("=== HJHA Console Mode - 跑得快 Bot对局 (3人自动) ===");
Console.WriteLine("牌型:关牌玩法 16张/人 | 策略score-based optimal");
Console.WriteLine();
string jsonPath = args.Length > 0 ? args[0] : null;
var main = new PdkGameMain(null);
main.BotMode = true;
string jsonPath = args.Length > 0 ? args[0] : null;
main.Test(jsonPath ?? "");
}
}