MSXBASICでゲームを作る際、何かの役にたつかもしれないので、各処理のプログラムをメモしておく。
Vitality(生命力)の表示
戦闘しながら、リアルタイムに高速表示できるのばturboRの恩恵だろう。生命力1につき1ドット(マップパーツやキャラクターが8ドット)なので、作中では120を最大としている。もっと増やしたい場合は、横に表示しているマナの数字を移動するか、1ドットあたり2以上に増やせばよい。
プログラム
P(20)が最大生命力、Hが生命力、その他O、N1、Nという変数を用いている。
60行で最大生命力を8で割った回数分、まず赤色で表示する。(VPOKE6630+J,3の3は赤い横8ドットの表示)
70行では、生命力が8を超えている時のみ、8で割り、値をOに得る。割りきった余りをN1に得る。生命力が8以下の場合は、その値をN1に得る。それから、Oの回数分の青い表示を、先ほど表示した赤の上に表示していく。すると、最大生命力と今の生命力の差が開くほど、赤の表示割合が増える事になる。なお、生命力が1以下の場合870行に飛ぶが、これはゲームオーバー処理のため。
80行 IF N1 THEN~は、IF N1<>0 THEN~と同じ。つまり、生命力が綺麗に8の倍数かそうでないかを判定する。N1が0以外の時は1~7の数字を得ているが、それは、スプライト機能を使って表示している。
スプライト1~8の中身。8要らんかった。
スプライトは赤い表示の上に重ねて表示出きるので、スプライトの枠が狭くなる分、下の赤い表示(ダメージ分)を表示できる。
90行は変数Nの変動を管理。Nは主人公の動きに影響する変数で、通常2である。処理としてはP(24)が0以外の時、生命力が最大生命力の8分の1以下の場合、Nを1にする。つまり、動きが鈍くなる。P(24)は青の結晶で、状態異常を全て無効化するため、もっていれば動きも遅くならないという事。
60行と70行を分けている理由
プログラムは行ごとに255文字近く書き込め、まとめた方が記憶容量も節約できる。では、回復処理の場合を考えてみる。
回復時は赤色の表示が増える事はない。回復処理のプログラムから赤色表示の60行を無視して青色表示の70行に飛ぶ事で、処理スピードをあげている。
今回のネタはこれまでとする。
次はメッセージ表示かスクロールあたりを