public static EvaluateResult EvaluateHand(CardHand cardHand) { List <ICard> cardsCopy = new List <ICard>(cardHand.CardList); // how many cards of same rank SortedDictionary <CardRank, int> rankCounter = new SortedDictionary <CardRank, int>(); SortByRank(cardsCopy); PopulateRankCounter(cardsCopy, rankCounter); if (IsRoyalFlush(cardsCopy)) { return(new EvaluateResult(PokerHand.RoyalFlush, 800, "Royal Flush!")); } if (IsStraightFlush(cardsCopy)) { return(new EvaluateResult(PokerHand.StraightFlush, 50, "Straigh Flush!")); } if (IsFourOfAKind(rankCounter)) { return(new EvaluateResult(PokerHand.FourOfAKind, 25, "Four Of A Kind!")); } if (IsFullHouse(rankCounter)) { return(new EvaluateResult(PokerHand.FullHouse, 9, "Full House!")); } if (IsFlush(cardsCopy)) { return(new EvaluateResult(PokerHand.Flush, 6, "Flush!")); } if (IsStraight(cardsCopy)) { return(new EvaluateResult(PokerHand.Straight, 4, "Straight!")); } if (IsThreeOfAKind(rankCounter)) { return(new EvaluateResult(PokerHand.ThreeOfAKind, 3, "Three Of A Kind!")); } if (IsTwoPair(rankCounter)) { return(new EvaluateResult(PokerHand.TwoPair, 2, "Two Pair!")); } if (IsJacksOrBetter(cardsCopy)) { return(new EvaluateResult(PokerHand.JacksOrBetter, 1, "Jacks Or Better!")); } return(new EvaluateResult(PokerHand.Lost, 0, "You win NOTHING")); }
public GameScene() { //Initializing variables focusables = new List <IFocusable>(); drawables = new List <IDrawable>(); cardHand = new CardHand() { Position = new Vector2(3, 3) }; foreach (ICard card in cardHand) { focusables.Add(card as IFocusable); drawables.Add(card as IDrawable); } drawables.Add(scoreText); InitButtons(); focusables[0].Focus(true); Draw(); }