C# 只创建了一副牌的一半

C# 只创建了一副牌的一半,c#,playing-cards,C#,Playing Cards,我正在尝试为最终项目创建21点。这是我目前的代码: public class Card { private string face; private string suit; public Card(string cardFace, string cardSuit) { face = cardFace; suit = cardSuit; } public override string ToString()

我正在尝试为最终项目创建21点。这是我目前的代码:

public class Card
{
    private string face;
    private string suit;

    public Card(string cardFace, string cardSuit)
    {
        face = cardFace;
        suit = cardSuit;
    }

    public override string ToString()
    {
        return face + " of " + suit;
    }
}
然后我要上甲板课:

public class Deck
{
    private Card[] deck;
    private int currentCard;
    private const int NUMBER_OF_CARDS = 52;
    private Random ranNum;

    public Deck()
    {
        string[] faces = { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
        string[] suits = { "Hearts", "Clubs", "Diamonds", "Spades" };         

        deck = new Card[NUMBER_OF_CARDS];
        currentCard = 0;
        ranNum = new Random();
        for (int count = 0; count < deck.Length; count++)
            deck[count] = new Card(faces[count % 13], suits[count / 13]);
    }

    public void Shuffle()
    {
        currentCard = 0;
        for (int first = 0; first < deck.Length; first++)
        {
            int second = ranNum.Next(NUMBER_OF_CARDS);
            Card temp = deck[first];
            deck[first] = deck[second];
            deck[second] = temp;
        }
    }

    public Card DealCard()
    {
        if (currentCard < deck.Length)
            return deck[currentCard++];
        else
            return null;
    }
}
现在,当我按下交易按钮时,它在按下27次后崩溃。我注意到它每隔一张牌就进行一次交易,比如3张牌,5张牌,7张牌,9张牌,等等

我似乎找不到错误!任何帮助都将不胜感激

编辑:以下是我点击超过27次时出现的错误:


事实上,您的错误来自于此。 你在发两张牌,而你只想发一张

它崩溃了,因为你每次点击计数器都会增加2。 27*2>52张卡片

private void buttonDeal_Click(object sender, EventArgs e)
{
    Card card = deck.DealCard();
    deck.DealCard(); // error here. Duplicated line
    labelOutput.Text = card.ToString();
}

你说的撞车是什么意思?是否引发异常?如果是,是什么异常类和什么消息?这就是说,看起来DealCard在buttonDeal_Click中被调用了两次。请使用崩溃时得到的错误输出更新您的问题。BlackJack的卡类应该有一个Suit、Rank(int)和Value。女王仍然是女王(12),但其值为10;此外,
堆栈
对于甲板(鞋)来说比数组更合适。你的洗牌也有问题
private void buttonDeal_Click(object sender, EventArgs e)
{
    Card card = deck.DealCard();
    deck.DealCard(); // error here. Duplicated line
    labelOutput.Text = card.ToString();
}