我有以下课程城市
public class City {
public static boolean walls[][];
public static int width, height;
public static Human people[];
public static ArrayList<Zombie> zombies = new ArrayList<Zombie>();
创建随机地图(墙用于定义建筑物,人在城市中填充,在城市中创建一个僵尸)。还有类人类和类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;
}
Zombie和Human都包含决定他们在地图上移动的逻辑。因此,他们需要访问城市中的墙壁,人员和僵尸才能导航。该程序运行良好,它们是静态的,但无论何时我创建一个新的城市(重置程序),它冻结,我认为这是因为静态变量。我尝试将它们设为私有,并在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次,但大部分时间它只会进入黑屏并且不会显示任何内容。
答案 0 :(得分:1)
或者:
我会走第一条路。
答案 1 :(得分:0)
使用new关键字创建City实例。
City gotham = new City();
然后,您将能够在非静态上下文中引用gotham
对象。