美食と猫と自作ゲーム

今のところ、自作ゲーム記事ばっかり。

自作ゲーム54 生命力バーの表示方法

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行に飛ぶ事で、処理スピードをあげている。

 

今回のネタはこれまでとする。

 

次はメッセージ表示かスクロールあたりを