エネルギー弾

BASIC入門編

ひろじいべーしっくch(旧:ひろじいチャンネル)  第八回の動画の解説・補足。(0-008)

結論

SPROT スプライトを時計回りに回転させるよ。

SPCOL スプライトの衝突判定情報を集めるよ。

SPHITSP 相手スプライトとのスプライト衝突判定結果を返すよ。

プログラム

今回のプログラムはこちら。(公開キー44425K433、LOAD“N08_FIRE”)

このブログにおいてはなるべく専門用語を使用せずに非常に短く簡潔に説明しています。

詳細を知りたい方は公式リファレンス等も参照してください。

[]については省略可能ですが、一部の命令(例えばDIM命令等)については最低一つの[]は必要です。

SPROT

SPROTスプライト番号,角度

読み方は「エスピーロト」。英語SP Rotationの省略。スプライトを時計回りに回転(rotation)させる命令です。角度は0~360で0°~360°の値と同じです。

SPCOL

SPCOL スプライト番号[,スケール対応]

読み方は「エスピーコル」。英語SP Collectの省略。英語でcollectは「集める」という意味。

スプライトの衝突判定情報を設定する命令です。

スケール対応については、1を指定するとSPSCALEやSPANIMでのスケール変更に合わせて衝突判定の大きさが変化する。0を指定、または省略するとスケール変更しても衝突判定の大きさは変化しないです。

・SPHIT系の命令(以下のSPHITSPなど)を使う前に必ず命令すること。
・SPSET前に使うとエラー。

SPHITSP

SPHITSP(スプライト番号,相手スプライト番号)

読み方は「エスピーヒットエスピー」、指定スプライトとのスプライト衝突判定結果を返す命令です。返値は0の時は衝突がないとき、1の時は衝突しているときです。

・事前にSPCOLを呼び出しておくこと。(命令しておくこと。)

動作の説明

おおまかな動作の説明です。

@MAIN内の説明。

13行目は前回でも使用したジャンプのサブルーチン(@JUMP)に移動するかどうかの判定です。

14行目は炎が飛び出ている最中ならば、その炎が敵と衝突しているかどうか判定するサブルーチン(@FIRE)に移動します。

15行目はスコアの表示です。

16行目はカウンターストップの判定です。

17行目は敵がジャンプするタイミングを乱数で決定しているところです。

18行目は敵がジャンプ中なら敵を描きなおすサブルーチンに移動します。

19行から20行は主人公の魔法使いの描きなおしです。

21行目で11行目に戻ってまた同じ処理を繰り返します。

@BOTANサブルーチン内の説明。

27行目でここのC<2は主人公のスプライト番号の変数をCにしているのだが、C=0とC=1だけを条件としているので魔女が右向いている時だけ炎を発生させていることを考えているところなんだな。

@FIREサブルーチン内の説明。

39行目でスプライト番号4番(炎)と5番(敵)のSPCOL命令をそれぞれ使用し、40行目でスプライト番号4番と5番の衝突判定(SPHITSP命令)を使用しています。

改造例

改造例1

改造例1(点数を得るにはジャンプしながら炎をあてなければならない。なお、3点で終了する。)

改造例2

改造例2(ゲーム終了後に画面を黒くしない。)

16行目のGCLS命令を削る。

改造例3

改造例3(キャラクターの変更例。王様,爆弾,敵をがいこつの組み合わせ。)

7行目のSPSETの値をそれぞれ スプライト番号0番を6249,1番を6250, 2番を6257にする。

8行目の3番を6258,4番を5918,5番を7086にする。

9行目を削る,またはコメントにする。(4,5918を回転させない。)

改造例3(変更後、一部分。)

改造例3(変更後、一部分。)

その他の改造

魔女と敵の位置が近すぎると大量に炎が生成されるため、Aボタンを押しっぱなしにすると容易にスコアが加算されます。そこでこれを回避するために敵からも攻撃が出る様にするとか、敵との距離を空けるように制限を設けるとか、時間設定、弾数制限などが多くの改造が考えられます。

まとめ

SPROT スプライトを時計回りに回転させます。

SPCOL スプライトの衝突判定情報を設定します。

SPHITSP SPCOL命令の後、相手スプライトとのスプライト衝突判定結果を返します。衝突の時に値が1になります。

コメント

タイトルとURLをコピーしました