기본 뱀 게임을 만들려고합니다. 나는 매우 기본적인 2D Java Game Engine을 가지고있다. 여기에 모든 Update와 Rendering이 일어나는 방법이있다.메서드에서 "ArrayList"에 객체 생성 및 추상 메서드 사용
나는 ArrayList
의 GameObjects
이고 나는 "update"와 "render"라는 두 가지 추상적 인 메소드를 가지고있다. 또한 질문과 아무 관련이 없지만 대답 할 때 혼란을 줄일 수있는 변수가 있습니다. 아래의 예제 코드와 같이 게임 클래스 내에 객체를 만든 다음 ArrayList
에 추가합니다. 그런 다음 기본적으로 개선 된 for 루프를 사용하여 ArrayList
에있는 모든 개체를 업데이트하고 렌더링합니다. 게임을하는 동안
나는 기본적으로 방법으로 객체를 생성 할는 실행 (매번 "음식"을 생성하는 신체 부위하는 먹습니다). 내가하는 방법 내부의 신체 일부를 만들려면 다음 코드를 사용하는 경우
, 나는 말을 나는 "렌더링"부분에 사용하는 각 변수에 대한 오류가
이 아닌 최종 변수의 몸을 참조 할 수 없습니다 내가 렌더링 방법에 아무것도 넣어 기본적으로 비어있는 모든 것을두고
ArrayList
0123의이 "머리"를 추가하려고하지 않을 경우 다른 방법 또한
GameObject body = new GameObject(DOT_SIZE, DOT_SIZE, food.boardPosX, food.boardPosY) {
@Override
void update() {
//MOVE PART
}
@Override
void render(Graphics g) {
g.fillRect(body.pixelPosX, body.pixelPosY, body.pixelSizeX, body.pixelSizeY);
}
};
에 정의 된 내부 클래스 내부 동일한 방법으로을 입력하면 java.util.ConcurrentModificationException
예외가 발생합니다.
상세 내용 : 애초 (헤드와 식품)으로부터 존재이다
개체;
- 게임 클래스 생성 (그리고 어떠한 방식으로)
- 는
Game
클래스의 생성자 메소드 호출에GameObjects
의ArrayList
에 첨가 하였다.
편집 - 추가 정보 : 나는 몸 결승전을 할 때
- , 나는
The local variable body may not have been initialized
말하는 오류가 발생합니다.
질문 :
- 어떻게 내가 "몸"개체를 정의해야합니다.
- 개체의 ArrayList에 추가 할 위치와 방법은 어디서 어떻게해야합니까?
감사합니다.당신이 마지막으로 변수를 선언 할 때
당신에 전달하는 당신은 할당 시도
: 당신이 제공하는 다음 코드를 기반으로
,난 당신이 같은 싶어 뭔가를 생각 익명 클래스를 작성하고, 새 인스턴스를 본문에 할당 한 다음, 올바르지 않은 오버라이드 된 렌더 메소드에서 방금 작성한 본문 인스턴스를 사용합니다. – haifzhan
"렌더링"및 "업데이트"메소드 만 추상입니다. 그래도 여전히 익명의 클래스라고 할 수 있을까요? 또한 내가 사용하는 부품은 추상이기 때문에 중요하지 않다는 것을 이해합니다. 그렇다면 올바른 방법은 무엇입니까? – Sierox