Example #1
0
    private List <CardData> GetFiver(List <CardData> gameHand)
    {
        HandType handType = HandEvaluator.EvaluateHand(gameHand);

        if (handType < HandType.Straight)
        {
            return(null);
        }

        if (handType == HandType.Straight)
        {
            return(GetStraight(gameHand) ?? GetFlush(gameHand) ?? GetFullHouse(gameHand) ?? GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
        }
        else if (handType == HandType.Flush)
        {
            return(GetFlush(gameHand) ?? GetFullHouse(gameHand) ?? GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
        }
        else if (handType == HandType.FullHouse)
        {
            return(GetFullHouse(gameHand) ?? GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
        }
        else if (handType == HandType.FourOfAKind)
        {
            return(GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
        }
        else if (handType == HandType.StraightFlush)
        {
            return(GetStraightFlush(gameHand));
        }

        return(null);
    }
Example #2
0
        public void Nothing()
        {
            Console.WriteLine("********START TEST Nothing()********");

            Card[] sortedPlayerHand;
            Card[] playerHand;

            Check my = new Check();

            playerHand       = new Card[7];
            sortedPlayerHand = new Card[7];


            playerHand[2] = new Card {
                MySuit = Card.SUIT.DIAMONDS, MyValue = Card.VALUE.JACK, count = 0
            };
            playerHand[3] = new Card {
                MySuit = Card.SUIT.HEARTS, MyValue = Card.VALUE.TEN, count = 0
            };
            playerHand[4] = new Card {
                MySuit = Card.SUIT.HEARTS, MyValue = Card.VALUE.NINE, count = 0
            };
            playerHand[5] = new Card {
                MySuit = Card.SUIT.CLUBS, MyValue = Card.VALUE.TWO, count = 0
            };
            playerHand[6] = new Card {
                MySuit = Card.SUIT.SPADES, MyValue = Card.VALUE.THREE, count = 0
            };

            playerHand[0] = new Card {
                MySuit = Card.SUIT.HEARTS, MyValue = Card.VALUE.ACE, count = 0
            };
            playerHand[1] = new Card {
                MySuit = Card.SUIT.HEARTS, MyValue = Card.VALUE.QUEEN, count = 0
            };

            sortedPlayerHand = Array.FindAll(playerHand, element => element != null);
            Array.Sort(sortedPlayerHand, delegate(Card MyValue, Card secVal) { return(MyValue.MyValue.CompareTo(secVal.MyValue)); });

            for (int i = 0; i < sortedPlayerHand.Length;)
            {
                sortedPlayerHand[i].count = Array.FindAll(sortedPlayerHand, element => element.MyValue == sortedPlayerHand[i].MyValue).Length;
                i = i + sortedPlayerHand[i].count;
            }
            HandEvaluator playerHandEvaluator = new HandEvaluator(sortedPlayerHand);
            Hand          playerHandRez       = playerHandEvaluator.EvaluateHand();

            Assert.AreEqual(Hand.Nothing, playerHandRez);

            Console.WriteLine("********SUCCESS TEST Nothing()********");
        }
        public void Test_CheckFullHouseHand_ShouldPass()
        {
            var card1 = new SimpleCard(CardType.Ace, Suit.Clubs);
            var card2 = new SimpleCard(CardType.Ace, Suit.Diamonds);
            var card3 = new SimpleCard(CardType.Ace, Suit.Hearts);
            var card4 = new SimpleCard(CardType.Nine, Suit.Spades);
            var card5 = new SimpleCard(CardType.Nine, Suit.Diamonds);
            var hand = new Hand();
            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);
            var sortedHand = hand.Sort();
            var firstHand = new HandEvaluator(sortedHand);
            var result = firstHand.EvaluateHand();

            Assert.AreEqual(HandStrength.FullHouse, result);
        }
        public void Test_CheckStraightHand_ShouldPass()
        {
            var card1 = new SimpleCard(CardType.Two, Suit.Clubs);
            var card2 = new SimpleCard(CardType.Three, Suit.Diamonds);
            var card3 = new SimpleCard(CardType.Four, Suit.Hearts);
            var card4 = new SimpleCard(CardType.Five, Suit.Spades);
            var card5 = new SimpleCard(CardType.Six, Suit.Spades);
            var hand = new Hand();
            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);
            var sortedHand = hand.Sort();
            var firstHand = new HandEvaluator(sortedHand);
            var result = firstHand.EvaluateHand();

            Assert.AreEqual(HandStrength.Straight, result);
        }
        public void Test_CheckTwoPairsHand_ShouldPass()
        {
            var card1 = new SimpleCard(CardType.Ace, Suit.Clubs);
            var card2 = new SimpleCard(CardType.Ace, Suit.Diamonds);
            var card3 = new SimpleCard(CardType.King, Suit.Hearts);
            var card4 = new SimpleCard(CardType.Nine, Suit.Spades);
            var card5 = new SimpleCard(CardType.Nine, Suit.Diamonds);
            var hand  = new Hand();

            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);
            var sortedHand = hand.Sort();
            var firstHand  = new HandEvaluator(sortedHand);
            var result     = firstHand.EvaluateHand();

            Assert.AreEqual(HandStrength.TwoPairs, result);
        }
        public void Test_CheckStraightHand_ShouldPass()
        {
            var card1 = new SimpleCard(CardType.Two, Suit.Clubs);
            var card2 = new SimpleCard(CardType.Three, Suit.Diamonds);
            var card3 = new SimpleCard(CardType.Four, Suit.Hearts);
            var card4 = new SimpleCard(CardType.Five, Suit.Spades);
            var card5 = new SimpleCard(CardType.Six, Suit.Spades);
            var hand  = new Hand();

            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);
            var sortedHand = hand.Sort();
            var firstHand  = new HandEvaluator(sortedHand);
            var result     = firstHand.EvaluateHand();

            Assert.AreEqual(HandStrength.Straight, result);
        }
