コード例 #1
0
 public void UpdateBestPossibleLabel(Pokerscore score)
 {
     Dispatcher.BeginInvoke((Action) delegate
     {
         BestPossibleLabel.Text = score.ToNiceString();
     });
 }
コード例 #2
0
 public void UpdateCurrentScoreLabel(Pokerscore score)
 {
     Dispatcher.BeginInvoke((Action) delegate
     {
         YourScoreLabel.Text = score.ToNiceString();
     });
 }
コード例 #3
0
        public static Pokerscore CalculateRiverScore(List <Card> cards)
        {
            Pokerscore bestScore = Pokerscore.None;

            foreach (var combination in PokerEnumerator.GetCombinationsOfNMinusTwo(cards, 5))
            {
                Pokerscore score = PokerLogic.Score(new FiveCardHand(combination));

                if (score > bestScore)
                {
                    bestScore = score;
                }
            }

            return(bestScore);
        }
コード例 #4
0
 private void HandleRiver()
 {
     try
     {
         GameState = PokerGameState.River;
         ClearOutsEvent?.Invoke();
         PokerScore = PokerEvaluator.CalculateRiverScore(CurrentRound.AllCards.Values.ToList().GetRange(0, 7));
         PokerOutsCalculator.CalculateFinalWinChance(CurrentRound.AllCards.Values.ToList());
         UpdateCurrentScoreEvent?.Invoke(PokerScore);
         UpdateBestPossibleEvent?.Invoke(Pokerscore.None);
         UpdateBestChanceEvent?.Invoke(_noOuts);
         UpdateOutsToBestEvent?.Invoke(_noOuts);
     }
     catch (Exception e)
     {
         Log.Error(e.Message);
         Log.Error(e.StackTrace);
     }
 }
コード例 #5
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);
     }
 }
コード例 #6
0
        public static string ToNiceString(this Pokerscore score)
        {
            switch (score)
            {
            case Pokerscore.None:
                return("None");

            case Pokerscore.Pair:
                return("Pair");

            case Pokerscore.TwoPair:
                return("Two Pair");

            case Pokerscore.ThreeOfAKind:
                return("Trips");

            case Pokerscore.Straight:
                return("Straight");

            case Pokerscore.Flush:
                return("Flush");

            case Pokerscore.FullHouse:
                return("Full House");

            case Pokerscore.FourOfAKind:
                return("Quads");

            case Pokerscore.StraightFlush:
                return("S Flush");

            case Pokerscore.RoyalFlush:
                return("R Flush");

            default:
                return("None");
            }
        }
        public static PokerOuts CalculateTurnOuts(FiveCardHand cards, Pokerscore currentScore)
        {
            cards.Sort();
            PokerOuts.Clear();

            switch (currentScore)
            {
            case Pokerscore.RoyalFlush:
                return(PokerOuts);

            case Pokerscore.StraightFlush:
                PokerOuts.RoyalFlush = RoyalFlushCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.FourOfAKind:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.FullHouse:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                PokerOuts.FourOfAKind   = FourOfAKindCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.Flush:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                PokerOuts.FourOfAKind   = FourOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.FullHouse     = FullHouseCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.ThreeOfAKind:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                PokerOuts.FourOfAKind   = FourOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.FullHouse     = FullHouseCalculator.CalculateTurn(cards);
                PokerOuts.Flush         = FlushCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.Straight:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                PokerOuts.FourOfAKind   = FourOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.FullHouse     = FullHouseCalculator.CalculateTurn(cards);
                PokerOuts.Flush         = FlushCalculator.CalculateTurn(cards);
                PokerOuts.ThreeOfAKind  = ThreeOfAKindCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.TwoPair:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                PokerOuts.FourOfAKind   = FourOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.FullHouse     = FullHouseCalculator.CalculateTurn(cards);
                PokerOuts.Flush         = FlushCalculator.CalculateTurn(cards);
                PokerOuts.ThreeOfAKind  = ThreeOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.Straight      = StraightCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.Pair:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                PokerOuts.FourOfAKind   = FourOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.FullHouse     = FullHouseCalculator.CalculateTurn(cards);
                PokerOuts.Flush         = FlushCalculator.CalculateTurn(cards);
                PokerOuts.ThreeOfAKind  = ThreeOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.Straight      = StraightCalculator.CalculateTurn(cards);
                PokerOuts.TwoPair       = TwoPairCalculator.CalculateTurn(cards);
                return(PokerOuts);

            case Pokerscore.None:
                PokerOuts.RoyalFlush    = RoyalFlushCalculator.CalculateTurn(cards);
                PokerOuts.StraightFlush = StraightFlushCalculator.CalculateTurn(cards);
                PokerOuts.FourOfAKind   = FourOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.FullHouse     = FullHouseCalculator.CalculateTurn(cards);
                PokerOuts.Flush         = FlushCalculator.CalculateTurn(cards);
                PokerOuts.ThreeOfAKind  = ThreeOfAKindCalculator.CalculateTurn(cards);
                PokerOuts.Straight      = StraightCalculator.CalculateTurn(cards);
                PokerOuts.TwoPair       = TwoPairCalculator.CalculateTurn(cards);
                PokerOuts.Pair          = PairCalculator.CalculateTurn(cards);
                return(PokerOuts);

            default:
                return(null);
            }
        }
