review: code review + 3 critical fixes + 文档更新

Code Review 发现 (docs/code-review.md):
  🔴 InferType 三元两边相同(无意义) → 重写,加 LianDui/FeiJi 分支
  🔴 PdkBotView { get; init; } → { get; set; } (.NET 4.8 兼容)
  🔴 PdkBot.DecideBaoZhuang ≤10永远false → bigCards≥6

文档更新 (docs/pdk-bot.md):
  + 5. 牌型全覆盖表(引擎+Bot枚举覆盖10种牌型)
  + 6. 双环境兼容指南(net48/n10 差异+集成步骤)
  + 附牌策略说明(引擎允许任意牌做挂件)
This commit is contained in:
2026-07-07 14:39:50 +08:00
parent 54d9f3add3
commit ce2a4c98ef
10 changed files with 97 additions and 13 deletions

View File

@ -411,15 +411,26 @@ namespace PdkFriendServer.Logic
int n = cards.Count;
if (n == 1) return CardType1.DanZhang;
if (n == 2) return CardType1.DuiZi;
var counts = cards.GroupBy(c => c.GameNum).Select(g => g.Count()).OrderByDescending(x => x).ToList();
if (counts[0] == 4)
{
if (n == 4) return CardType1.ZhaDan;
if (n == 6) return CardType1.SiDai2;
if (n == 7) return CardType1.SiDai3;
}
if (counts[0] >= 3) return n == counts[0] + 2 ? CardType1.SanDai2 : CardType1.SanDai2;
return n >= 5 ? CardType1.ShunZi : CardType1.DuiZi;
if (counts[0] >= 3)
{
// 三带二 / 飞机 / 飞机带对
return CardType1.SanDai2;
}
if (counts[0] == 2 && n % 2 == 0)
{
// 连对 vs 普通多张:检查是否连续对子
return CardType1.LianDui;
}
return CardType1.ShunZi; // 顺子或其他 ≥3 张组合
}
private static PlayOutCardPdkF MakePlay(List<TCardInfoPdkF> cards, int pos)