2009-05-23 10 views
0

자바에서 공정한 크기의 병원 시뮬레이션 게임을 개발 중입니다. 지금, 내 고통 방법은 조금 커 보이기 시작하고 있으며, 다른 섹션으로 나누는 방법이 필요합니다 ... 아이디어가 있지만 이것이 최선의 방법인지 잘 모르겠습니다. 잔디를 그리기 시작한 다음 병원 건물을 시작한 다음 건물을 시작한 다음 사람을 작성한 다음 건물을 미리 볼 수 있습니다. 풀과 병원 건물은 바뀌지 않을 것입니다. 그래서 이걸 한 번만 페인트하면됩니다. 건물 자체는 새 건물이 만들어 질 때만 자주 변경되지 않습니다.어떻게 자바에서 페인트 스윙 메서드를 나눌 수 있습니까?

부울 값을 사용하여 다시 그리기가 필요한 섹션을 결정할 수 있습니까? 이상적으로, 이드는 페인트 방법을 분리하고 필요할 때 각각을 호출 할 수 있기를 좋아하지만 실제로 분할하는 방법을 잘 모르겠습니다.

저는 아직 Java에 익숙하지 않으며 이동 중에도 배우고 있습니다.

미리 감사드립니다.

rel

+0

아 병원 응용 프로그램에서 _pain_ 방법을 사용하는 아이러니. (미안, 저항 할 수 없었다!) – nokul

답변

3

또 다른 아이디어는 화면에 그려야하는 모든 항목에 대해 수퍼 클래스 또는 인터페이스를 만드는 것입니다. 이 클래스 ScreenObject를 호출 할 수있게합니다. 그런 다음 ScreenObject 클래스에 지정된 draw (Graphics2d g) 메서드를 가질 수 있습니다. 다음으로 그려야 할 각 객체는 draw() 메서드를 구현하며 그리기 자체에만 관심이 있습니다. 이 그리기 메서드를 전혀 실행해야하는지 여부를 결정하는 변수를 만드는 것도 고려할 수 있습니다.

화면을 그리는 기본 클래스에서 ArrayList의 모든 ScreenObject에 대한 참조를 가질 수 있으며 paint() 메소드는 각 객체에서이 호출 draw()를 반복합니다.

1

씬이 타일로 분할되어 있다고 가정합니다. 부울 배열을 유지하는 것은 다음 업데이트에서 어떤 타일을 다시 그려야 하는지를 추적하는 좋은 방법입니다. LinkedList는 일부 상황에서 조금 더 잘 수행 될 수 있습니다. (게임 타일을 다시 그리는 데 사용할 수있는 톤이 있고 각 이웃을 확인할 필요가있는 게임 라이프 시뮬레이션을 생각 중입니다.

코드를 보지 못해서 귀하의 페인트 방법을 분할에 매우 구체적인 조언을 제공합니다. 필자는 스프라이트 애니메이션에서 각 스프라이트 객체는 일반적으로 주 그래픽 객체 (또는 더 많은 버퍼 일 가능성이 있음)를 매개 변수로 사용하는 자체 그리기 메소드를 가지고 있다고 말할 수 있습니다. 스프라이트는 자신의 이미지와 위치를 알아야하기 때문에 메인 이미지에 자신을 그릴 수 있습니다. 페인트 방법은 다시 그려야하는 스프라이트 목록을 반복하여 그리는 방법을 호출 할 수 있습니다.

자세한 내용은 Killer Game Programming in Java을 참조하십시오.

+0

그것 그것. 나는 그것을 거의 할 예정이었다. 그러나 신원은 잊었다! 올바르게 가정하십시오. 각 스프라이트 객체는 실제로 자체 paint 메소드를 가져야합니다. 나는 아직 스프라이트와 애니메이션을 사용하는 방법을 잘 모르겠다. 단순한 스윙 그래픽과 간단한 동작 애니메이션으로 게임의 기본을 지키기 위해 노력하고있다. 책은 굉장해 보인다! :) – Relequestual

0

글쎄, 프로그래밍에 전문가는 아니지만 필자의 페인트 방법을 나눌 필요가있다. 필자는 항상 Graphics 객체를 사용하고 페인트에서 호출하는 새로운 방법을 만들었다. 필자는 코드를 체계적으로 유지하는 데 항상 도움이되었지만 당신이 일하는 것 같은 큰 프로젝트를 한 번도 해본 적이 없어서 당신의 상황에 맞지 않을 수도 있습니다.

관련 문제