public HandController() { combo = new Combo(Combos.High, 0); AvailableCards = new Dictionary<int, List<CardBasic>>(); FlushCheck = new FlushChecker(Suits.Spikes, 0); WinningCards = new List<CardBasic>(); }
public void WildFlushFound() { var checker = new FlushChecker(); var value = checker.HandValue(_hands[7]); value.Should().Be(5.07m); }
public void FlushFound() { var checker = new FlushChecker(); var value = checker.HandValue(_hands[5]); value.Should().Be(5.1413120605m); }
/// <summary> /// Sets the Chain of responsibility for the combination checkers /// </summary> protected virtual void SetupCheckers() { RoyalStraightFlushChecker royalStraightFlushChecker = new RoyalStraightFlushChecker(); StraightFlushChecker straightFlushChecker = new StraightFlushChecker(); FourOfKindChecker fourOfKindChecker = new FourOfKindChecker(); FullHouseChecker fullHouseChecker = new FullHouseChecker(); FlushChecker flushChecker = new FlushChecker(); StraightChecker straightChecker = new StraightChecker(); ThreeOfKindChecker threeOfKindChecker = new ThreeOfKindChecker(); TwoPairsChecker twoPairsChecker = new TwoPairsChecker(); OnePairChecker onePairChecker = new OnePairChecker(); TopCardChecker topCardChecker = new TopCardChecker(); royalStraightFlushChecker.SetNext(straightFlushChecker); straightFlushChecker.SetNext(fourOfKindChecker); fourOfKindChecker.SetNext(fullHouseChecker); fullHouseChecker.SetNext(flushChecker); flushChecker.SetNext(straightChecker); straightChecker.SetNext(threeOfKindChecker); threeOfKindChecker.SetNext(twoPairsChecker); twoPairsChecker.SetNext(onePairChecker); onePairChecker.SetNext(topCardChecker); _firstChecker = royalStraightFlushChecker; }
public void FlushNotFound() { var checker = new FlushChecker(); for (var i = 0; i < 9; i++) { if (i != 5 && i != 8 && i != 9) { var value = checker.HandValue(_hands[i]); value.Should().Be(0, _hands[i].Select(c => c.ToString()).Aggregate((a, b) => a + " " + b)); } } }
public void FlushNotFound() { var checker = new FlushChecker(); for (var i = 0; i < _hands.Count; i++) { if (!new[] { 5, 7, 8, 9, 11, 12, 13 }.Contains(i)) { var value = checker.HandValue(_hands[i]); value.Should().Be(0, _hands[i].Select(c => c.ToString()).Aggregate((a, b) => a + " " + b)); } } }
static void Main() { PokerHand straightFlush = new PokerHand(new List <Card>() { new Card(Suit.Clubs, Face.Ace), new Card(Suit.Clubs, Face.Ten), new Card(Suit.Clubs, Face.King), new Card(Suit.Clubs, Face.Jack), new Card(Suit.Clubs, Face.Queen), }); PokerHand straight = new PokerHand(new List <Card>() { new Card(Suit.Spades, Face.Ace), new Card(Suit.Clubs, Face.Ten), new Card(Suit.Clubs, Face.King), new Card(Suit.Diamonds, Face.Jack), new Card(Suit.Clubs, Face.Queen), }); PokerHand flush = new PokerHand(new List <Card>() { new Card(Suit.Clubs, Face.Ace), new Card(Suit.Clubs, Face.Ten), new Card(Suit.Clubs, Face.Four), new Card(Suit.Clubs, Face.Six), new Card(Suit.Clubs, Face.Queen), }); PokerHand nothing = new PokerHand(new List <Card>() { new Card(Suit.Spades, Face.Ace), new Card(Suit.Spades, Face.One), new Card(Suit.Clubs, Face.Four), new Card(Suit.Clubs, Face.Six), new Card(Suit.Diamonds, Face.Queen), }); StraightFlushChecker straightFlushChecker = new StraightFlushChecker(); StraightChecker straightChecker = new StraightChecker(); FlushChecker flushCkecker = new FlushChecker(); straightChecker.SetChecker(flushCkecker); straightFlushChecker.SetChecker(straightChecker); straightFlushChecker.CheckHand(straightFlush); straightFlushChecker.CheckHand(straight); straightFlushChecker.CheckHand(flush); straightFlushChecker.CheckHand(nothing); }
public void CheckSuit() { Dictionary<Suits, int> suitCount = new Dictionary<Suits, int>(); foreach (var listOfCardScript in AvailableCards.Values) { foreach (var card in listOfCardScript) { if (suitCount.ContainsKey(card.Suit)) suitCount[card.Suit] += 1; else suitCount.Add(card.Suit, 1); } } foreach (var suit in suitCount) { if (suit.Value > FlushCheck.Amount) FlushCheck = new FlushChecker(suit.Key, suit.Value);//new Tuple<Suits, int>(suit.Key, suit.Value)); } }
public static PokerCombinationChecker GetChecker() { var highCard = new HighCardChecker(); var onePair = new OnePairChecker() .SuccessiveHand(highCard); var twoPair = new TwoPairChecker() .SuccessiveHand(onePair); var threeOfAKind = new ThreeOfAKindChecker() .SuccessiveHand(twoPair); var straight = new StraightChecker() .SuccessiveHand(threeOfAKind); var flush = new FlushChecker() .SuccessiveHand(straight); var fullHouse = new FullHouseChecker() .SuccessiveHand(flush); var fourOfAKind = new FourOfAKindChecker() .SuccessiveHand(fullHouse); var straightFlush = new StraightFlushChecker() .SuccessiveHand(fourOfAKind); return(straightFlush); }
static PokerCombinationChecker GetChecker() { var highCard = new HighCardChecker(); var onePair = new OnePairChecker() .SuccessiveHand(highCard); var twoPair = new TwoPairChecker() .SuccessiveHand(onePair); var threeOfAKind = new ThreeOfAKindChecker() .SuccessiveHand(twoPair); var straight = new StraightChecker() .SuccessiveHand(threeOfAKind); var flush = new FlushChecker() .SuccessiveHand(straight); var fullHouse = new FullHouseChecker() .SuccessiveHand(flush); var fourOfAKind = new FourOfAKindChecker() .SuccessiveHand(fullHouse); var straightFlush = new StraightFlushChecker() .SuccessiveHand(fourOfAKind); return straightFlush; }
public Combo CheckStraightFlush(Dictionary<int,List<CardBasicScript>> combination,FlushChecker flushChecker) { var flush = new Combo(Combos.Flush, HighFlushRank(combination,flushChecker)); if (ComboName!=Combos.Straight) return flush; for (int i =0; i<5; i++) { var sameSuit = false; foreach (var cardScript in combination[Strength-i]) { if (cardScript.Card.Suit == flushChecker.Suit) { sameSuit = true; break; } } if (!sameSuit) return flush; } if (Strength == 14) return new Combo(Combos.RoyalFlush,Strength); return new Combo(Combos.StraightFlush,Strength); }
public int HighFlushRank(Dictionary<int, List<CardBasic>> combination, FlushChecker flushChecker) { return combination.OrderByDescending(z => z.Key) .Where(z => z.Value.Where(d => d.Suit == flushChecker.Suit) != null) .Select(z => z.Value[0].Rank) .ElementAt(0); }