fix: CanAnKong硬编码false + 人类HUD显示听牌/杠/对手状态
修复:
- CanAnKong: 硬编码false → 检查手牌中4张相同(暗杠)
- HumanMahjongPlayer: 添加MeldsSolver依赖,实时检测听牌
- 人类HUD: 显示牌墙/副露/听牌🀄/杠类型(暗/明/加)
- 交互模式人类: 对手显示'X张手牌 | 已pung[..]'不暴露手牌
This commit is contained in:
@ -146,17 +146,43 @@ else
|
||||
// Show current hands
|
||||
if (!room.IsFinished)
|
||||
{
|
||||
// In human mode, show only opponent hands (human HUD shows their own)
|
||||
Console.WriteLine();
|
||||
Console.WriteLine(" 当前手牌:");
|
||||
foreach (var p in room.State.PlayerOrder)
|
||||
if (humanMode)
|
||||
{
|
||||
if (!room.State.AlivePlayers.Contains(p)) continue;
|
||||
var hand = room.State.Hands[p];
|
||||
Console.WriteLine($" {p}: {string.Join(" ", hand.OrderBy(t => t).Select(MahjongTile.ToString))} ({hand.Count}张)");
|
||||
Console.WriteLine(" 对手状态:");
|
||||
foreach (var p in room.State.PlayerOrder)
|
||||
{
|
||||
if (p == "AI-东") continue; // skip human
|
||||
if (!room.State.AlivePlayers.Contains(p)) continue;
|
||||
var hand = room.State.Hands[p];
|
||||
var exposedStr = "";
|
||||
if (room.State.Exposed.TryGetValue(p, out var melds) && melds.Count > 0)
|
||||
{
|
||||
var descs = melds.Select(m =>
|
||||
$"{m.Type}[{string.Join(",", m.Tiles.Where(t => t != -1).Select(MahjongTile.ToString))}]");
|
||||
exposedStr = $" | 已{string.Join(" ", descs)}";
|
||||
}
|
||||
Console.WriteLine($" {p}: {hand.Count}张手牌{exposedStr}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(" 当前手牌:");
|
||||
foreach (var p in room.State.PlayerOrder)
|
||||
{
|
||||
if (!room.State.AlivePlayers.Contains(p)) continue;
|
||||
var hand = room.State.Hands[p];
|
||||
Console.WriteLine($" {p}: {string.Join(" ", hand.OrderBy(t => t).Select(MahjongTile.ToString))} ({hand.Count}张)");
|
||||
}
|
||||
}
|
||||
|
||||
Console.Write("\n[按 Enter 继续]");
|
||||
Console.ReadLine();
|
||||
// In human mode, don't wait for Enter — human interactions already pause
|
||||
if (!humanMode)
|
||||
{
|
||||
Console.Write("\n[按 Enter 继续]");
|
||||
Console.ReadLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user