저는 Java 2D 및 Newtonian 물리학을 사용하는 간단한 게임을 디자인하고 있습니다. 현재 내 주요 "게임 루프는"같은 :OO 방식의 게임 디자인
기업이 현재의 힘이 적용 기반으로 속도와 위치를 조정합니다 자동으로 업데이트하도록 지시do {
for (GameEntity entity : entities) {
entity.update(gameContext);
}
for (Drawable drawable : drawables) {
drawable.draw(graphics2d);
}
} while (gameRunning);
. 그러나 나는 다른 행동을 나타 내기 위해 엔티티가 필요하다. 예 : "나쁜 녀석"이 선수에 의해 발사되는 경우 엔티티는 파괴되어 게임 세계에서 제거되어야합니다.
내 질문 : 객체 지향 방식으로 이것을 수행하는 가장 좋은 방법은 무엇입니까? 지금까지 본 모든 예에서는 게임 루프를 Game
등의 God 클래스에 통합하여 다음 단계를 수행합니다. 충돌 감지, 나쁜 사람 살해, check-if-player-killed, 다시 칠 등 모든 게임 상태 (남은 생명 등)를 캡슐화합니다. 즉, 절차 및 입니다. 모든 로직은 Game 클래스에 있습니다. 누구든지 더 나은 접근법을 추천 할 수 있습니까?
여기에 지금까지 생각했던 옵션입니다
- 는 기업이 게임 상태를 필요한 경우 자체를 제거하거나 업데이트 할 수있는 각 개체에
GameContext
전달 (예 :이 경우 "실행되지"하는 플레이어가 죽임). - 각
GameEntity
을 중앙Game
클래스의 청취자로 등록하고 이벤트 지향 접근 방식을 사용합니다. 예 : 충돌이 발생하면 두 참가자에게 충돌이 발생하여CollisionEvent
이 발생합니다.
가 나는 버그를 발견 한 것 같아요 - (gameRunning)는'당신이 원하는하면서'이다 –