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);
}
}