このWIKIを編集するにはパスワード入力が必要です

認証パスワード
RSSフィード

ボスに補助攻撃を付けてみよう

注意:ここに出ている数値は全て例です。

1.function init() の設定をしよう

function init() {}内に
boss_sc=300;
を入れて下さい

2.変数を入力しよう

座標を指定するならばあまり要らないと思いますが、一応入力しておこうね(ぇ
変数は究極に動かしてみようにも出ています。
main Loop(){}内に
my_x=Applet1.getMyX;
my_y=Applet1.getMyY;のほかに
boss_x=Applet1.getBossXReal();
boss_y=Applet1.getBossYReal();
nx = Math.floor(boss_x/32)-1;
ny = Math.floor(boss_y/32)-10;
を入れておきましょう。

3.射撃カウンターを使って攻撃してみよう。

boss_scとは射撃カウンターです(遅
攻撃はよく、setEnemyを使います。
if文を使い射撃カウンターを設定をしよう。
if(boss_sc<=300&&boss_sc>250){         / /もし射撃カウンターが250より上で300以下ならば
Applet1.showMessage(10,"BOSS","ピカチーの電撃!!0","0");       / /左のメッセージを出す
Applet1.setEnemy(nx,ny,16);         / /ボスからコード16を出す(ピカチーの電撃)
}
else if(boss_sc<=200&&boss_sc>100){           / /そうでなく射撃カウンターが100より上で200以下ならば
Applet1.showMessage(10,"BOSS","グレネード!!","0","0");
Applet1.setEnemy(nx,ny,27);
}
else if(boss_sc<=100&&boss_sc>10){
Applet1.showMessage(10,"BOSS","水の波動!!0","0");
Applet1.setEnemy(nx,ny,26);
}
else{boss_sc=300;} / /そうではなければ射撃カウンターは300になる
と言うことです。
setEnemyのコードは資料にあります。

4.技をランダムに攻撃させてみよう。

さっきの文のboss_sc<=200&&boss_sc>100のところをランダムにしてみようか。

1.function init() の設定

function init(){}の中に
(半角英数字)=0;と記入して下さい。
ここではa_kにしましょう。
例)function init(){
boss_sc=300;
a_k=0;
}

2.ランダムにしてみよう

if(boss_sc<=300&&boss_sc>250){
Applet1.showMessage(10,"BOSS","ピカチーの電撃!!0","0");
Applet1.setEnemy(nx,ny,16);
}
else if(boss_sc<=210&&boss_sc>200){a_k= Math.floor(Math.random() *3);} / /a_kはランダムで0~2間での乱数を作成。
else if(boss_sc<=200&&boss_sc>100){
if(a_k==0){ / /a_kが0の時
Applet1.setEnemy(nx,ny,16);
}
else if(a_k==1){ / /a_kが1の時
Applet1.setEnemy(nx,ny,27);
}
else if(a_k==2){ / /a_kが2の時
Applet1.setEnemy(nx,ny,26);
}
}
これでランダム技の完成です。


else{boss_sc=300;}

5.諸注意


(第2章のnyの下にboss_sc--;を入れてください。
でないとボスは動かないよ♪下に書くことは追加の説明。)
boss_sc--;は変数boss_scの値を1ずつ減らすという意味だよ。
これと似たようなのを見たことあったね?
そう、何か装備してみようの2番目にあった「fb_c++;」のことだよ。
これらは似たような関係にあるんだ。
fb_c++;のように記述し、値を1ずつ増やすということを
インクリメントといい、逆に、
boss_sc--;のように記述し、値を1ずつ減らすということを
デクリメントといいます。

6.このままにすると・・・

イェス。このままテストプレイするとボスの補助攻撃は
実行されまくりだね。つーわけで今回は
ボスの補助攻撃の止め方を教えましょう。
function init(){}内に書き加えることは3つあります。
boss_hp=3;
boss_tc=1;
boss_j=1;
上からboss_hpはボスの体力、
boss_tcはボスの踏みカウンター、
boss_jはボスの状態です。
さて、準備もできたし、いよいよボスを止めようか。
まず、長文ですけどこれ書いてください。
my_vy=Applet1.getMyVY();
if(boss_j==1){
if(my_vy==-320){
if(boss_tc==1){
boss_tc=0;
boss_hp--;
if(boss_hp<=0){
boss_j=0;
}
}
}
else{boss_tc=1;}
}
はい。おつかれー(殴
まず、my_vyは正男の縦のスピードを取得した変数です。
そしてif文の意味は、

ボスが生きているとき、
 正男の縦のスピードが-320であるとき、
  ボスの踏みカウンターが1である場合、
   ボスの踏みカウンターが0になり、ボスの体力が減る
    ボスの体力が0以下になったとき、
     ボスの状態は0、つまり死亡状態になる
    。
   。
  。
 。
 そうでない場合、ボスの踏みカウンターは1になる。


となります。
さっきの文見てわかるとおり、if文は重ねて書くことができます。
複数の条件にしたい場合などに用いられる1つの方法です。
また余談ですが、if文を重ねて書く以外に複数の条件を書く方法があります。
1つは、技の出し方にもあった、
if(boss_sc<=300&&boss_sc>250){
・・・省略(・・・
}
という方法。
これは横に説明が書いてあったように意味は
「boss_scの値が300以下であり、なおかつboss_scの値が250以上である場合」
という意味です。(()内の文の意味。)
これは二つの条件が真である場合に実行文が実行されます。
もう1つあります。それは・・・
if(boss_sc==100||boss_sc==50){
・・・また省略(・・・
}
これは意味は
「boss_scの値が100か50の場合」
という意味です。(これも()内の文の意味。)
これは二つの条件のどちらかが真である場合に実行文が実行されます。
この使い方を生かして見るのも手です。

そしてまた余談ですが、前にも出ました。「else」です。
このelseは「そうでない場合」という意味で、
普通はif文のあとに書くものです。
そして、if文の条件が偽であるときにelseの実行文が実行されます。
たまに「else if」と書いて、さらに条件を分岐することもできます。

話は戻って・・・
ボスの基盤なるものができました。
「else{boss_tc=1;}」の下にボスの技のプログラムを持っていくと・・・
ボスを倒したときに技のプログラムは実行されなくなりました。

(スペシャルサンクス:フォトン氏。あの時はお世話になりました。)

  • 最終更新:2009-04-03 17:12:48