2012-09-11 2 views
0

다소 모호한 주제/질문입니다. 미리 사과드립니다.사용자 정의보기 클래스 용 코드 구조

공통 보드 게임의 활동 클래스를 코딩한다고 가정 해 봅시다. 이 클래스는 Game.java (일반적으로 충분히)라는 이름을 가질 수 있으며 Activity를 확장하고 SurfaceView를 확장하는 Board.java (또는 정적 중첩 클래스)라고하는 사용자 정의 View 클래스를 몇 개의 버튼과 텍스트보기로 유지합니다.

이제 모든 드로잉은 기본적으로 SurfaceView 클래스에서 수행해야합니다. 그 이유는 이것이 Android 애플리케이션의 특성이기 때문입니다. 제시되는 질문은이 보드 게임의 조각 (예 : 영웅 및 괴물)이 상대 목록에 저장되어있는 경우, 모범 사례가 이러한 목록을 저장하도록 지시합니까? 즉,이 목록은 Game 클래스에 의해 유지되어야한다고 생각할 것입니다. 이는 기술적으로 진행중인 게임의 전반적인 관점을 포괄하는 것이기 때문에입니다. 그러나 정적 중첩 클래스 (또는 별도의 최상위 수준 클래스) 보드는이 경우 목록에 액세스 할 수 없으므로 그리기 목적으로 각 클래스의 상태가 두 클래스에서 동시에 유지 관리되지 않으면 어떤 상태인지 전혀 알 수 없습니다 이것은 매우 번거 롭다. 거의 똑같이 성가신 일은 Board에서이 목록을 유지하는 것입니다.이 목록은 게임의 목적을 시작하려는 활동으로 할당하는 것 외에도 게임의 목적을 상당히 추상화하는 것처럼 보입니다.

이것이 어떻게 완벽하게 구현 될 수 있는지에 대한 전반적인 합의 또는 의견? 내 자신의 개인적인 생각은 무엇보다도 기억과 정신의 목적을 위해 이사회에서 그것을 유지하는 것에 의지하지만, 명백한 결핍이있는 경우에는 매우 도움이 될 것입니다.

답변

0

내 실험용 SurfaceView 클래스에 Thread의 사용자 지정 구현이 포함되어있어 조금만 실험 해 보았습니다. 모든 물리학 및 그림 처리와 함께이 스레드는 그려지는 객체를 나타내는 내부 클래스를 가지며 캔버스에있는 모든 보이는 항목에 대해 이러한 객체의 목록을 유지합니다.

Google에는 SDK를 다운로드 할 때 샘플이 포함되어 있으며 캔버스에서 그림을 그리는 데는 몇 가지가 있습니다. LunarLander 샘플은이 동작을 구현하는 방법에 대한 아주 좋은 출발점임을 알게되었습니다. SDK 관리자로 샘플을 다운로드하면 android-sdk/samples에서 샘플을 찾을 수 있습니다. 희망이 도움이됩니다.

+0

나는 SurfaceView도 Runnable을 구현 했으므로 실제로 스레드라고 지적 했어야했다. 이 모든 것을 코딩하는 원래의 방식은 설명 된 방식 이었지만 코드가 게임에서 Board 객체에 지속적으로 액세스해야하기 때문에 개발이 번거로워졌습니다. 액티비티와 몇 개의 버튼을위한 자리 표시자를 제외하고 Game 객체 자체의 유용성을 빼앗은 것처럼 느껴집니다. – SeaNick

관련 문제