Beispiel #1
0
        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();
                }
            }
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
        public static int FindBestHandOf5(HandOf7 handOf7)
        {
            if (_handOf7SummarySlimRecordsDict == null)
            {
                Init();
            }

            var handOf7String     = new HandOf7Summary(handOf7).ToString();
            var handOf7SlimRecord = _handOf7SummarySlimRecordsDict[handOf7String];

            return(handOf7SlimRecord.Score);
        }