敵の処理を改良する(1/5) |
敵の処理を改良して、敵の種類を増やします。
1.敵のデータを用意する |
2.変数の初期設定 |
3.ステージ数表示 |
4.敵の出現 |
5.敵の移動 |
6.敵弾の出現 |
7.敵と自機弾の当たり判定 |
8.自機と敵、敵弾の当たり判定 |
9.敵のダメージ処理 |
10.敵を描画 |
11.敵の爆発を描画 |
12.敵が爆発中の処理 |
13.エンディング |
ザコ3種類、中型敵2種類、ボス3種類に増やします。ボスを倒すと次のステージに進むようにし、ステージ3をクリアしたらエンディングメッセージを表示します。
1.敵のデータを用意する |
今まで、敵の種類は1つでした。そして、敵のデータは毎回x方向、y方向それぞれに何ドット動かすかを決めた配列enemvdx , enemvdyだけでした。単純に考えれば、このデータを増やすだけの話です。ところが、プログラム中に書いている数字で、敵の種類によって変えなければならないものがいくつかあります。そこで、これらの数字をデータ化し、1つのファイルにまとめて書くことにします。ファイル名はenedata.asとし、メインとなるファイルsample15.as内でインクルード(#include "enedata.as")することにします。
まずはenemvdx , enemvdyです。今敵を8種類に増やそうとしているのですから、この配列も8組必要です。そこでこれを2次元配列にします。要素の数は敵の種類によって違いますから、この数を配列変数nenemvに入れることにします。
; 動きのパターン
dim enemvdx,8,32
dim enemvdy,8,32
dim nenemv,8
第2引数が敵の種類を表します。
次に、敵の大きさや耐久力のデータですが、これらを敵の種類ごとに書いても構いませんが、ここでは敵の階級というものを定義します。階級が同じであれば大きさや耐久力も同じとします。
; 階級
dim eneclass,8
絵も敵の種類によって違います。そこで、アニメーションパターン(絵のファイル中の座標)を配列変数にします。
; アニメーションパターン
dim eneanimx,8,4:dim eneanimy,8,4
dim enedmgx,8,4:dim enedmgy,8,4
dim neneanim,8
eneanimx , eneanimyは、それぞれのパターンの座標です。(animはanimationの略です。)ここでは、いくつかのパターンを順々に表示することにします。自機の方に向かって傾く、といったタイプのアニメーションは扱いません。最後のパターンを表示したら、最初に戻ります。
上の図の場合、パターンは4つです。この数を入れる変数をneneanimとします。
enedmgx , enedmgyは敵がダメージを受けている時のパターンの座標です。(dmgはdamageの略です。)eneanimx.n.0 , eneanimy.n.0に対応するのがenedmgx.n.0 , enedmgy.n.0、eneanimx.n.1 , eneanimy.n.1に対応するのがenedmgx.n.1 , enedmgy.n.1、……です。
以上で宣言した配列変数に従って、例えば今まで出てきた茶色の敵のデータを書くと、以下のようになります。種類は0番とします。
; 敵0 ザコ 茶
enemvdx.0.0=-8:enemvdy.0.0=4
enemvdx.0.1=-6:enemvdy.0.1=4
・
・
・
enemvdx.0.15=-6:enemvdy.0.15=4
nenemv.0=16
eneclass.0=0
eneanimx.0.0=$80:eneanimy.0.0=0
eneanimx.0.1=$A0:eneanimy.0.1=0
eneanimx.0.2=$C0:eneanimy.0.2=0
eneanimx.0.3=$A0:eneanimy.0.3=0
enedmgx.0.0=$60:enedmgy.0.0=$20
enedmgx.0.1=$80:enedmgy.0.1=$20
enedmgx.0.2=$A0:enedmgy.0.2=$20
enedmgx.0.3=$80:enedmgy.0.3=$20
neneanim.0=4