コード例 #8
0
        public static OutsCollection CalculateRiverOuts(SixCardHand cards, Pokerscore currentScore)
        {
            cards.Sort();
            OutsCollection.Clear();

            switch (currentScore)
            {
            case Pokerscore.RoyalFlush:
                return(OutsCollection);

            case Pokerscore.StraightFlush:
                OutsCollection.RoyalFlush = RoyalFlushCalculator.CalculateRiver(cards);
                return(OutsCollection);

            case Pokerscore.FourOfAKind:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                return(OutsCollection);

            case Pokerscore.FullHouse:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                OutsCollection.FourOfAKind   = FourOfAKindCalculator.RiverOutsDictionary[currentScore];
                return(OutsCollection);

            case Pokerscore.Flush:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                OutsCollection.FourOfAKind   = FourOfAKindCalculator.CalculateRiver(cards);
                OutsCollection.FullHouse     = FullHouseCalculator.CalculateRiver(cards);
                return(OutsCollection);

            case Pokerscore.Straight:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                OutsCollection.FourOfAKind   = FourOfAKindCalculator.CalculateRiver(cards);
                OutsCollection.FullHouse     = FullHouseCalculator.CalculateRiver(cards);
                OutsCollection.Flush         = FlushCalculator.CalculateRiver(cards);
                return(OutsCollection);

            case Pokerscore.ThreeOfAKind:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                OutsCollection.FourOfAKind   = FourOfAKindCalculator.RiverOutsDictionary[currentScore];
                OutsCollection.FullHouse     = FullHouseCalculator.RiverOutsDictionary[currentScore];
                OutsCollection.Flush         = FlushCalculator.CalculateRiver(cards);
                OutsCollection.Straight      = StraightCalculator.CalculateRiver(cards);
                return(OutsCollection);

            case Pokerscore.TwoPair:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                OutsCollection.FullHouse     = FullHouseCalculator.RiverOutsDictionary[currentScore];
                OutsCollection.Flush         = FlushCalculator.CalculateRiver(cards);
                OutsCollection.Straight      = StraightCalculator.CalculateRiver(cards);
                return(OutsCollection);

            case Pokerscore.Pair:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                OutsCollection.Flush         = FlushCalculator.CalculateRiver(cards);
                OutsCollection.ThreeOfAKind  = ThreeOfAKindCalculator.CalculateRiver(cards);
                OutsCollection.Straight      = StraightCalculator.CalculateRiver(cards);
                OutsCollection.TwoPair       = TwoPairCalculator.CalculateRiver(cards);
                return(OutsCollection);

            case Pokerscore.None:
                OutsCollection.RoyalFlush    = RoyalFlushCalculator.CalculateRiver(cards);
                OutsCollection.StraightFlush = StraightFlushCalculator.CalculateRiver(cards);
                OutsCollection.Flush         = FlushCalculator.CalculateRiver(cards);
                OutsCollection.Straight      = StraightCalculator.CalculateRiver(cards);
                OutsCollection.Pair          = PairCalculator.CalculateRiver(cards);
                return(OutsCollection);

            default:
                return(null);
            }
        }