public void Draw(Deck currentDeck) { var availableCards = Enumerable.Range(0, 52).Where(i => !currentDeck.discards.Contains(i)); int index = rand.Next(0, 51 - currentDeck.discards.Count); BaseCard selectedCard = currentDeck.cards[availableCards.ElementAt(index)]; cards.Add(selectedCard); currentDeck.discards.Add(availableCards.ElementAt(index)); if ("JQK".Contains(selectedCard.Value)) { CardValue += 10; } else if (selectedCard.Value == 'A') { softAce++; CardValue += 11; } else { CardValue += int.Parse(selectedCard.Value.ToString()); } if (CardValue > 21 && softAce > 0) { CardValue -= 10; softAce--; } }
public Deck() { char[] suits = { 'C', 'S', 'H', 'D' }; char[] values = { '1', '2', '3', '4', '5', '6', '7', '8', '9', 'J', 'Q', 'K', 'A' }; for (int i = 0; i < 52; i++) { cards[i] = new BaseCard(); } for (int j = 0; j < suits.Length; j++) { for (int k = 0; k < values.Length; k++) { int currentCard = j * values.Length + k; cards[currentCard].Suit = suits[j]; cards[currentCard].Value = values[k]; } } }