私は次のクラス 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 回動作することもありますが、ほとんどの場合、何も表示されずに黒い画面が表示されます。