public PlayingUser(string name, int credit, Game game) : base(name, game) { this.credit = credit; status = "Active"; roundsWon = 0; roundsLost = 0; biggestPotWon = 0; bestHand = CardAnalyzer.HandRank.HighCard; userInput = new UserInput(); gainPerRound = new List <int>(); }
private List <PlayingUser> DetermineWinner() { Dictionary <PlayingUser, CardAnalyzer.HandRank> playerScores = new Dictionary <PlayingUser, CardAnalyzer.HandRank>(); ca.setCardArray(cards); foreach (PlayingUser player in players) { if (player.GetStatus() != "Fold") { ca.setHand(player.GetHand()); playerScores.Add(player, ca.analyze()); if (playerScores[player] < player.GetBestHand()) { player.SetBestHand(playerScores[player]); } } } CardAnalyzer.HandRank minValue = CardAnalyzer.HandRank.HighCard; foreach (CardAnalyzer.HandRank rank in playerScores.Values) { if (rank < minValue) { minValue = rank; } } Dictionary <PlayingUser, CardAnalyzer.HandRank> bestPlayerScores = new Dictionary <PlayingUser, CardAnalyzer.HandRank>(); foreach (PlayingUser player in playerScores.Keys) { if (playerScores[player] == minValue) { bestPlayerScores.Add(player, playerScores[player]); } } List <PlayingUser> winners = new List <PlayingUser>(); foreach (PlayingUser player in bestPlayerScores.Keys) { if (winners.Count == 0) { winners.Add(player); } else { PlayerHand winner = ca.tieBreaker(minValue, winners.First().GetHand(), player.GetHand()); if (winner == null) { winners.Add(player); } else if (winner == player.GetHand()) { winners.Clear(); winners.Add(player); } } } return(winners); }
public void SetBestHand(CardAnalyzer.HandRank hr) { bestHand = hr; }