我有下面的類城市吸氣二傳手的Java,傳遞私有變量
public class City {
public static boolean walls[][];
public static int width, height;
public static Human people[];
public static ArrayList<Zombie> zombies = new ArrayList<Zombie>();
隨機地圖生成(牆用於限定建築,人們的居住在城市,並在城市中創建一個殭屍)。還有人類和類殭屍
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方法,並從人類和殭屍中調用它們,但它總是說我不能以靜態方式調用非靜態方法。 例子是:
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次,但大多數情況下它只會進入黑屏而不顯示任何內容。
「它凍結起來」並不完全清楚*究竟發生了什麼。讓變量靜態是一個壞主意(它不會影響你創建多少個'City'的實例),但它不應該使任何東西凍結。 –
我強烈建議從Oracle Java教程開始,以便理解這些語言的基本組件。我可以想到你會在這裏使用'static'字段的原因是零。 –