1.開発の準備
(6)AU(オープンアプリ)ゲームの雛形
GameSamp.java
//クラスライブラリの組み込み
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
//オープンアプリの起動クラス
public class GameSamp extends MIDlet{
public GameSamp() {
Byoga b = new Byoga();
Display.getDisplay(this).setCurrent(b);
(new Thread(b)).start();
}
public void startApp(){}
public void pauseApp(){}
public void destroyApp(boolean flag){}
}
//画面描画に関するクラス
class Byoga extends GameCanvas implements Runnable{
int gameFlg = 0; //ゲームフラグ
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() {
while(true){
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]){
gameFlg = 2; //SELECTキーが押されたとき
keyTbl[ENTER] = false; //SELECTキークリア
}
}
/////////////////////////////////////////////////////////////////////// ゲーム初期化
void gameInit(){
try{
im=Image.createImage("/back.png");
im2=Image.createImage("/char.png");
}catch(Exception e){}
gameFlg = 3;
}
/////////////////////////////////////////////////////////////////////// ゲームメイン
void gameMain(){
if(keyTbl[ENTER]){ //SELECTキーが押されたとき
gameFlg = 0;
keyTbl[ENTER] = false; //SELECTキークリア
return;
}
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);
}
}