Powered by SmartDoc

アバタ

ヒットポイント,マジックポイント,レベル,経験値を持つAvatarを作る.ア タック,調べるなどの機能も追加する.ダメージを受け取る.

画像ファイルを指定したAvatarを作る

アバタの画像として,以下のkintaro.a3を利用して下さい.下のリンクからダウンロードしてワークフォルダに保存しておいて下さい.

kintaro.a3

Avatarのクラス名はGAvatarにします.よって,GAvatar.javaとういうファイ ルにクラスを作ることになります.内容は以下のようにして下さい.

GAvatar.java(1)
import ac.hiu.j314.elmve.*;
import ac.hiu.j314.vesma.*;

public class GAvatar extends VesmaAvatar {
    protected void init() {
        super.init();
        a3UI = "x-res:///kintaro.a3";
    }
}

作成したAvatarの生成

作成したアバタを使用するにはVESMAに管理者権限でloginします.

新しいアカウントを作成して下さい.つまり, メニューから[Config]-->[users]でアカウントの管理画面にして 必要な項目を入力します.今回は[avatar]という欄に 「default」と入っているところを「GAvatar」に変更して から「Add」ボタンを押して下さい.(詳しくはTutorialの ほうを参照して下さい.)

これで,GAvatarベースのアバターが使用可能になるので, VESMAを再起動して新しく作成されたアバターの名前で, ログインして下さい.

各種メソッドの追加

GAvatarクラスに以下の変数とメソッドを付け加えます.

GAvatar.java(2)
    protected int hitPoint = 10;
    protected int magicPoint = 10;
    protected int level = 1;
    protected int strength = 1;

    public void normal(Order o) {
        actionID = "default";
        repaint();
    }

    public void attack(Order o) {
        actionID = "attack";
        repaint();
        ElmStub e = (ElmStub)getNearestElms(1,"Character").get(0);
        send(makeOrder("normal",NULL),1000);
        if (e == null) return;
        send(makeOrder(e,"beated",strength));
        send(makeOrder("hear",getName()+"が"
                       + e.getName()+"にアタック!\n"));
    }

    public void beated(Order o) {
        actionID = "beated";
        repaint();
        int n = o.getInt(0);
        hitPoint -= n;
        if (hitPoint < 0)
            send(makeOrder("dead",NULL),1000);
        else
            send(makeOrder("normal",NULL),1000);
    }

    protected boolean deadFlag;
    public void dead(Order o) {
        deadFlag = true;
        actionID = "dead";
        repaint();
    }

以上の変更で,normal,attack,beated,deadの動作をするようになります.

動作確認

上のメソッドの動作確認には,以下のようなコマンドを使用します.

##ユーザ名   attack   &
##ユーザ名   beated   3   &
##ユーザ名   dead   &
##ユーザ名   normal   &

ユーザ名のところは,自分で作成した新しいアカウントのユーザ名を指定して 下さい.(現在,表示上のバグで上のコマンドは2回ぐらい実行しないと 表示がおかしいようです.)

Characterの変更

前に作ったCharacterクラスにも以下の変数,メソッドを追加しておいて下さ い.ほとんど上の例と同じです.

Character.java
    protected int hitPoint = 10;
    protected int magicPoint = 10;
    protected int level = 1;
    protected int strength = 1;

    public void normal(Order o) {
        actionID = "default";
        repaint();
    }

    public void attack(Order o) {
        actionID = "attack";
        repaint();
        ElmStub e = (ElmStub)getNearestElms(1,"GAvatar").get(0);
        send(makeOrder("normal",NULL),1000);
        if (e == null) return;
        send(makeOrder(e,"beated",strength));
        send(makeOrder(e,"hear",getName()+"が"
                       + e.getName()+"にアタック!\n"));
    }

    public void beated(Order o) {
        actionID = "beated";
        repaint();
        int n = o.getInt(0);
        hitPoint -= n;
        if (hitPoint < 0)
            send(makeOrder("dead",NULL),1000);
        else
            send(makeOrder("normal",NULL),1000);
    }

    protected boolean deadFlag;
    public void dead(Order o) {
        deadFlag = true;
        actionID = "dead";
        repaint();
        send(makeMyOrder("dispose",NULL),10000);
    }

CharacterもGAvatarと同様にコマンドで動作します. どのようなコマンドを入力すればチェックできるか 考えてみて下さい.あっ,そういえば,Characterはdeadになって しばらくすると自動消滅します.

その他

結構適当なので,その他のメソッドも付け足して工夫してみて下さい.