public void ThreeOfAKindToFour()
        {
            Stopwatch   watch = new Stopwatch();
            List <Card> cards = new List <Card>
            {
                new Card(Rank.Ace, Suit.Hearts),
                new Card(Rank.Six, Suit.Diamonds),
                new Card(Rank.Five, Suit.Hearts),
                new Card(Rank.Six, Suit.Clubs),
                new Card(Rank.Six, Suit.Spades),
                new Card(Rank.Queen, Suit.Clubs),
            };

            SixCardHand hand = new SixCardHand(cards);

            hand.Sort();

            watch.Start();
            var current = PokerEvaluator.CalculateTurnScore(hand.Cards);
            var outs    = PokerOutsCalculator.CalculateRiverOuts(hand, current);

            watch.Stop();

            Assert.AreEqual(1, outs.FourOfAKind.Outs);
            Assert.AreEqual(false, outs.FourOfAKind.RunnerRunner);

            Assert.Greater(200, watch.ElapsedMilliseconds);
        }
        public void OneInsideSFlushHighAce()
        {
            Stopwatch   watch = new Stopwatch();
            List <Card> cards = new List <Card>
            {
                new Card(Rank.Ace, Suit.Hearts),
                new Card(Rank.Queen, Suit.Hearts),
                new Card(Rank.Five, Suit.Hearts),
                new Card(Rank.Jack, Suit.Hearts),
                new Card(Rank.Five, Suit.Hearts),
                new Card(Rank.Ten, Suit.Hearts),
            };

            SixCardHand hand = new SixCardHand(cards);

            hand.Sort();

            watch.Start();
            var score = PokerEvaluator.CalculateFlopScore(hand.Cards);
            var outs  = PokerOutsCalculator.CalculateRiverOuts(hand, score);

            watch.Stop();

            Assert.AreEqual(1, outs.StraightFlush.Outs);
            Assert.Greater(200, watch.ElapsedMilliseconds);
        }
        public void OneInsideSFlushDrawWithTwoPair()
        {
            Stopwatch   watch = new Stopwatch();
            List <Card> cards = new List <Card>
            {
                new Card(Rank.Four, Suit.Spades),
                new Card(Rank.Four, Suit.Hearts),
                new Card(Rank.Five, Suit.Hearts),
                new Card(Rank.Six, Suit.Hearts),
                new Card(Rank.Eight, Suit.Hearts),
                new Card(Rank.Six, Suit.Diamonds),
            };

            SixCardHand hand = new SixCardHand(cards);

            hand.Sort();

            watch.Start();
            var score = PokerEvaluator.CalculateFlopScore(hand.Cards);
            var outs  = PokerOutsCalculator.CalculateRiverOuts(hand, score);

            watch.Stop();

            Assert.AreEqual(1, outs.StraightFlush.Outs);
            Assert.Greater(200, watch.ElapsedMilliseconds);
        }
        public void OneInsideStraightDrawWithHighAceWithTwoPair()
        {
            Stopwatch   watch = new Stopwatch();
            List <Card> cards = new List <Card>
            {
                new Card(Rank.Queen, Suit.Diamonds),
                new Card(Rank.King, Suit.Hearts),
                new Card(Rank.Ten, Suit.Clubs),
                new Card(Rank.Queen, Suit.Spades),
                new Card(Rank.King, Suit.Hearts),
                new Card(Rank.Ace, Suit.Diamonds),
            };

            SixCardHand hand = new SixCardHand(cards);

            hand.Sort();

            watch.Start();
            var score = PokerEvaluator.CalculateFlopScore(hand.Cards);
            var outs  = PokerOutsCalculator.CalculateRiverOuts(hand, score);

            watch.Stop();

            Assert.AreEqual(4, outs.Straight.Outs);
            Assert.Greater(200, watch.ElapsedMilliseconds);
        }
Exemplo n.º 5
0
        public void OneOutsideRFlushWithTwoPair()
        {
            Stopwatch   watch = new Stopwatch();
            List <Card> cards = new List <Card>
            {
                new Card(Rank.Ten, Suit.Hearts),
                new Card(Rank.Jack, Suit.Hearts),
                new Card(Rank.Queen, Suit.Hearts),
                new Card(Rank.King, Suit.Hearts),
                new Card(Rank.Jack, Suit.Clubs),
                new Card(Rank.Queen, Suit.Diamonds),
            };

            SixCardHand hand = new SixCardHand(cards);

            hand.Sort();

            watch.Start();
            var score = PokerEvaluator.CalculateFlopScore(hand.Cards);
            var outs  = PokerOutsCalculator.CalculateRiverOuts(hand, score);

            watch.Stop();

            Assert.AreEqual(1, outs.RoyalFlush.Outs);
            Assert.Greater(250, watch.ElapsedMilliseconds);
        }
Exemplo n.º 6
0
 private void HandleTurn()
 {
     try
     {
         GameState = PokerGameState.Turn;
         ClearOutsEvent?.Invoke();
         PokerScore = PokerEvaluator.CalculateTurnScore(CurrentRound.AllCards.Values.ToList().GetRange(0, 6));
         Outs       = PokerOutsCalculator.CalculateRiverOuts(
             new SixCardHand(CurrentRound.AllCards.Values.ToList().GetRange(0, 6)), PokerScore);
         UpdateOutsEvent?.Invoke(Outs);
         UpdateCurrentScoreEvent?.Invoke(PokerScore);
         UpdateBestPossibleEvent?.Invoke(Outs.BestScore());
         UpdateBestChanceEvent?.Invoke(Outs.BestPossible());
         UpdateOutsToBestEvent?.Invoke(Outs.BestPossible());
     }
     catch (Exception e)
     {
         Log.Error(e.Message);
         Log.Error(e.StackTrace);
     }
 }