| チェックポイント 前回のサンプルに修正を行います。 修正の内容は移動速度の調整です。 現在の移動量はゲーム時間(1フレーム)あたり1づつ増加および減少していますが、移動速度が速いのでUFOを狙い撃ちするのが難しいと思われます。 そうなると移動速度を落とさなければなりません。 現在移動量が1なのでこれより少ないくするには少数点以下の量となるわけです。 プチコンで扱う数値変数は整数を扱う変数でなく、小数点以下の値を扱える固定小数点方式の実数です。 今度はこの実数で移動の量を調整してみましょう。 |
移動量を変数にして初期化して使うように修正します。
サンプルは下記の通りです。
| ■プログラム |
0001 ' initialize |
まずは新しい命令について説明します。
| ■書式 |
| ON 変数 GOTO @ラベル,@ラベル,... |
| 変数で指定されるラベルへジャンプします。 |
・変更点1
サンプルでは63行目に使用しています。
0063 ON PLY_F GOTO @PLY_STOP,@PLY_MVR,@PLY_MVL
0064 STOP
ここでは変数PLY_Fの内容が0のとき@PLY_STOPへ、1のとき@PLY_MVRへ、2のとき@PLY_MVLへジャンプします。
PLY_Fが0以下もしくは3以上のときは64行目から実行します。
要するに変数の内容番目のラベルへジャンプします。(ただし、先頭は0番目です)
変数の内容が0以下でラベルの個数以上のときON GOTOの次の命令を実行します。
ここではバグ回避のためにSTOP命令で停止しています。
・変更点2
システム、UFOおよびプレイヤの初期化などもサブルーチンにしてまとめてあります。
この方がメインルーチンの動作が分かりやすくなります。
・変更点3
ラベルを統一しています。
これはプチコンのラベル名が8文字以下なので長いラベル名が使用できないためできるだけ短く統一しています。
UFOはもともと短いのでそのまま使用します。
PLAYERは長いのでPLYで変数名もラベルも統一します。
SYS_INI、UFO_INIおよびPLY_INIのINIはイニシャライズ(初期化)の意味です。
SYS_MAINはシステムの主なプログラムをまとめます。
UFO_TASKとPLY_TASKのTASKはタスクと呼ばれるキャラクタのプログラムのかたまりです。
・変更点4
UFOの移動量がUFO_SXに代入してあります。
プレイヤの移動量はPLY_SXに代入してあります。
これらのデータは調整しなければならないことが多いので変数に代入してあります。
プログラムの中で複数個所使用する場合に楽になります。