모바일 맞고 게임 강좌2
DevSource/맞고 2012. 12. 27. 18:49 |맞고 초기화 및 간단한 로고 출력 코드 작성
Mobile 맞고 게임 제작 강좌 두 번째 시간입니다.
오늘은 맞고 게임의 초기화 부분과 로고 출력 기능만이 있는 기본 프로그램을 만들어 보도록 하겠습니다.
먼저, 소스를 보도록 하지요.
[# twogo1p.Midlet.java]
package twogo1p;
import javax.microedition.lcdui.*; import common.State; public class Midlet extends twogo.Midlet private MainMenu mainMenu; // 메인 메뉴. protected Display display; public byte verSKVM; // SK-VM 의 버전이 저장될 변수. /** turnOnLCD(); // LCD 조명 ON. verSKVM = getSKVMVer(); if(isLowerSKVM12())
public void pauseApp() {}
/** /** /** /** |
소스가 나름대로 길지만, 알고 보면 별것이 아닙니다.
위의 Midlet 함수를 보시면, 몇 가지 유용한 함수들이 있는데,
getSKVMVer() 함수는 현재 SKVM의 버전을 리턴 해 주는 함수이고,
turnOnLCD() 함수는 LCD의 조명을 켜주는 함수입니다.
아마, Mobile 게임에서 위의 두 함수는 상당히 자주 사용이 되리라 봅니다.(함수 이름은 달라질 수 있겠지요.)
그리고 Midlet 클래스의 생성자 부분에서는,
변수에 모두 메모리 할당을 해주고,
state = new State(); mainMenu = new MainMenu(this, display); |
LCD 조명을 켜고, SKVM의 버전을 얻어옵니다.
turnOnLCD(); // LCD 조명 ON. VerSKVM = getSKVMVer(); |
그리고 SK-VM의 버전이 1.2 이하라면, 아래와 같은 경고 메시지를 출력해 줍니다.
if(isLowerSKVM12()) System.out.println(" # Warning : Your SK-VM Version is too low."); |
그 다음 맞고 게임이 실행 되고, startApp() 함수를 호출하게 되면, startApp() 함수에서는
initGame() 함수를 호출하여, 메뉴를 출력 하기 위한 초기화 작업을 해 줍니다.
initGame() 함수에서는 mainMenu를 화면에 출력 시켜주고,
display = Display.getDisplay(this); display.setCurrent(mainMenu); // mainMenu를 보여준다. |
현재 게임의 상태를 LOGO로 초기화 시켜 줍니다.
curState = state.LOGO; // 초기 상태는 LOGO. |
여기서 사용된 State 클래스에는 단순히 상태를 나타내는 상수만이 정의 되어 있는 클래스로, 다음과 같습니다.
[# common.State.java]
package common;
/** public class State { public final byte LOGO = 0; |
보시는 바와 같이 State 클래스에는 단순히 현재 상태를 나타내는 각종 상수들이 정의 되어 있을 뿐이며, 그 외의 것은 아무것도 없습니다.
이제 기본적인 소스 골격은 모두 세워 놨으니, 실제로 로고 화면을 출력해 주는 MainMenu 클래스를 한번 보도록 하겠습니다.
이번에도 소스가 꽤 길지만, 역시 별로 어려울 것은 없는 소스입니다.
[# twogo1p.MainMenu.java]
package twogo1p;
import javax.microedition.lcdui.Image; /** class MainMenu extends Canvas implements Runnable private Image logo; private Display display; /** width = getWidth(); this.midlet = midlet; try thread = new Thread(); /** /** if(midlet.chkCurState(state.LOGO)) try img = Image.createImage(path); /** /* // 현재 상태를 MENU로 변경. logo = null;
|
이번에도 소스가 꽤 길지만, 역시 별로 어려울 것은 없는 소스입니다.
생성자에서는, Logo 화면에 출력될 그림을 로드 하고,
try { logo = loadImage("/image/logo/logo.lbm"); } catch(Exception e) { System.out.println(e.toString()); } |
쓰레드를 시작 시킵니다.
thread = new Thread(); thread.start(); |
그리고 paint() 함수에서는 midlet.curState가 state.LOGO일때는, 로고 화면을,
State.MENU일때는 메뉴 화면을 출력시켜 줍니다.
그러나 오늘은 로고 화면만 구현 할 것이므로, 메뉴 화면을 그려주는 것은 포함되어있지 않습니다.
그리고 keyPressed() 함수에서 키 입력을 처리 할 때, 로고에서나 메뉴에서나 공통으로
취소 키(KEY_CLR)을 누르게 되면, 게임을 종료 할 수 있게 할 것 이므로,
취소 키만 따로 먼저 체크를 해 주고, LOGO에서는 취소키를 제외한 아무 키나 누르면 메뉴로 상태를 변경하고, 화면을 다시 그려주는 기능을 합니다.
MENU에서는 위, 아래 화살표와 확인 키가 사용이 되지만, 오늘은 메뉴를 구현하지 않았으므로, 그냥 디버그 창에 메시지만 출력이 되도록 했습니다.
오늘 작성한 소스를 SK-VM Emulator에서 돌려보면 다음과 같은 화면이 보일 것입니다.
로고 화면에서 아무 키나 누르면, 메뉴로 넘어가는데, 메뉴에 아무런 처리도 해주지 않았으므로, 그냥 검정색 화면만 나올 것입니다.
그때는 그냥 취소 키를 누르면 종료가 됩니다.
오늘 작성한 소스는 TwoGo#1.alz파일을 받아서 확인 해보시면 되겠구요. <없음>
오늘 강좌는 여기까지 하도록 하겠습니다.
다음 시간에는 메뉴를 출력 해주고, 각각의 메뉴를 구현해 보도록 하겠습니다.
'DevSource > 맞고' 카테고리의 다른 글
모바일 맞고 게임4-2(Room 클래스 살펴보기) (0) | 2012.12.27 |
---|---|
모바일 맞고 게임4-1(맞고 게임의 기본 인터페이스 구현) (0) | 2012.12.27 |
모바일 맞고 게임강좌3-3(나머지 서브 메뉴 구현하기) (0) | 2012.12.27 |
모바일 맞고 게임3-1(각각의 메뉴구현) (0) | 2012.12.27 |
모바일 맞고 게임 강좌1 (0) | 2012.12.27 |