1.開発の準備

(10)キー入力

//クラスライブラリの組み込み
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import java.lang.Math;
///////////////////////////////////////////////////////////////////////// オープンアプリの起動クラス
public class GameSamp05 extends MIDlet{
  public GameSamp05() {
    Byoga b = new Byoga();
    Display.getDisplay(this).setCurrent(b);
    Thread th = new Thread(b);
    th.start();
  }
  public void startApp(){}
  public void pauseApp(){}
  public void destroyApp(boolean flag){}
}

//////////////////////////////////////////////////////////////////////// 画面描画に関するクラス
class Byoga extends GameCanvas implements Runnable {
  public static int gameFlg;  //ゲームフラグ(外部から扱える変数)
  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;
  final int KEY0=5,KEY1=6,KEY2=7,KEY3=8,KEY4=9;
  final int KEY5=10,KEY6=11,KEY7=12,KEY8=13,KEY9=14;
  final int KEYAS=15,KEYSH=16,KEYCLR=17;
  /////////////////////////////////////////////////////////////////////// メインループ
  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);   //ゲーム表示
    if(keyTbl[ENTER]){
      keyTbl[ENTER]=false;
      gameFlg=0;
    }
    if(keyTbl[KEY0])g.drawString("0",50,0,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY1])g.drawString("1",50,10,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY2])g.drawString("2",50,20,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY3])g.drawString("3",50,30,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY4])g.drawString("4",50,40,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY5])g.drawString("5",50,50,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY6])g.drawString("6",50,60,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY7])g.drawString("7",50,70,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY8])g.drawString("8",50,80,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEY9])g.drawString("9",50,90,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEYSH])g.drawString("#",50,100,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEYAS])g.drawString("*",50,110,Graphics.LEFT|Graphics.TOP);
    if(keyTbl[KEYCLR])g.drawString("CLR",50,120,Graphics.LEFT|Graphics.TOP);
  }
  /////////////////////////////////////////////////////////////////////// その他の処理
  //キーが押されたときの処理
  public void keyPressed(int keyCode){
    switch(keyCode) {
      case KEY_NUM0:keyTbl[KEY0]=true;break;
      case KEY_NUM1:keyTbl[KEY1]=true;break;
      case KEY_NUM2:keyTbl[KEY2]=true;break;
      case KEY_NUM3:keyTbl[KEY3]=true;break;
      case KEY_NUM4:keyTbl[KEY4]=true;break;
      case KEY_NUM5:keyTbl[KEY5]=true;break;
      case KEY_NUM6:keyTbl[KEY6]=true;break;
      case KEY_NUM7:keyTbl[KEY7]=true;break;
      case KEY_NUM8:keyTbl[KEY8]=true;break;
      case KEY_NUM9:keyTbl[KEY9]=true;break;
      case KEY_STAR:keyTbl[KEYAS]=true;break;
      case KEY_POUND:keyTbl[KEYSH]=true;break;
      default:
        switch(getGameAction(keyCode)) {
          case 0:keyTbl[KEYCLR]=true;break;
          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(keyCode) {
      case KEY_NUM0:keyTbl[KEY0]=false;break;
      case KEY_NUM1:keyTbl[KEY1]=false;break;
      case KEY_NUM2:keyTbl[KEY2]=false;break;
      case KEY_NUM3:keyTbl[KEY3]=false;break;
      case KEY_NUM4:keyTbl[KEY4]=false;break;
      case KEY_NUM5:keyTbl[KEY5]=false;break;
      case KEY_NUM6:keyTbl[KEY6]=false;break;
      case KEY_NUM7:keyTbl[KEY7]=false;break;
      case KEY_NUM8:keyTbl[KEY8]=false;break;
      case KEY_NUM9:keyTbl[KEY9]=false;break;
      case KEY_STAR:keyTbl[KEYAS]=false;break;
      case KEY_POUND:keyTbl[KEYSH]=false;break;
      default:
        switch(getGameAction(keyCode)) {
          case 0:keyTbl[KEYCLR]=false;break;
          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