/// <summary> /// Poker Game Constructor /// </summary> public PokerGame() { base.Name = "Poker"; this._players = new List <PokerPlayer>(); this._winners = new List <PokerPlayer>(); this._winningHandCategory = Enums.HandCategory.None; this._deck = new Deck(); this.Reset(); }
/// <summary> /// Routing of winner(s) evaluation /// </summary> /// <param name="players"></param> /// <param name="winningHandCategory"></param> /// <returns></returns> public static List <PokerPlayer> EvaluateWinners(List <PokerPlayer> players, Enums.HandCategory winningHandCategory) { var results = new List <PokerPlayer>(); switch (winningHandCategory) { case Enums.HandCategory.RoyalFlush: results = EvaluateRoyalFlushWinners(players); break; case Enums.HandCategory.StraightFlush: results = EvaluateStraightFlushWinners(players); break; case Enums.HandCategory.FourOfAKind: results = EvaluateFourOfAKindWinners(players); break; case Enums.HandCategory.FullHouse: results = EvaluateFullHouseWinners(players); break; case Enums.HandCategory.Flush: results = EvaluateFlushWinners(players); break; case Enums.HandCategory.Straight: results = EvaluateStraightWinners(players); break; case Enums.HandCategory.ThreeOfAKind: results = EvaluateThreeOfAKindWinners(players); break; case Enums.HandCategory.TwoPair: results = EvaluateTwoPairWinners(players); break; case Enums.HandCategory.OnePair: results = EvaluateOnePairWinners(players); break; case Enums.HandCategory.HighCard: results = EvaluateHighCardWinners(players); break; case Enums.HandCategory.None: default: break; } return(results); }
/// <summary> /// List all players within the winning hand category /// </summary> /// <param name="players"></param> /// <param name="winningHandCategory"></param> /// <returns></returns> public static List <PokerPlayer> GetAllPlayersWithWinningHandCategory(List <PokerPlayer> players, Enums.HandCategory winningHandCategory) { var results = new List <PokerPlayer>(); foreach (var player in players) { if (player.Hand.HandCategory.Equals(winningHandCategory)) { results.Add(player); } } return(results); }
/// <summary> /// Evaluate winner based on hand category /// </summary> private void EvaluateWinners() { this._winningHandCategory = HandHelper.GetWinningHandCategory(this._players); this._winners = HandHelper.EvaluateWinners(this._players, this._winningHandCategory); }