private bool ChangeCardTrigger(Player player = null) { if (ChangeDeck.Count == 0) { ChangeDeck = InitChangeDeck(); } if (player == null) { while (true) { Console.WriteLine("请输入使用机会卡的玩家ID:(Exit 退出)"); string playerId = Console.ReadLine().Trim(); if (string.Equals(playerId, "exit", StringComparison.OrdinalIgnoreCase)) { return(false); } player = Players.FirstOrDefault(p => p.Id == playerId || string.Equals(p.Name, playerId, StringComparison.OrdinalIgnoreCase)); if (player == null) { Console.WriteLine("该玩家不存在。"); continue; } break; } } int cardNumber = PickChangeCard(); Console.WriteLine($"触发的命运卡ID为:{cardNumber}"); if (ChangeDeck.Contains(cardNumber)) { ChangeDeck.Remove(cardNumber); ChangeUsed.Add(cardNumber); GameLogs changeCardTrigger = new GameLogs() { ID = GetLogID(), Type = LogEventType.ChangeCardTrigger, PlayerName = player.Name, ChangeCardTrigger = cardNumber, Info = "触发命运卡", Round = Round, currentPlayer = currentPlayer }; AddLog(changeCardTrigger); return(true); } else { return(false); } }
private bool ChanceCardUse() { Player player = new Player(); while (true) { Console.WriteLine("请输入使用机会卡的玩家ID:(Exit 退出)"); string playerId = Console.ReadLine().Trim(); if (string.Equals(playerId, "exit", StringComparison.OrdinalIgnoreCase)) { return(false); } player = Players.FirstOrDefault(p => p.Id == playerId || string.Equals(p.Name, playerId, StringComparison.OrdinalIgnoreCase)); if (player == null) { Console.WriteLine("该玩家不存在。"); continue; } break; } int cardNumber = -1; while (true) { Console.WriteLine($"玩家持有机会卡 {player.ChanceCards.Count} 张"); foreach (var c in player.ChanceCards) { Console.Write($"{c} "); } Console.WriteLine(); if (player.ChanceCards.Count == 0) { Console.WriteLine("无法使用机会卡。"); break; } Console.WriteLine("请输入机会卡ID:(Exit 退出)"); bool notExit = ReadIntNumber(out cardNumber); if (!notExit) { return(false); } if (player.ChanceCards.Contains(cardNumber)) { break; } Console.WriteLine("玩家不持有该卡。"); } if (player.ChanceCards.Contains(cardNumber)) { player.ChanceCards.Remove(cardNumber); ChanceUsed.Add(cardNumber); ChanceUsed = ChangeUsed.OrderBy(x => x).ToList(); GameLogs chanceCardLossLog = new GameLogs() { ID = GetLogID(), Type = LogEventType.ChanceCardUse, PlayerName = player.Name, ChanceCardUse = cardNumber, Info = "使用机会卡", Round = Round, currentPlayer = currentPlayer }; AddLog(chanceCardLossLog); return(true); } else { return(false); } }