public HandOf7Summary(HandOf7 handOf7) { Ranks = handOf7.Cards.Select(c => c.Rank).ToList(); Ranks.Sort(); var dict = new Dictionary <SuitEnum, int>(); foreach (var card in handOf7.Cards) { if (!dict.ContainsKey(card.Suit)) { dict.Add(card.Suit, 0); } dict[card.Suit]++; } foreach (var entry in dict) { if (entry.Value >= 5) { SameColorRanks = handOf7.Cards.Where(c => c.Suit == entry.Key).Select(c => c.Rank).ToList(); SameColorRanks.Sort(); } } }
private IEnumerable <string> FindWinners() { var playerScores = new Dictionary <string, int>(); foreach (var playerRegistry in PlayerRegistries) { var playerName = playerRegistry.Player.Name; var hand = _recorder.GetCardStatus(playerName); var cards = new List <Card>(); cards.AddRange(hand.Holes); cards.AddRange(hand.Flops); cards.Add(hand.Turn); cards.Add(hand.River); var handOf7 = new HandOf7(cards); var handOf5 = handOf7.FindBestHandOf5(); handOf5.Score = Utils.GetScoreFor5Cards(handOf5); playerScores.Add(playerName, handOf5.Score); _recorder.RecordBestHand(playerName, handOf5); } var bestScore = playerScores.Values.Max(); var winners = playerScores.Where(p => p.Value == bestScore).Select(p => p.Key); return(winners); }
private CompareResult FightBattleSetup(Fighter host, Fighter guest, BattleSetup battleSetup) { var hostCards = new List <Card>(); hostCards.AddRange(host.Holes); hostCards.AddRange(battleSetup.CommunityCards); var hostHandOf7 = new HandOf7(hostCards); var guestCards = new List <Card>(); guestCards.AddRange(guest.Holes); guestCards.AddRange(battleSetup.CommunityCards); var guestHandOf7 = new HandOf7(guestCards); var hostBestHandScore = Utils.FindBestHandOf5(hostHandOf7); var guestBestHandScore = Utils.FindBestHandOf5(guestHandOf7); if (hostBestHandScore > guestBestHandScore) { return(new CompareResult(1, 0, 0)); } else if (hostBestHandScore < guestBestHandScore) { return(new CompareResult(0, 1, 0)); } else { return(new CompareResult(0, 0, 1)); } }
public static int FindBestHandOf5(HandOf7 handOf7) { if (_handOf7SummarySlimRecordsDict == null) { Init(); } var handOf7String = new HandOf7Summary(handOf7).ToString(); var handOf7SlimRecord = _handOf7SummarySlimRecordsDict[handOf7String]; return(handOf7SlimRecord.Score); }