トップ 一覧 検索 ヘルプ RSS ログイン

iアプリhelloWorldの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!2.[[iアプリhelloWorld]]

ディスプレイに「HELLO」と表示するだけの簡単なiアプリを作成してみます。

!(1)「iαppliTool for DoJa-3.5(FOMA)」を起動します。
 スタート→すべてのプログラム→iαppli Development Kit for DoJa-3.5→iαppliTool for DoJa-3.5(FOMA)

! (2)「プロジェクト新規作成」をクリックします。

http://akioneer.sakura.ne.jp/kuu/iapl2-1.jpg

!(3)プロジェクト名を入力します。
 ゲーム名をプロジェクト名として、半角英数字で入力します。
 今回はサンプルということでgame01とします。
 「作成」ボタンをクリックすると、「C:\iDKDoJa3.5\apps」フォルダ内に
 「game01」フォルダが作成されます。

http://akioneer.sakura.ne.jp/kuu/iapl2-2.jpg

!(4)「C:\iDKDoJa3.5\apps\game01」フォルダに移動します。
 「game01」フォルダ内は以下のような構成になっています。

http://akioneer.sakura.ne.jp/kuu/iapl2-3.jpg

 (注)
 ※拡張子の表示が許可されているかを確認してください。
 1.上の画面のときに「ツール」→「フォルダオプション」→「表示」タブを開きます。
 2.詳細設定欄にある「登録されている拡張子は表示しない」にチェックが
 付いていないかを確認します。
 チェックが付いている場合はチェックを外し、
 「すべてのフォルダに適用」をクリックします。
 3.ついでに「縮小版をキャッシュしない」にチェックが付いているかを確認します。
 チェックが付いていない場合はチェックを付け、
 「すべてのフォルダに適用」をクリックします。

!下記のようになっていればOKです。

http://akioneer.sakura.ne.jp/kuu/iapl2-4.jpg

!(5)ソースの作成をします。
 ソースとはプログラムが記述されたファイルのことです。
 ソースはプロジェクトフォルダの「src」フォルダに保存しますので、
 「C:\iDKDoJa3.5\apps\game01\src」フォルダに移動してください。
 そのフォルダ内でテキストファイルを2つ作成します。
 テキストファイルの名前はKicker.javaとMainCanvas.javaに変更してください。

!下記のようになっていればOKです。

http://akioneer.sakura.ne.jp/kuu/iapl2-5.jpg

!下記の内容をコピーし、Kicker.javaとMainCanvas.javaに貼り付け、上書き保存してください。

:DoJaの Kicker.java:

 
 import com.nttdocomo.ui.*;
 
 /**
  * ゲームの開始処理を行うクラスです。
  *	
  * @author RGB
  * @version 1.0
  */
 public class Kicker extends IApplication {
 
     /**
     * メインのキャンバスです。
     */
     private MainCanvas mc;
         /**
         * メインのキャンバスです。
         */
         private MainCanvas mc;
 
 
     /**
     * アプリケーションが起動したら呼ばれるメソッドです。
     */
     public void start() {
     mc = new MainCanvas(this);
     Display.setCurrent(mc);
     mc.start();
   }
         /**
         * アプリケーションが起動したら呼ばれるメソッドです。
         */
         public void start() {
         mc = new MainCanvas(this);
         Display.setCurrent(mc);
         mc.start();
     }
 
 
 }
 
 

