0

我希望我可以在不上传代码的情况下完成这项工作。我在 VS 2012 中有一个 Draw Poker 控制台应用程序,其中包含大约 5 个面向对象的类。是的,这是家庭作业,但我是一名经验丰富的开发人员,正在学习 C#。

我的目标是在每手牌后补充牌库,以便玩家可以从 52 张牌中抽牌,并且可以想象,每次抽牌 1 分就会损失 100 分。如果牌组在几次抽牌后耗尽,这是不可能的,这种情况正在发生。

问题:我被告知要调用 CreateDeck 方法,但如果不调用构造函数,我不知道如何执行此操作。然而,如果我这样做了,一个新的 Deck 对象会被实例化但不会被引用;原始牌组在每次抽签中都会被引用并迅速耗尽。

相关的问题是每次抽牌都会执行多个 DealHands,从而使牌组耗尽的速度倍增。

由于这个系统是分散在五个类中的数百行代码,我不知道如何包含我的代码。虽然我可以,显然包括方法调用,但我被告知构造函数不会自行工作。不知道导师是什么意思。

我可以将压缩系统通过电子邮件发送给感兴趣的一方。

谢谢你。

4

1 回答 1

2

每次开始新游戏时创建一个新牌组:

Deck deck = new Deck();
...
Card card = deck.NextCard();

在 Deck 的构造函数中,有代码设置一个新的 52 张洗牌的牌组。

public class Deck
{
    public Deck ()
    {
        // Create List/Array of shuffled cards here
    }
}

或者

如果你真的想把它作为一个静态方法添加一个 Shuffle() 方法到 Deck

public static void Shuffle()
{
    // Shuffle cards here
}

并打电话

Deck.Shuffle() 

请注意,您在而不是甲板实例上调用 Shuffle,如第一个示例中所示。在这种情况下,您的卡片列表/数组也必须是静态的。

于 2013-08-11T02:42:11.683 回答