Example #7
0
    private List <CardData> GetFiver(List <CardData> gameHand, bool playStrong = false)
    {
        HandType handType = HandEvaluator.EvaluateHand(gameHand);

        if (handType < HandType.Straight)
        {
            return(null);
        }

        //List<Action> actions = new List<Action>();

        if (playStrong)
        {
            return(GetStraightFlush(gameHand) ?? GetFourKind(gameHand) ?? GetFullHouse(gameHand) ?? GetFlush(gameHand) ?? GetStraight(gameHand));
        }
        else
        {
            if (handType == HandType.Straight)
            {
                return(GetStraight(gameHand) ?? GetFlush(gameHand) ?? GetFullHouse(gameHand) ?? GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
            }
            else if (handType == HandType.Flush)
            {
                return(GetFlush(gameHand) ?? GetFullHouse(gameHand) ?? GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
            }
            else if (handType == HandType.FullHouse)
            {
                return(GetFullHouse(gameHand) ?? GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
            }
            else if (handType == HandType.FourOfAKind)
            {
                return(GetFourKind(gameHand) ?? GetStraightFlush(gameHand));
            }
            else if (handType == HandType.StraightFlush)
            {
                return(GetStraightFlush(gameHand));
            }
        }

        return(null);
    }
        public void Test_CheckHighCardHand_ShouldPass()
        {
            var card1 = new SimpleCard(CardType.Three, Suit.Clubs);
            var card2 = new SimpleCard(CardType.Two, Suit.Diamonds);
            var card3 = new SimpleCard(CardType.Seven, Suit.Hearts);
            var card4 = new SimpleCard(CardType.Five, Suit.Spades);
            var card5 = new SimpleCard(CardType.Nine, Suit.Diamonds);
            var hand  = new Hand();

            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);

            var sortedHand = hand.Sort();
            var firstHand  = new HandEvaluator(sortedHand);

            firstHand.EvaluateHand();

            bool highCard = firstHand.HandValue.HighCard.Equals((int)card5.Type);

            Assert.IsTrue(highCard);
        }
Example #9
0
    protected virtual HandType PlayHand(bool newRound, bool requireLowestCard)
    {
        HandType handType = HandEvaluator.EvaluateHand(hand.PlayedHandData);

        if (handType == HandType.Invalid) //if hand doesnt make sense
        {
            return(HandType.Invalid);
        }

        if (requireLowestCard)
        {
            if (!hand.PlayedHandData.ContainsLowestCard(gameManager.lowestCardValue))
            {
                return(HandType.Invalid);
            }
        }

        if (!newRound)
        {
            if (gameManager.currentPlayedHand.Count != hand.PlayedHandData.Count)
            {
                return(HandType.Invalid);
            }
        }

        List <CardData> gameHand = gameManager.currentPlayedHand.ToDynList();

        if (!HandEvaluator.CompareHand(hand.PlayedHandData, gameHand)) //if hand lose
        {
            return(HandType.Invalid);
        }

        hand.RemainingCards -= hand.PlayedHandData.Count;

        return(handType);
    }
Example #10
0
 public void EvaluateHand()
 {
     Debug.Log(HandEvaluator.EvaluateHand(handA));
 }
Example #11
0
    protected override HandType PlayHand(bool newRound, bool requireLowestCard)
    {
        HandType handType = HandType.Invalid;

        List <CardData> tempHand = new List <CardData>();

        if (requireLowestCard)
        {
            Debug.Log(playerName + " is playing in first round");

            tempHand = BotFirstPlays();

            if (tempHand != null)
            {
                handType = HandEvaluator.EvaluateHand(tempHand);

                var msg = new ClientPlayHandMsg();
                msg.cardDatas      = tempHand.ToArray();
                msg.handType       = handType;
                msg.remainingCards = hand.RemainingCards;
                msg.playingSet     = tempHand.Count == 5; //if hand is a set
                client.Send(ClientPlayHandMsg.msgID, msg);

                return(HandEvaluator.EvaluateHand(tempHand));
            }
        }

        if (newRound)
        {
            Debug.Log(playerName + " is first player in new round");

            tempHand = BotPlays();

            if (tempHand != null)
            {
                hand.RemainingCards -= tempHand.Count;

                handType = HandEvaluator.EvaluateHand(tempHand);

                var msg = new ClientPlayHandMsg();
                msg.cardDatas      = tempHand.ToArray();
                msg.handType       = handType;
                msg.remainingCards = hand.RemainingCards;
                msg.playingSet     = tempHand.Count == 5; //if hand is a set
                client.Send(ClientPlayHandMsg.msgID, msg);

                return(handType);
            }
        }

        List <CardData> gameHand = gameManager.currentPlayedHand.ToDynList();

        int gameHandCount = gameHand.Count;

        if (hand.cardDatas.Count < gameHandCount)
        {
            //return invalid if amount of cards less than played hand in game
            return(HandType.Invalid);
        }

        tempHand = BotCounterPlays(gameHandCount);

        if (tempHand == null) //if bot has valid hand to play
        {
            //bot pass
            return(HandType.Invalid);
        }
        else
        {
            //send hand to server
            hand.RemainingCards -= tempHand.Count;

            handType = HandEvaluator.EvaluateHand(tempHand);

            var msg = new ClientPlayHandMsg();
            msg.cardDatas      = tempHand.ToArray();
            msg.handType       = handType;
            msg.remainingCards = hand.RemainingCards;
            msg.playingSet     = tempHand.Count == 5; //if hand is a set
            client.Send(ClientPlayHandMsg.msgID, msg);

            return(handType);
        }
    }
        public void Test_CheckHighCardHand_ShouldPass()
        {
            var card1 = new SimpleCard(CardType.Three, Suit.Clubs);
            var card2 = new SimpleCard(CardType.Two, Suit.Diamonds);
            var card3 = new SimpleCard(CardType.Seven, Suit.Hearts);
            var card4 = new SimpleCard(CardType.Five, Suit.Spades);
            var card5 = new SimpleCard(CardType.Nine, Suit.Diamonds);
            var hand = new Hand();

            hand.Add(card1);
            hand.Add(card2);
            hand.Add(card3);
            hand.Add(card4);
            hand.Add(card5);

            var sortedHand = hand.Sort();
            var firstHand = new HandEvaluator(sortedHand);
            firstHand.EvaluateHand();

            bool highCard = firstHand.HandValue.HighCard.Equals((int)card5.Type);

            Assert.IsTrue(highCard);
        }