コードの記述 その2 ファイターの定義

次はゲーム中に出てくるファイターを記述していきます。まず、開発ツールの「プロジェクト」メニューから「ソースファイルの新規作成」を選択してください。

画面イメージ

続けて、「ソースファイルの新規作成」ダイアログが出ますので、ソースファイル名に「Fighter.java」と入力し、「テンプレートを利用する」のチェックを外し、「作成」ボタンを押してください。

画面イメージ

Notepad++の画面が出てきましたが、Fighter.javaの中身は空っぽのはずです。これは、「テンプレートを利用する」のチェックを外して、自分でゼロからプログラムを作りますよと、意思表示したからです。では、がんばって入力していきましょう。

/*
 * Fighter.java
 */
 
 import com.nttdocomo.ui.*;
 
 public class Fighter {
    int xpos;
    int ypos;
    int dx = 0;
    int dy = 0;
    Graphics g = null;
    Image fighterImage = null;
    
    Fighter(Graphics g) {
        this.g = g;
        xpos = Display.getWidth() / 2;
        ypos = Display.getHeight() / 4 * 3;
        
        try {
           MediaImage m = MediaManager.getImage("resource:///fighter.gif");
           m.use();
           fighterImage = m.getImage();
        } catch(Exception e) {
           System.out.println("fighter.gifイメージが見つかりません");
        }
    }
    
    public void move() {
        g.drawImage(fighterImage, xpos, ypos);
    }
}

簡単に説明していくと、7行目以降から最後までで、Fighterクラスというものを定義しています。クラスというのはオブジェクト指向という考え方の用語で、オブジェクト(ここでは Fighter)の設計図のようなものなのですが、ここではこれ以上の解説を加えません。興味のある方は、「オブジェクト指向入門」というキーワードで検索してみましょう。

8行目から13行目までで、このFighterクラスの変数を定義しています。xpos, yposは表示するイメージの左上の座標となります。

20行目から26行目まで、GIFイメージを読み込んできて、fighterImageという変数に結び付けています。

29行目から31行目まではfighterImageを動かすためのmove( )関数を定義しています。もっとも、まだ全然動かすことができませんけどね。内部のg.drawImage( )関数はfighterImageを(xpos, ypos)の座標に表示するための関数です。

次は、StarJet.javaのほうをいじります。Notepad++は複数のファイルを編集できる機能を持っており、編集したいファイルはタブで選択するようになっています。というわけで、Notepad++のStarJet.javaのタブをクリックしてください。画面にはStarJet.javaが出てきたはずです。

StarJet.javaの30行目に1行追加します。これは先ほど記述したFighterクラスのインスタンスを生成して、fighterという変数に結び付けています。

class MainCanvas extends Canvas implements TimerListener{
     Graphics g = getGraphics();
     Fighter fighter = new Fighter(g);
    
     MainCanvas() {

さらに、58行目にも1行追加します。timerExpired( )関数は、タイマーで20ミリ秒ごとに呼び出されていますので、Fighterクラスの中のmove( )関数も20ミリ秒ごとに呼び出されることになります。

    public void timerExpired(Timer source) {
        g.lock();
        g.clearRect(0, 0, Display.getWidth(), Display.getHeight());
        fighter.move();
        g.unlock(true);
    }

ここまで出来たら、StarJet.javaとFighter.javaの両方を保存して、「ビルド」してください。たぶんいろいろなエラーが出てると思いますが、がんばってエラーのない状態まで修正し続けましょう。「ADF/トラステッド動作設定チェック 終了」という表示がでたら、続けて「実行」してください。携帯電話エミュレータの画面にファイターのイメージが表示されたはずです。

画面イメージ