1.開発の準備

(7)ソフトキー

//クラスライブラリの組み込み
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;

///////////////////////////////////////////////////////////////////////// オープンアプリの起動クラス
public class GameSamp02 extends MIDlet implements CommandListener{
  Command cmd1 = new Command("終了",Command.EXIT,0);      //左ソフトキーの定義
  Command cmd2 = new Command("メニュー",Command.EXIT,0);  //右ソフトキー1の定義
  Command cmd3 = new Command("ゲーム",Command.EXIT,1);    //右ソフトキー2の定義
  public GameSamp02() {
    Byoga b = new Byoga();
    b.addCommand(cmd1);             //左ソフトキーの追加
    b.addCommand(cmd2);             //右ソフトキー1の追加
    b.addCommand(cmd3);             //右ソフトキー2の追加
    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){
      //プログラムの強制終了
      try{
        Byoga.gameFlg=99;             //スレッドの終了
        destroyApp(false);
        notifyDestroyed();
      }catch(Exception e){}
    }
    else if(c==cmd2)Byoga.gameFlg=0;  //メニュー
    else if(c==cmd3)Byoga.gameFlg=2;  //ゲーム
  }
}

  //////////////////////////////////////////////////////////////////////// 画面描画に関するクラス
class Byoga extends GameCanvas implements Runnable {
  public static int gameFlg;  //ゲームフラグ(外部から扱える変数)
  Graphics g=getGraphics();   //Graphicsオブジェクト
  Image im=null;              //Imageオブジェクト
  Image im2=null;             //Imageオブジェクト
  int   x=100,y=100;
  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);   //メニュー表示
  }
  /////////////////////////////////////////////////////////////////////// ゲーム初期化
  void gameInit(){
    try{
      im=Image.createImage("/back.png");
      im2=Image.createImage("/char.png");
    }catch(Exception e){}
    gameFlg = 3;
  }
  /////////////////////////////////////////////////////////////////////// ゲームメイン
  void gameMain(){
    if(keyTbl[KEYUP])y--;
    if(keyTbl[KEYDOWN])y++;
    if(keyTbl[KEYLEFT])x--;
    if(keyTbl[KEYRIGHT])x++;
    g.drawImage(im,0,0,Graphics.LEFT|Graphics.TOP);   //背景画像描画
    g.drawImage(im2,x,y,Graphics.LEFT|Graphics.TOP);  //キャラクタ画像描画
  }
  /////////////////////////////////////////////////////////////////////// その他の処理
  //キーが押されたときの処理
  public void keyPressed(int keyCode){
    switch(getGameAction(keyCode)){
      case UP:keyTbl[KEYUP]=true;break;         //上
      case DOWN:keyTbl[KEYDOWN]=true;break;     //下
      case LEFT:keyTbl[KEYLEFT]=true;break;     //左
      case RIGHT:keyTbl[KEYRIGHT]=true;break;   //右
      case FIRE:keyTbl[ENTER]=true;break;       //選択キー
    }
  }
  //キーが離されたときの処理
  public void keyReleased(int keyCode) {
    switch(getGameAction(keyCode)){
      case UP:keyTbl[KEYUP]=false;break;        //上
      case DOWN:keyTbl[KEYDOWN]=false;break;    //下
      case LEFT:keyTbl[KEYLEFT]=false;break;    //左
      case RIGHT:keyTbl[KEYRIGHT]=false;break;  //右
      case FIRE:keyTbl[ENTER]=false;break;      //選択キー
    }
  }
  //コンストラクタ(通常はこのまま)
  Byoga() {
    super(false);
  }
}
inserted by FC2 system