나는 다음 클래스 도시 랜덤 맵 생성게터 세터 자바, 전달 개인 변수
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;
}
Zombie와 Human 모두 맵 주위의 움직임을 결정하는 논리가 있습니다. 따라서 도시의 벽, 사람 및 좀비에 액세스해야 액세스 할 수 있습니다. 이 프로그램은 정적 인 상태에서 정상적으로 실행되지만 프로그램을 재설정 할 때마다 새로운 도시를 만들 때마다 정지되고 정적 변수로 인해 가정합니다. 나는 그것들을 비공개로 만들고,시에서 getter와 setter 메소드를 생성하고 Human and 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 번 작동하지만 대부분 검은 색 화면으로 바뀌고 아무 것도 표시하지 않습니다.
"그것이 얼어 버린다"는 것은 정확히 어떤 일이 일어 났는지에 대한 명확한 설명이 아닙니다. 변수를 정적으로 유지하는 것은 나쁜 생각입니다. (여러분이 만드는'City '의 인스턴스가 얼마나 많은지는 중요하지 않습니다.)하지만 아무것도 고정시키지 않아야합니다. –
이 기본 언어 구성 요소를 이해하기 위해 Oracle Java 자습서부터 시작하는 것이 좋습니다. 여기에'static' 필드를 사용하는 이유가 정확히 무엇인지 생각할 수 있습니다. –