1.開発の準備
(9)ソフトキー又はメニューからの終了
//クラスライブラリの組み込み
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
///////////////////////////////////////////////////////////////////////// オープンアプリの起動クラス
public class GameSamp04 extends MIDlet implements CommandListener{
Command cmd1 = new Command("終了",Command.EXIT,0); //左ソフトキーの定義
public GameSamp04() {
Byoga b = new Byoga(this);
b.addCommand(cmd1); //左ソフトキーの追加
b.setCommandListener(this); //ソフトキーのイベント指定定
Display.getDisplay(this).setCurrent(b);
Thread th = new Thread(b);
th.start();
}
public void startApp(){}
public void pauseApp(){}
public void destroyApp(boolean flag){}
////////// ソフトキーのイベント処理
public void commandAction(Command c,Displayable disp){
if(c==cmd1)quit();
}
//プログラムの強制終了
public void quit(){
try{
Byoga.gameFlg=99; //スレッドの終了
destroyApp(false);
notifyDestroyed();
}catch(Exception e){}
}
}
//////////////////////////////////////////////////////////////////////// 画面描画に関するクラス
class Byoga extends GameCanvas implements Runnable {
public static int gameFlg; //ゲームフラグ(外部から扱える変数)
GameSamp04 gamesamp04=null; //GameSamp04オブジェクト
Graphics g=getGraphics(); //Graphicsオブジェクト
Image im=null; //Imageオブジェクト
boolean[] keyTbl = new boolean[25]; //キーテーブル
final int KEYUP=0,KEYDOWN=1,KEYLEFT=2,KEYRIGHT=3,ENTER=4; //キーコード定数
/////////////////////////////////////////////////////////////////////// メインループ
public void run() {
gameFlg=0;
while(gameFlg!=99){
switch(gameFlg){
case 0: //メニュー初期化
menuInit();
case 1: //メニューメイン
menuMain();
break;
case 2: //ゲーム初期化
gameInit();
case 3: //ゲームメイン
gameMain();
}
flushGraphics(); //画面再描画
try{Thread.sleep(10);} //10ミリ秒停止
catch (Exception e) {}
}
}
/////////////////////////////////////////////////////////////////////// メニュー初期化
void menuInit(){
try{
im = Image.createImage("/menu.png");
}catch(Exception e){}
gameFlg = 1;
}
/////////////////////////////////////////////////////////////////////// メニューメイン
void menuMain(){
g.drawImage(im,0,0,Graphics.LEFT|Graphics.TOP); //メニュー表示
if(keyTbl[ENTER]){
keyTbl[ENTER]=false;
gameFlg=2;
}
}
/////////////////////////////////////////////////////////////////////// ゲーム初期化
void gameInit(){
try{
im = Image.createImage("/back.png");
}catch(Exception e){}
gameFlg = 3;
}
/////////////////////////////////////////////////////////////////////// ゲームメイン
void gameMain(){
g.drawImage(im,0,0,Graphics.LEFT|Graphics.TOP); //ゲーム表示
g.drawString("SELECTキーで終了します",50,100,Graphics.LEFT|Graphics.TOP);
if(keyTbl[ENTER])gamesamp04.quit(); //ゲームの終了
}
/////////////////////////////////////////////////////////////////////// その他の処理
//キーが押されたときの処理
public void keyPressed(int keyCode){
switch(getGameAction(keyCode)){
case FIRE:keyTbl[ENTER]=true;break; //選択キー
}
}
//キーが離されたときの処理
public void keyReleased(int keyCode) {
switch(getGameAction(keyCode)){
case FIRE:keyTbl[ENTER]=false;break; //選択キー
}
}
//コンストラクタ(GameSamp04オブジェクトを取得)
Byoga(GameSamp04 gs4) {
super(false);
gamesamp04=gs4;
}
}