fix: 人类玩家显示摸到的牌 (LastDrawnTile + 箭头高亮)

- GameState新增LastDrawnTile字段
- StepTurn摸牌时记录LastDrawnTile
- HumanMahjongPlayer显示'刚刚摸到:X'并用→←箭头标记新牌
- 庄家首轮LastDrawnTile清空
This commit is contained in:
xiaoou
2026-07-04 11:49:31 +08:00
parent 4302ec2fd5
commit f9242cf965
3 changed files with 15 additions and 2 deletions

View File

@ -21,13 +21,22 @@ public class HumanMahjongPlayer
var hand = state.Hands.GetValueOrDefault(Name, new List<int>());
var sorted = hand.OrderBy(t => t).ToList();
// Highlight last drawn tile
int? drawnTile = state.LastDrawnTile;
int drawnIdx = drawnTile.HasValue ? sorted.IndexOf(drawnTile.Value) : -1;
while (true)
{
Console.WriteLine();
Console.WriteLine($"=== {Name} 的回合 ===");
if (drawnTile.HasValue && drawnIdx >= 0)
Console.WriteLine($" 🀫 刚刚摸到: {MahjongTile.ToString(drawnTile.Value)}");
Console.WriteLine($"手牌 ({hand.Count}张):");
for (int i = 0; i < sorted.Count; i++)
Console.WriteLine($" [{i + 1}] {MahjongTile.ToString(sorted[i])}");
{
bool isDrawn = (i == drawnIdx);
Console.WriteLine($" [{i + 1}] {(isDrawn ? " " : " ")}{MahjongTile.ToString(sorted[i])}{(isDrawn ? " " : "")}");
}
Console.WriteLine();
// Show available actions