:DoJaの MainCanvas.java:

 import com.nttdocomo.ui.*;
 import com.nttdocomo.io.*;
 import javax.microedition.io.*;
 import java.io.*;
 import java.util.*;
 
 /**
  * メインのキャンバスです。
  *	
  * @author RGB
  * @version 1.0
  */
 public class MainCanvas extends Canvas implements Runnable {
 
     // ----------------------------------------------------------------
     // 
     // 共通部:特に変更する必要はありません。
     // 
     // ----------------------------------------------------------------
         // ----------------------------------------------------------------
         // 
         // 共通部:特に変更する必要はありません。
         // 
         // ----------------------------------------------------------------
 
     /**
      * 使用領域の幅です。
      */
     public static final int AREA_WIDTH = 240;
         /**
          * 使用領域の幅です。
          */
         public static final int AREA_WIDTH = 240;
 
     /**
      * 使用領域の高さです。
      */
     public static final int AREA_HEIGHT = 240;
         /**
          * 使用領域の高さです。
          */
         public static final int AREA_HEIGHT = 240;
 
     /**
      * 画面の幅です。
      */
     public static final int DISPLAY_WIDTH = Display.getWidth();
         /**
          * 画面の幅です。
          */
         public static final int DISPLAY_WIDTH = Display.getWidth();
 
     /**
      * 画面の高さです。
      */
     public static final int DISPLAY_HEIGHT = Display.getHeight();
         /**
          * 画面の高さです。
          */
         public static final int DISPLAY_HEIGHT = Display.getHeight();
 
     /**
      * キー処理で使用する定数で、「上キー」を表します。
      */
     public static final int KEY_UP = Display.KEY_UP;
         /**
          * キー処理で使用する定数で、「上キー」を表します。
          */
         public static final int KEY_UP = Display.KEY_UP;
 
     /**
      * キー処理で使用する定数で、「下キー」を表します。
      */
     public static final int KEY_DOWN = Display.KEY_DOWN;
         /**
          * キー処理で使用する定数で、「下キー」を表します。
          */
         public static final int KEY_DOWN = Display.KEY_DOWN;
 
     /**
      * キー処理で使用する定数で、「右キー」を表します。
      */
     public static final int KEY_RIGHT = Display.KEY_RIGHT;
         /**
          * キー処理で使用する定数で、「右キー」を表します。
          */
         public static final int KEY_RIGHT = Display.KEY_RIGHT;
 
     /**
      * キー処理で使用する定数で、「左キー」を表します。
      */
     public static final int KEY_LEFT = Display.KEY_LEFT;
         /**
          * キー処理で使用する定数で、「左キー」を表します。
          */
         public static final int KEY_LEFT = Display.KEY_LEFT;
 
     /**
      * キー処理で使用する定数で、「決定キー」を表します。
      */
     public static final int KEY_SELECT = Display.KEY_SELECT;
         /**
          * キー処理で使用する定数で、「決定キー」を表します。
          */
         public static final int KEY_SELECT = Display.KEY_SELECT;
 
 
     /**
      * 押されたキーの値です。
      */
     private int keyeventPressed = 0;
         /**
          * 押されたキーの値です。
          */
         private int keyeventPressed = 0;
 
     /**
      * このキャンバスのグラフィックスオブジェクトです。
      */
     private Graphics g = null;
         /**
          * このキャンバスのグラフィックスオブジェクトです。
          */
         private Graphics g = null;
 
     /**
      * 現在のフレームカウントです。
      */
     private int frameCount = 0;
         /**
          * 現在のフレームカウントです。
          */
         private int frameCount = 0;
 
     /**
     * 現在のシーンです。
     */
     private int scene = 0;
         /**
         * 現在のシーンです。
         */
         private int scene = 0;
 
     /**
      * シーンの切り替え状態を管理します。
      */
     private boolean sceneSwitch = false;
         /**
          * シーンの切り替え状態を管理します。
          */
         private boolean sceneSwitch = false;
 
     /**
      * 設定されたIApplicationオブジェクトです。
      */
     private IApplication kicker;
         /**
          * 設定されたIApplicationオブジェクトです。
          */
         private IApplication kicker;
 
     /**
      * ゲーム用のスレッドです。
      */
     private Thread th;
         /**
          * ゲーム用のスレッドです。
          */
         private Thread th;
 
 
     /**
      * コンストラクタです。
      */
     public MainCanvas(IApplication kicker) {
         this.kicker = kicker;
     }
         /**
          * コンストラクタです。
          */
         public MainCanvas(IApplication kicker) {
                 this.kicker = kicker;
         }
 
 
     /**
     * キャンバス処理を開始します。
     */
     public void start() {
         repaint();
     }
         /**
         * キャンバス処理を開始します。
         */
         public void start() {
                 repaint();
         }
 
 
     /**
     * 画面の描画要求時に呼ばれます。
     *
     * @param g グラフィックスオブジェクトが渡されます。
     */
     public void paint(Graphics g) {
         if(th == null) {
             this.g = g;
             th = new Thread(this);
             th.start();
             Thread.currentThread().yield();
         }
     }
         /**
         * 画面の描画要求時に呼ばれます。
         *
         * @param g グラフィックスオブジェクトが渡されます。
         */
         public void paint(Graphics g) {
                 if(th == null) {
                         this.g = g;
                         th = new Thread(this);
                         th.start();
                         Thread.currentThread().yield();
                 }
         }
 
 
     /**
     * キーイベント取得メソッドです。
     *
     * @param type イベントのタイプが渡されます。
     * @param param イベントのパラメータが渡されます。
     */
     public void processEvent(int type, int param) {
         if(type == Display.KEY_PRESSED_EVENT) {
             keyeventPressed = param;
         }
         else if(type == Display.KEY_RELEASED_EVENT) {
             keyeventPressed = 0;
         }
     }
         /**
         * キーイベント取得メソッドです。
         *
         * @param type イベントのタイプが渡されます。
         * @param param イベントのパラメータが渡されます。
         */
         public void processEvent(int type, int param) {
                 if(type == Display.KEY_PRESSED_EVENT) {
                         keyeventPressed = param;
                 }
                 else if(type == Display.KEY_RELEASED_EVENT) {
                         keyeventPressed = 0;
                 }
         }
 
 
     /**
     * 指定されたキーが、押された状態であるかを判定します。
     *
     * @param key 検索するキーを設定します。
     */
     public boolean keyPressing(int key) {
         if(keyeventPressed == key) {
             keyeventPressed = 0;
             return true;
         }
         else {
             return false;
         }
     }
         /**
         * 指定されたキーが、押された状態であるかを判定します。
         *
         * @param key 検索するキーを設定します。
         */
         public boolean keyPressing(int key) {
                 if(keyeventPressed == key) {
                         keyeventPressed = 0;
                         return true;
                 }
                 else {
                         return false;
                 }
         }
 
 
     /**
     * 指定されたキーが、キーリピート状態であるかを判定します。
     *
     * @param key 検索するキーを設定します。
     */
     public boolean keyRepeating(int key) {
         if(keyeventPressed == key) {
             return true;
         }
         else {
             return false;
         }
     }
         /**
         * 指定されたキーが、キーリピート状態であるかを判定します。
         *
         * @param key 検索するキーを設定します。
         */
         public boolean keyRepeating(int key) {
                 if(keyeventPressed == key) {
                         return true;
                 }
                 else {
                         return false;
                 }
         }
 
 
     /**
     * アプリを終了します。
     */
     public void exit() {
         IApplication.getCurrentApp().terminate();
     }
         /**
         * アプリを終了します。
         */
         public void exit() {
                 IApplication.getCurrentApp().terminate();
         }
 
 
     /**
     * 画像を読み込みます。
     *
     * @param name 画像名称を設定します。
     * @return 読み込んだ画像を返します。
     */
     public Image loadImage(String name) {
         MediaImage mImg = null;
         Image img = null;
         try {
             mImg = MediaManager.getImage("resource:///" + name + ".gif");
             mImg.use();
             img = mImg.getImage();
         } 
         catch(ConnectionException ce) {
             if(mImg != null) {
                 mImg.unuse();
                 mImg.dispose();
             }
             throw new RuntimeException(ce.getMessage());
         }
         return img;
     }
         /**
         * 画像を読み込みます。
         *
         * @param name 画像名称を設定します。
         * @return 読み込んだ画像を返します。
         */
         public Image loadImage(String name) {
                 MediaImage mImg = null;
                 Image img = null;
                 try {
                         mImg = MediaManager.getImage("resource:///" + name + ".gif");
                         mImg.use();
                         img = mImg.getImage();
                 } 
                 catch(ConnectionException ce) {
                         if(mImg != null) {
                                 mImg.unuse();
                                 mImg.dispose();
                         }
                         throw new RuntimeException(ce.getMessage());
                 }
                 return img;
         }
 
 
     /**
     * 描画開始時・描画終了時の処理を行います。
     *
     * @param state 描画開始はtrue、描画終了はfalseを設定します。
     */
     public void draw(boolean state) {
         if(state) {
             g.lock();
         }
         else {
             g.unlock(false);
         }
     }
         /**
         * 描画開始時・描画終了時の処理を行います。
         *
         * @param state 描画開始はtrue、描画終了はfalseを設定します。
         */
         public void draw(boolean state) {
                 if(state) {
                         g.lock();
                 }
                 else {
                         g.unlock(false);
                 }
         }
 
 
     /**
     * 描画に使用する色を設定します。
     *
     * @param red 赤要素の輝度を指定します(0〜255)。
     * @param green 緑要素の輝度を指定します(0〜255)。
     * @param blue 青要素の輝度を指定します(0〜255)。
     */
     public void setColor(int red, int green, int blue) {
         g.setColor(Graphics.getColorOfRGB(red, green, blue));
     }
         /**
         * 描画に使用する色を設定します。
         *
         * @param red 赤要素の輝度を指定します(0〜255)。
         * @param green 緑要素の輝度を指定します(0〜255)。
         * @param blue 青要素の輝度を指定します(0〜255)。
         */
         public void setColor(int red, int green, int blue) {
                 g.setColor(Graphics.getColorOfRGB(red, green, blue));
         }
 
 
     /**
     * 矩形領域を塗りつぶします。
     *
     * @param x 矩形の左上のX座標を指定します。
     * @param y 矩形の左上のY座標を指定します。
     * @param width 矩形の幅を指定します。
     * @param height 矩形の高さを指定します。
     */
     public void fillRect(int x, int y, int width, int height) {
         g.fillRect(x, y, width, height);
     }
         /**
         * 矩形領域を塗りつぶします。
         *
         * @param x 矩形の左上のX座標を指定します。
         * @param y 矩形の左上のY座標を指定します。
         * @param width 矩形の幅を指定します。
         * @param height 矩形の高さを指定します。
         */
         public void fillRect(int x, int y, int width, int height) {
                 g.fillRect(x, y, width, height);
         }
 
 
     /**
     * 文字列を描画します。
     *
     * @param str 描画する文字列を指定します。
     * @param x X座標を指定します。
     * @param y Y座標を指定します。
     */
     public void drawString(String str, int x, int y) {
         g.drawString(str, x, y + Font.getDefaultFont().getBBoxHeight(str));
     }
         /**
         * 文字列を描画します。
         *
         * @param str 描画する文字列を指定します。
         * @param x X座標を指定します。
         * @param y Y座標を指定します。
         */
         public void drawString(String str, int x, int y) {
                 g.drawString(str, x, y + Font.getDefaultFont().getBBoxHeight(str));
         }
 
 
     /**
     * イメージを描画します。
     *
     * @param image 描画するイメージオブジェクトを指定します。
     * @param x X座標を指定します。
     * @param y Y座標を指定します。
     */
     public void drawImage(Image image, int x, int y) {
         g.drawImage(image, x, y);
     }
         /**
         * イメージを描画します。
         *
         * @param image 描画するイメージオブジェクトを指定します。
         * @param x X座標を指定します。
         * @param y Y座標を指定します。
         */
         public void drawImage(Image image, int x, int y) {
                 g.drawImage(image, x, y);
         }
 
 
     /**
     * ゲーム用スレッドの処理です。
     */
     public void run() {
         g = getGraphics();
         try {
             changeScene(SC_INIT);
             while(true) {
                 controlScene();
                 Thread.currentThread().sleep(100);
                 frameCount ++;
             }
         }
         catch(Throwable t) {
             System.out.println(t.getMessage());
             exit();
         }
     }
         /**
         * ゲーム用スレッドの処理です。
         */
         public void run() {
                 g = getGraphics();
                 try {
                         changeScene(SC_INIT);
                         while(true) {
                                 controlScene();
                                 Thread.currentThread().sleep(100);
                                 frameCount ++;
                         }
                 }
                 catch(Throwable t) {
                         System.out.println(t.getMessage());
                         exit();
                 }
         }
 
 
     /**
     * シーンを変更します。
     *
     * @param scene 変更するシーンを設定します。
     */
     public void changeScene(int scene) {
         this.scene = scene;
         sceneSwitch = true;
     }
         /**
         * シーンを変更します。
         *
         * @param scene 変更するシーンを設定します。
         */
         public void changeScene(int scene) {
                 this.scene = scene;
                 sceneSwitch = true;
         }
 
 
     /**
     * シーンの初期化処理をすべきかを判断します。
     *
     * @return シーンが変更された直後はtrueを返します。
     *     それ以降はfalseを返します。
     */
         public boolean firstScene() {
         boolean res = sceneSwitch;
         sceneSwitch = false;
         return res;
     }
         /**
         * シーンの初期化処理をすべきかを判断します。
         *
         * @return シーンが変更された直後はtrueを返します。
         *         それ以降はfalseを返します。
         */
                 public boolean firstScene() {
                 boolean res = sceneSwitch;
                 sceneSwitch = false;
                 return res;
         }
 
 
 
 
 
     // ----------------------------------------------------------------
     // 
     // 実装部:ゲームごとに変更します。
     // 
     // ----------------------------------------------------------------
         // ----------------------------------------------------------------
         // 
         // 実装部:ゲームごとに変更します。
         // 
         // ----------------------------------------------------------------
 
     /** 「初期化」シーンです。*/
     public static final int SC_INIT   = 0;
         /** 「初期化」シーンです。*/
         public static final int SC_INIT   = 0;
 
     /** 「タイトル」シーンです。*/
     public static final int SC_TITLE  = 1;
         /** 「タイトル」シーンです。*/
         public static final int SC_TITLE  = 1;
 
     /** 「プレイ」シーンです。*/
     public static final int SC_PLAY   = 2;
         /** 「プレイ」シーンです。*/
         public static final int SC_PLAY   = 2;
 
     /** 「結果」シーンです。*/
     public static final int SC_RESULT = 3;
         /** 「結果」シーンです。*/
         public static final int SC_RESULT = 3;
 
 
     /**
     * シーンごとの処理を制御します。
     */
     public void controlScene() {
         switch(scene) {
             case SC_INIT   : sceneInit();
                 break;
             case SC_TITLE  : sceneTitle();
                 break;
             case SC_PLAY   : scenePlay();
                 break;
             case SC_RESULT : sceneResult();
                 break;
         }
     }
         /**
         * シーンごとの処理を制御します。
         */
         public void controlScene() {
                 switch(scene) {
                         case SC_INIT   : sceneInit();
                                 break;
                         case SC_TITLE  : sceneTitle();
                                 break;
                         case SC_PLAY   : scenePlay();
                                 break;
                         case SC_RESULT : sceneResult();
                                 break;
                 }
         }
 
 
     /**
     * 「初期化」シーンを制御します。
     */
     public void sceneInit() {
         if(firstScene()) {
         }
         /**
         * 「初期化」シーンを制御します。
         */
         public void sceneInit() {
                 if(firstScene()) {
                 }
 
         draw(true);
                 draw(true);
 
         setColor(0, 0, 255);
         fillRect(0, 0, AREA_WIDTH, AREA_HEIGHT);
                 setColor(0, 0, 255);
                 fillRect(0, 0, AREA_WIDTH, AREA_HEIGHT);
 
         setColor(255, 0, 0);
         drawString("HELLO", 10, 20);
                 setColor(255, 0, 0);
                 drawString("HELLO", 10, 20);
 
         draw(false);
     }
                 draw(false);
         }
 
 
     /**
     * 「タイトル」シーンを制御します。
     */
     public void sceneTitle() {
     }
         /**
         * 「タイトル」シーンを制御します。
         */
         public void sceneTitle() {
         }
 
 
     /**
     * 「プレイ」シーンを制御します。
     */
     public void scenePlay() {
     }
         /**
         * 「プレイ」シーンを制御します。
         */
         public void scenePlay() {
         }
 
     /**
     * 「結果」シーンを制御します。
     */
     public void sceneResult() {
     }
         /**
         * 「結果」シーンを制御します。
         */
         public void sceneResult() {
         }
 
 
 
 
 
 }
 
 




