1

私は次のクラス City を持っています

public class City {

    public static boolean walls[][];
    public static int width, height;
    public static Human people[];
    public static ArrayList<Zombie> zombies = new ArrayList<Zombie>();

ランダムなマップが作成されます (壁は建物を定義する役割を果たし、都市には人が住み、都市には 1 つのゾンビが作成されます)。人間クラスとゾンビクラスもあります

public class Human {
int x;
int y;
int d;

public Human(int x, int y, int d)
{
    this.x = x;
    this.y = y;
    this.d = d;
}

ゾンビと人間の両方に、マップ上での移動を決定するロジックが含まれています。そのため、移動するにはシティ内の壁、人、ゾンビにアクセスする必要があります。プログラムはそれらが静的であっても問題なく動作しますが、(プログラムをリセットするために) 新しい都市を作成するたびにフリーズし、静的変数が原因であると思います。私はそれらをプライベートにして、City で getter メソッドと setter メソッドを作成し、Human と Zombie からそれらを呼び出してみましたが、非静的メソッドを静的に呼び出すことはできないと常に言われます。例は次のとおりです。

public int peopleLength(){ //in City
    return people.length;
}

City.peopleLength() //in Human

私が間違っていることを教えてくれますか、または正しい方向に押してくれますか? 前もって感謝します。

編集:

if(StdDraw.isKeyPressed(32)){
world = new City(MAX_X,MAX_Y,80, 400);
}

そのため、スペース バーを押すと、マップがクリアされ、再描画されます。2 回か 3 回動作することもありますが、ほとんどの場合、何も表示されずに黒い画面が表示されます。

4

2 に答える 2

1

また:

  • 変数を非静的かつプライベートにしてから、それらの getter および setter メソッドを追加するか、または
  • 変数を初期状態にリセットする reset() という静的メソッドを City に追加します。

私は最初のルートに行きます。

于 2012-10-20T19:30:02.633 に答える
0

new キーワードを使用して City のインスタンスを作成します。

City gotham = new City();

gotham次に、非静的コンテキストでオブジェクトを参照できるようになります。

于 2012-10-20T19:32:04.960 に答える