2010-02-17 3 views
4

작은 자바 스윙 2D 게임에서 보드보기를 만드는 가장 좋은 솔루션은 무엇입니까?자바 스윙 작은 2D 게임 :보기를 모델화하는 방법?

  1. 보드에 구성 요소를 사용하고 사용자 정의 페인트와 checker의 각 사각형을 한 번에 페인트합니까?
  2. 보드에 구성 요소를 사용하고 정사각형 전용 작업을 수행하는 자체 페인트 구성 요소로 사각형을 모델링하는 다른 구성 요소를 만듭니다. 레이아웃을 사용하여 각 Square 인스턴스를 보드에 배치하십시오.

나는 이것이 주관적이며 나는 그것에 대해 싸우고 싶지 않다는 것을 알고있다. 나는 내가 어떻게해야 하는지를 깨닫기위한 단서가 필요하다. 나는 옆 프로젝트를 시작했고, 뭔가 잘못되었다는 느낌으로 1)을 사용했습니다.

답변

6

모든 도면 패널/컨테이너로 이동하십시오.

타일 기반 게임을 고려하십시오. 두 번째 솔루션을 사용하면 각 타일이 대상이되고 메모리가 급증하여 게임이 느려질 수 있습니다.

첫 번째 옵션을 사용하면 융통성을 발휘합니다. 원하는 것을 그립니다. 패널 좌표가 있으므로 모든 것이 이와 관련됩니다. 타일 ​​기반 예제를 사용하면 패널의 높이와 너비를 알 수 있습니다. 사각형을 그려서 X 좌표와 Y 좌표를 적절히 늘립니다.

Swing 또는 .NET Winforms와 같은 GUI 프레임 워크는 게임에 필요하지 않은 많은 다른 것들을 가지고 있기 때문에 비용이 많이 듭니다. 질문에 답하기 위해 보드의 모든 검사기에 대해 패널을 사용하는 것이 아니라 옵션 1을 사용하십시오.

첫 번째 방법과 함께 두 번째 방법을 사용하는 좋은 해결책은 Flyweight Design Pattern입니다. 여전히 OO 개체를 사용하게되지만 평소와 비교하면 개체의 일부분 만 차지하게됩니다. 확인 해봐.

3

핑글라스와 마찬가지로, 나는 첫 번째 접근 방식에 의지합니다. 이 tile-based game은 구체적인 예입니다. 대조적으로이 component-based game은 이 JToggleButton입니다. 전자는 다소 복잡하지만 대형 화면에서도 잘 재생됩니다. 후자는 합리적인 게임에 더 간단하면서도 충분합니다. 게임의 기하학 및 논리를 실험하여 선호하는 것을 결정해야 할 수도 있습니다.