!(6)アプリ情報を設定します。
 iアプリの情報を設定するには「ADF設定」をクリックします。

http://akioneer.sakura.ne.jp/kuu/iapl2-6.jpg

!以下の項目に値を設定します。
,項目名,設定値,説明  
,AppName,GAME01,アプリの名称を設定します。好きな名前で構いません。今回はこの名前にします。  
,AppClass,Kicker,最初に起動されるクラスです。先ほど説明した「Kicker」にします。※左欄からコピーして貼り付けする場合は「Kicker」の右側に余分なスペースが入る場合がありますのでご注意ください。  

http://akioneer.sakura.ne.jp/kuu/iapl2-7.jpg

 最後に必ず「設定」をクリックします。


!(7)「ビルド」をクリックします。

http://akioneer.sakura.ne.jp/kuu/iapl2-8.jpg

 ビルドをすると、「bin」フォルダにプログラム実行ファイル
 (jamファイルとjarファイル)が作成されます。
 ※エラーが出た場合は、もう一度(4)からやり直してください。

!(8)「起動」をクリックします。

http://akioneer.sakura.ne.jp/kuu/iapl2-9.jpg

!ディスプレイが青く塗りつぶされ、赤色の文字で「HELLO」と表示されたらOKです。

http://akioneer.sakura.ne.jp/kuu/iapl2-10.jpg



!!!1.[[iアプリ(入手方法)]]

!!!3.[[iアプリくうちゃん]]

!!!4.[[iアプリ公開]]