ヒットポイント,マジックポイント,レベル,経験値を持つAvatarを作る.ア タック,調べるなどの機能も追加する.ダメージを受け取る.
アバタの画像として,以下のkintaro.a3を利用して下さい.下のリンクからダウンロードしてワークフォルダに保存しておいて下さい.
Avatarのクラス名はGAvatarにします.よって,GAvatar.javaとういうファイ ルにクラスを作ることになります.内容は以下のようにして下さい.
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";
}
}
作成したアバタを使用するにはVESMAに管理者権限でloginします.
新しいアカウントを作成して下さい.つまり, メニューから[Config]-->[users]でアカウントの管理画面にして 必要な項目を入力します.今回は[avatar]という欄に 「default」と入っているところを「GAvatar」に変更して から「Add」ボタンを押して下さい.(詳しくはTutorialの ほうを参照して下さい.)
これで,GAvatarベースのアバターが使用可能になるので, VESMAを再起動して新しく作成されたアバターの名前で, ログインして下さい.
GAvatarクラスに以下の変数とメソッドを付け加えます.
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クラスにも以下の変数,メソッドを追加しておいて下さ い.ほとんど上の例と同じです.
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になって しばらくすると自動消滅します.
結構適当なので,その他のメソッドも付け足して工夫してみて下さい.