0

コードをアップロードせずにこれが機能することを願っています。VS 2012 には、オブジェクト指向の約 5 つのクラスを持つ Draw Poker コンソール アプリケーションがあります。はい、宿題ですが、私は C# を学習している経験豊富な開発者です。

私の目的は、プレイヤーが 52 枚のカードからカードを引き、1 回のドローで 1 ポイントずつ 100 ポイントを失う可能性があるように、毎ハンドの後にデッキを補充することです。数回ドローした後にデッキが枯渇している場合、これは不可能です。

問題: CreateDeck メソッドを呼び出すように言われましたが、コンストラクターを呼び出さずに呼び出す方法がわかりません。しかし、そうすると、新しい Deck オブジェクトがインスタンス化されますが、参照されません。元のデッキが参照され、ドローごとに急速に使い果たされます。

関連する問題は、ドローごとに複数の DealHands が実行されるため、デッキが枯渇するペースが倍増することです。

このシステムは数百行のコードが 5 つのクラスに分散しているため、自分のコードを含める方法がわかりません。明らかにメソッド呼び出しを含めることはできましたが、コンストラクター自体は機能しないと言われました。講師の意図がよくわからない。

圧縮されたシステムを関係者に電子メールで送信できます。

ありがとうございました。

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 に答える