private void SortHand(string hand) { string[] cardArray = hand.Trim().Split(' '); List <Card> cards = new List <Card>(); // add cards to hand for (int i = 0; i < cardArray.Length; i++) { Char[] cardValue = cardArray[i].ToCharArray(); string value = cardValue[0].ToString(); string suit = cardValue[1].ToString(); Card card = new Card(value, suit); cards.Add(card); } // sort hand numercially this.m_sortedHand = cards.OrderBy(x => CardUtilities.ParseCardNumber(x.Number)).ToList(); }
public static List <Card> GetConsecutiveValues(List <Card> input) { var cards = new List <Card>(); var seq = new List <Card>(); foreach (var i in input) { int index = input.IndexOf(i); int nextNumber = index < 4 ? CardUtilities.ParseCardNumber(input[index + 1].Number) : -1; if (CardUtilities.ParseCardNumber(i.Number) + 1 == nextNumber) { cards.Add(i); if (cards.Count == 4) { cards.Add(input[index + 1]); break; } } } return(cards); }
public static Player FindPlayerWithHighestCard(Player player1, Player player2) { Card p1HighestCard = GetHighCard(player1); Card p2HighestCard = GetHighCard(player2); if (CardUtilities.ParseCardNumber(p1HighestCard.Number) > CardUtilities.ParseCardNumber(p2HighestCard.Number)) { return(player1); } else if (CardUtilities.ParseCardNumber(p2HighestCard.Number) > CardUtilities.ParseCardNumber(p1HighestCard.Number)) { return(player2); } else { // if card numbers are equal add that card to the cards to play player1.HandPlayed.Cards.Add(p1HighestCard); player2.HandPlayed.Cards.Add(p2HighestCard); // execute recursive method until highest card is reached Player winner = FindPlayerWithHighestCard(player1, player2); return(winner); } }