課題のスピードアップアイテム追加のプログラムを作成する際の手順
data にある chgstage.hspに、アイテム power.bmp を使用して、
自機から打ち出される弾の数を追加したものが、
powerup.hsp です。
speed.bmpを使用して、
自機から打ち出される弾のスピードを速くするためには、
powerup.hsp を参考にして(コピーして)、
修正していきます。
そこで、まずどこが違っているのかを見つけます。
Power up アイテムを追加した場合の変更点
2行目のd3m.hspは、23行目のd3timer()が書かれているファイルです。
これを include で呼び出して、使っていきます。
8,9行目で6番のbufferに、power.bmp を読み込んでいます。
自機弾の数の初期値と最大値の設定 39-41行目が45-50行目に変更
最初のif で、pwfが1(画面上にpowerupアイテムが表示されている)かどうかを判断しています。
2つ目のif で、画面の下まで達したら、pwfを0(ゼロ:画面上にpowerupアイテムが出ていない)にします。
pwy : powerupアイテムの表示されている位置(y座標)
wys : ウィンドウの縦のサイズ
つぎのif では、百回のループのうち1回アイテムを表示するようにしています。
4つの目のif で、時間をはかり10,000 msに達したら、弾の数(tmx)をもとに戻します。
最後のif では、画面に表示中であれば、
ゲットできたかを判断するサブルーチン(getchk_p)に飛びます。
自機が表示中のとき、自機とpowerupアイテムがぶつかったかどうかを判断し、
ぶつかった場合にゲットしたとして、弾の数を増やしています。
234行目では、始まりの時間を設定しています。
ぶつかっていなければ、そのままgcopy 6〜で、6番のbufferからアイテムの画像をコピー、表示します
speed up アイテムを追加する場合
- powerup.hspを読み込みます、(ファイルから開く、あるいは黒い画面にドラッグ。)
- 名前をつけて保存、speedup.hspのように名前をつけます。
- 8, 9行の2行をコピー、新しくbufferをつくり(7番とでもしましょう)、
speed.bmp を読みます - 45行目-47行目tmxinitなどの変数を参考に、スピードアップのための
変数を設定します。(例えば、tsp、tspinit、tspmaxのような名前で設定) - 110行目にあるように、spx、spy、spfのような名前の変数を使って、
112-129行目をコピー、そのまま下に貼り付けし、
speedupアイテム用のスクリプトを作成します。
getchk_pをgetchk_spなどにしましょう。 - 230-239行目のスクリプトをコピーし、そのまま後ろに貼り付けます。
- *getchk_sp に変更し、pwの付いた幾つかの変数を、tspなどに変えます。
- 最後のgcopyの6番を7番などspeedupアイテムを読み込んだ番号に変更します。
- 自機弾をすすめているところを探します。
- -=16の数字を変数に変更し、完成です。