public void UpdateBestPossibleLabel(Pokerscore score) { Dispatcher.BeginInvoke((Action) delegate { BestPossibleLabel.Text = score.ToNiceString(); }); }
public void UpdateCurrentScoreLabel(Pokerscore score) { Dispatcher.BeginInvoke((Action) delegate { YourScoreLabel.Text = score.ToNiceString(); }); }
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); }
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); } }
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); } }
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); } }
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); } }