0

「BombenGenerieren(anzahlMinen)」を 1 回だけ使用したいのですが、毎ラウンド新しい爆弾を生成しないようにするには、どのように記述すればよいですか?

public Game(int anzahlMinen, int xeingabe, int yeingabe)
{
  _minenArray = new int[5, 5];
  _emptyArray = new int[5, 5];
  _boolArray = new bool[5, 5];
  program = new Program();
  zeichnen = new Draw();

  BombenGenerieren(anzahlMinen);
  FillPlayMap();
  Umdreher(yeingabe, xeingabe);
  zeichnen.OpenField(_minenArray, _boolArray);
  //SeenMap();

}
4

2 に答える 2

1

私はコンストラクターであり、一度実行してインスタンス間で共有しGameたいと考えています。BombenGenerieren

あなたがすべきことは、静的にして、その効果が1つ以上の静的フィールドまたはプロパティにあるものBombenGenerierenを保存することです。次に、新しいオブジェクトをインスタンス化する前BombenGenerierenに呼び出すか、次のように静的コンストラクターを作成する必要があります。Game.BombenGenerierenGame

public static Game()
{
    BombenGenerieren(anzahlMinen);
}

静的コンストラクターは、型を初めて使用するときに実行されますGame。パラメータを取らないので、 anzahlMinen は定数でなければならないことに注意してください。それが問題になる場合は、通常の静的メソッドを使用してください。

もう 1 つの方法は、BombenGenerierenメソッドの結果をオブジェクトにカプセル化し、それをGameコンストラクターに渡すことです。コンストラクターは、結果を各新しいクラスに適用できます。

于 2013-11-06T11:26:57.390 に答える
0

基本的に、boolean変数を使用して の実行を追跡しBombenGenerierenます。

boolean bombenGeneriert = false;

public Game(int anzahlMinen, int xeingabe, int yeingabe) {
    //...

    BombenGenerieren(anzahlMinen);

    //...
}

public void BombenGenerieren(int minen) {
    if (!bombenGeneriert) {
        bombenGeneriert = true;

        //the rest of your code in this method
    }
}

これはbombenGeneriert、メソッドが最初に実行されるときに true に設定されます。!bombenGeneriert実行するたびに、どれが に評価されるかをチェックしfalseます。

さらに、コードの再配置を検討する必要があります。Game()複数回呼び出しているのではないかと思われるので、BombenGenerieren()メソッドを の外側のどこかに再配置する必要がありますGame()

クラスコンストラクターGame静的である必要がある場合:Game()bombenGeneriert

static boolean bombenGeneriert = false;
于 2013-11-06T11:05:24.900 に答える