protected void SumCardSequence(CardSumSequence currentSequence, int currentIndex, int maxNumCards, float targetValue) { CardSumSequence cardSumSequence; if (currentSequence.Size () > maxNumCards) { return; } else if (currentSequence.Sum() >= targetValue) { cardSumSequenceList.Add (currentSequence); } else { for (int i = currentIndex + 1; i < playerHand.CardList ().Count; i++) { if (!lockedCardExists || lockedCard != playerHand.CardAtIndex (i)) { cardSumSequence = new CardSumSequence(cardGame); foreach(Card card in currentSequence.List ()) { cardSumSequence.AddCard (card); } cardSumSequence.AddCard (playerHand.CardAtIndex(i)); SumCardSequence (cardSumSequence, i, maxNumCards, targetValue); } } } }
protected List<Card> FindCardsToReachTargetValue(int maxNumCards, float targetValue) { CardSumSequence cardSumSequence; cardSumSequenceList.Clear (); for (int i = 0; i < playerHand.CardList ().Count; i++) { if (!lockedCardExists || lockedCard != playerHand.CardAtIndex (i)) { cardSumSequence = new CardSumSequence (cardGame); cardSumSequence.AddCard (playerHand.CardAtIndex (i)); SumCardSequence (cardSumSequence, i, maxNumCards, targetValue); } } return SelectCardSequenceFromList(); }