OpenGL을 사용하여 게임을 만들면서 느낀것은 객체도 중요하지만 화면을 갱신하는 순서도 상당히 중요하다는 것이다.
객체를 디자인할 때,
게임매니저, 보드, 사람 세가지로 생각했다.
게임매니저는 게임을 진행하고 판단하는 일종의 딜러같은 역할이다.
보드는 카드를 나눠주고 받고 돌려주는 단순한 보드이다.
사람은 게임플레이어로 개인카드, 점수, 상태 등을 갖게 된다.
여기서 한가지 간과한것이 카드라는 객체이다.
카드라는 객체를 게임매니저가 모두 관리할 것인가, 보드와 사람이 소유할 것인가를 정해야하는데,
실세계를 반영하여 보드와 사람이 각각 소유하게 되고, 화면에 그리도록 하였다.
그런데 그리는 순서가 난감하게 되었다.
움직이고 있는 카드가 상대방이나 보드의 카드 아래 깔리는 경우가 발생한다.
게임매니저가 일괄 관리하는 것이 바람직해 보이는 부분이지만, 구조변경없이 해결가능성이 있는 것으로 보고있다.
draw를 2 phase로 나누어 고정과 움직이는 객체를 나눠서 그려면 되지 않을까? 어차피 한 프레임 안에서이니...
현재 class는 총 20개로 구성되어 있다.
[주요 Class]
▪ MainActivity: Android Activity Class를 상속받은 main class
▪ OpenGLRenderer: openGL ES의 receiver 역할을 하는 class, thread로 생성되어 frame당 화면 갱신
▪ GameMenu: Game Menu 제공
▪ GameManager: Game의 진행을 관장하는 class
▪ Player: Player 객체, player 상태, 소유 card 정보 등을 관리
▪ Board: Board 객체, 더미카드 정보, 바닥카드 정보 등을 관리하고 카드를 전달하는 매개체
▪ DrawManager: openGL을 통해 실제로 화면을 draw하는 class
▪ SoundManager: 사운드 재생관련 class
▪ DataManager: 데이터 관리 class
▪ GlobalDifinition: JAVA에서는 define을 사용할 수 없기 때문에 공통 변수를 Interface에 final로 정의
[부가 Class]
▪ UNIT_CARD: Card 객체, Card 월, 종류, 뒤집힌 상태 등의 정보를 보존, UNIT_MOTION 상속
▪ UNIT_MSGBOX: MsgBox 객체, 다양한 Message를 표시, UNIT_MOTION 상속
▪ UNIT_MOTION: 모션을 설정할 수 있는 단위 객체, UNIT 상속
▪ UNIT_TEXT: TEXT를 표시할 수 있는 단위 객체, UNIT 상속
▪ UNIT: 기본단위 객체, 화면에 표시될 수 있는 유일한 class
▪ ST_ANIMATION: 지정된 Animation을 표시하는 class
▪ ST_IMAGE: Image 정보를 저장할 수 있는 구조체 class
▪ ST_COLOR: Color 정보를 저장할 수 있는 구조체 class
▪ ST_RECT: Rect 정보를 저장할 수 있는 구조체 class
▪ ST_POINT: Point 정보를 저장할 수 있는 구조체 class
▪ ViewBox: 획득한 카드를 자세히 볼 수 있는 View Box class, 크기가 동적이기 때문에 MsgBox사용불가
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 맞고 - DrawManager (0) | 2010.12.06 |
---|---|
안드로이드 맞고 - SoundManager (0) | 2010.12.06 |
안드로이드 맞고 - DataManager (0) | 2010.12.06 |
안드로이드 맞고 - rule (0) | 2010.12.06 |
안드로이드 맞고 - intro (0) | 2010.12.06 |