/*********************************************************************/ private static Enums.FaceValue GetPair(ref List <Card> cards) { Enums.FaceValue _pair = Enums.FaceValue.Two; bool _pairFound = false; for (int _baseCard = 0; _baseCard < cards.Count(); _baseCard++) { for (int _compareTo = _baseCard + 1; _compareTo < cards.Count(); _compareTo++) { if (cards[_baseCard].FaceValue == cards[_compareTo].FaceValue) { _pair = cards[_baseCard].FaceValue; cards.RemoveAt(_compareTo); cards.RemoveAt(_baseCard); _pairFound = true; break; } } if (_pairFound) { break; } } return(_pair); }
private static int CountCardsMatchingFaceValue(Enums.FaceValue faceValueToMatch, List <Card> cards) { int _count = 0; foreach (Card _card in cards) { if (_card.FaceValue == faceValueToMatch) { _count++; } } return(_count); }
internal static Enums.Winner ThreeOfAKind(List <Card> blackCards, List <Card> whiteCards) { // For ThreeOfAKind, compare the matching cards. If there's still no clear winner, compare the rest of the hand // Identify the ThreeOfAKind cards Enums.FaceValue _blackMatchValue = GetThreeOfAKind(ref blackCards); Enums.FaceValue _whiteMatchValue = GetThreeOfAKind(ref whiteCards); // Compare each player's ThreeOfAKind cards if (_blackMatchValue > _whiteMatchValue) { return(Enums.Winner.Black); } else if (_blackMatchValue < _whiteMatchValue) { return(Enums.Winner.White); } // Sort and compare the rest of each player's hand return(SortAndCompareHand(blackCards, whiteCards)); }
internal static Enums.Winner Pair(List <Card> blackCards, List <Card> whiteCards) { // For Pair, compare the pair cards. If there's still no clear winner, compare the rest of the hand // Identify the pair Enums.FaceValue _blackPairValue = GetPair(ref blackCards); Enums.FaceValue _whitePairValue = GetPair(ref whiteCards); // Compare each player's pair if (_blackPairValue > _whitePairValue) { return(Enums.Winner.Black); } else if (_blackPairValue < _whitePairValue) { return(Enums.Winner.White); } // Sort and compare the rest of each player's hand return(SortAndCompareHand(blackCards, whiteCards)); }
private static Enums.FaceValue GetThreeOfAKind(ref List <Card> cards) { Enums.FaceValue _match = Enums.FaceValue.Two; bool _matchFound = false; for (int _baseCard = 0; _baseCard < cards.Count(); _baseCard++) { for (int _compareTo1 = _baseCard + 1; _compareTo1 < cards.Count(); _compareTo1++) { if (cards[_baseCard].FaceValue == cards[_compareTo1].FaceValue) { for (int _compareTo2 = _compareTo1 + 1; _compareTo2 < cards.Count(); _compareTo2++) { if (cards[_compareTo1].FaceValue == cards[_compareTo2].FaceValue) { _match = cards[_baseCard].FaceValue; cards.RemoveAt(_compareTo2); cards.RemoveAt(_compareTo1); cards.RemoveAt(_baseCard); _matchFound = true; break; } } } if (_matchFound) { break; } } if (_matchFound) { break; } } return(_match); }
internal static Enums.Winner FourOfAKind(List <Card> blackCards, List <Card> whiteCards) { // For FourOfAKind, compare the matching cards // Identify the ThreeOfAKind cards Enums.FaceValue _blackMatchValue = GetFourOfAKind(ref blackCards); Enums.FaceValue _whiteMatchValue = GetFourOfAKind(ref whiteCards); // Compare each player's ThreeOfAKind cards if (_blackMatchValue > _whiteMatchValue) { return(Enums.Winner.Black); } else if (_blackMatchValue < _whiteMatchValue) { return(Enums.Winner.White); } else { return(Enums.Winner.Tie); } }
internal static Enums.Winner FullHouse(List <Card> blackCards, List <Card> whiteCards) { // For FullHouse, compare the ThreeOfAKind cards. If there's still no clear winner, compare the Pair cards // Identify the ThreeOfAKind cards Enums.FaceValue _blackMatchValue = GetThreeOfAKind(ref blackCards); Enums.FaceValue _whiteMatchValue = GetThreeOfAKind(ref whiteCards); // Compare each player's ThreeOfAKind cards if (_blackMatchValue > _whiteMatchValue) { return(Enums.Winner.Black); } else if (_blackMatchValue < _whiteMatchValue) { return(Enums.Winner.White); } // Identify the pair Enums.FaceValue _blackPairValue = GetPair(ref blackCards); Enums.FaceValue _whitePairValue = GetPair(ref whiteCards); // Compare each player's pair if (_blackPairValue > _whitePairValue) { return(Enums.Winner.Black); } else if (_blackPairValue < _whitePairValue) { return(Enums.Winner.White); } else { return(Enums.Winner.Tie); } }
/// <summary> /// Constructor to initialize a new card /// </summary> /// <param name="suit">card suit</param> /// <param name="faceValue">card ID</param> public Card(Enums.Suit suit, Enums.FaceValue faceValue) { _suit = suit; _faceValue = faceValue; }