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); }
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); }
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); }
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); }
public void EvaluateHand() { Debug.Log(HandEvaluator.EvaluateHand(handA)); }
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); } }