예제 #1
0
        public static void Main(string[] args)
        {
            //GenerateAllHandsInAFile(2);
            //var totalCombinations = BinaryOperations.GetNumberOfCombinations(13UL, 2UL);
            //Console.WriteLine(String.Format("Done. {0} combinations have been generated.", totalCombinations));
            //FindAllStraightFlush();
            var hands  = new List <PokerHand>();
            var pha    = new PokerHandAnalyzer();
            var myHand = new PokerHand(new HoleCards("Qs", "Qc"), new CardsCollection("Kh Ks 7d Ad Th"));

            hands.Add(pha.GetPokerHand(myHand));
            Console.WriteLine($"{myHand}");

            myHand = new PokerHand(new HoleCards("As", "Ac"), new CardsCollection("Kh Ks 7d Jd Th"));
            hands.Add(pha.GetPokerHand(myHand));
            Console.WriteLine(hands[0].CompareTo(hands[1]));

            myHand = new PokerHand(new HoleCards("As", "Ah"), new CardsCollection("Ad Kh Th Jh Qh"));
            hands.Add(pha.GetPokerHand(myHand));
            foreach (var hand in hands)
            {
                Console.WriteLine(hand);
            }
            hands.Sort();
            foreach (var hand in hands)
            {
                Console.WriteLine(hand);
            }


            Console.ReadKey();
        }
예제 #2
0
        private void SetHandResults()
        {
            var phh = new Hashtable();
            var phs = new List <PokerHand>();

            LastHandResults = new Dictionary <Player, PokerHand>(Table.NumberOfPlayers);
            LastHandWinners = new Dictionary <Player, PokerHand>();
            var pht = new PokerHandAnalyzer();

            foreach (var seat in Table.GetOccupiedSeats(Table.ButtonPosition))
            {
                var ph = new PokerHand(seat.Hand, Table.Board);
                pht.AddPokerHand(ph);
                phs.Add(ph);
                phh.Add(ph.ToLong(), seat.Player);
            }
            phs.Sort();
            foreach (var ph in phs)
            {
                LastHandResults.Add((Player)phh[ph.ToLong()], ph);
                if (LastHandWinners.Count <= 0)
                {
                    LastHandWinners.Add((Player)phh[ph.ToLong()], ph);
                }
                else
                {
                    if (LastHandWinners.Values.ToList()[0].Equals(ph))
                    {
                        LastHandWinners.Add((Player)phh[ph.ToLong()], ph);
                    }
                }
            }
        }
예제 #3
0
        public void TwoPairs_With_Kickers_2()
        {
            var pha = new PokerHandAnalyzer();
            var ph  = pha.GetPokerHand(new PokerHand(new HoleCards("Qs", "Qc"), new CardsCollection("Kh Ks 7d Ad Th")));

            Assert.Equal(PokerHandAnalyzer.Strength.TwoPairs, ph.Strength);
            Assert.Equal(3, ph.Kickers.Count);
            Assert.Equal("Kc", ph.Kickers[0].ToString());
            Assert.Equal("Qc", ph.Kickers[1].ToString());
            Assert.Equal("Ac", ph.Kickers[2].ToString());
        }
예제 #4
0
        public void PokerHandAnalyzer_TwoPairs()
        {
            var pha = new PokerHandAnalyzer();
            var ph1 = new PokerHand(new HoleCards(new Card("Ah"), new Card("4s")),
                                    new CardsCollection()
            {
                new Card("As"), new Card("3c"), new Card("8h"), new Card("4h"), new Card("6s")
            });

            pha.AddPokerHand(ph1);
            var ph2 = new PokerHand(new HoleCards(new Card("Qs"), new Card("6c")),
                                    new CardsCollection()
            {
                new Card("As"), new Card("3c"), new Card("8h"), new Card("4h"), new Card("6s")
            });

            pha.AddPokerHand(ph2);
            Assert.Equal(PokerHandAnalyzer.Strength.TwoPairs, pha.GetPokerHand(ph1.ToLong()).Strength);
            Assert.Equal(PokerHandAnalyzer.Strength.OnePair, pha.GetPokerHand(ph2.ToLong()).Strength);
            // TODO test de kickers, kickers of TwoPairs are not properly sets
        }
예제 #5
0
        public void PokerHandAnalyzerUnitTest_1()
        {
            var pha = new PokerHandAnalyzer();

            // 0000 0000 0000/0000 0000.0000 0/000.0000 0000.01/00 0000.0000 001/0.0000 0001.1111
            pha.AddPokerHand(0x400201FL);
            Assert.Equal(PokerHandAnalyzer.Strength.StraightFlush, pha.GetPokerHand(0x400201FL).Strength);

            // 0000 0000 0000/0000 0000.0000 0/000.0000 0000.00/00 0000.0000 000/0.0000 0111.1111
            var ph = new PokerHand(new HoleCards(new Card("2c"), new Card("3c")),
                                   new CardsCollection()
            {
                new Card("4c"), new Card("5c"), new Card("6c"), new Card("7c"), new Card("8c")
            });

            pha.AddPokerHand(ph);
            Assert.Equal(PokerHandAnalyzer.Strength.StraightFlush, pha.GetPokerHand(0x7FL).Strength);

            // 0000 0000 0000/0000 0000.0000 0/000.0000 0000.00/00 0000.1111 111/0.0000 0000.0000
            Assert.Equal(PokerHandAnalyzer.Strength.StraightFlush, pha.GetPokerHand(0xFE000L).Strength);

            // 0000 0000 0000/0000 0000.0000 0/000.0000 0000.00/00 0100.0100 010/1.0001 0001.0001
            Assert.Equal(PokerHandAnalyzer.Strength.HighCard, pha.GetPokerHand(0x445111L).Strength);
        }