C#Shuffle Cards Windows Forms

时间:2015-10-19 03:12:01

标签: c# arrays winforms

我正在为学校做作业(Assignment Here)

我目前正试图改变一副纸牌。我使用过Codeplex的PlayCards(对不起,只能有两个链接...)来创建一个卡片组来创建一个卡片组。请帮助,当我点击随机播放按钮时,没有任何反应。您可以在此处查看我的进度,以便更轻松地查看整个代码:Github

public void Shuffle()
{
    PlayingCards.Deck theDeck = new PlayingCards.Deck();

    random = new Random();

    for (int i = 0; i < theDeck.Cards.Count; i++)
    {
        int second = random.Next(NUMBER_OF_CARDS);
        PlayingCards.Card temp = theDeck.Cards[i];
        theDeck.Cards[i] = theDeck.Cards[second];
        theDeck.Cards[second] = temp;
    }
}

1 个答案:

答案 0 :(得分:1)

您正在创建一个PlayingCards.Deck的新实例,将其拖拽,然后在随机播放结束时将其丢弃。

PlayingCards.Deck theDeck = new PlayingCards.Deck();

您需要将呼叫更改为Shuffle以包含PlayingCards.Deck作为参数,因此您应该这样做:

public void Shuffle(PlayingCards.Deck theDeck)
{
    random = new Random();

    for (int i = 0; i < theDeck.Cards.Count; i++)
    {
        int second = random.Next(NUMBER_OF_CARDS);
        PlayingCards.Card
            temp = theDeck.Cards[i];
        theDeck.Cards[i] = theDeck.Cards[second];
        theDeck.Cards[second] = temp;
    }
}

您还应该将new Random()移到此方法之外,因为您可能会发现,如果您尝试紧接着创建两个混洗套牌,那么他们会因为种子{{1}而拥有相同的顺序使用是基于系统时钟。

我查看了将卡添加到卡座中的代码。您应该使用此代码:

Random