3Dダンジョンロールプレイングゲーム 第23回目です。
前回書いた通り、戦闘のみ別プログラムにする可能性が出たからです。 (2023年10月4日記事参照「 【ゲーム制作】3Dダンジョンロールプレイングゲーム 第21回 」)
と、言う訳で今回は残りのスクリプトを組むための準備として、メッセージ中に変数の値を表示する仕組みを考えます。
メッセージ中に変数の値を表示とは何か?
代表的な例は、ロールプレイングゲームならば必須のステータス表示ですね。
あとは、戦闘時のダメージ表示なんかですね。
実は、この2例、表示方法が異なるのです。
ステータス表示は右詰め。
ダメージ表示は左詰め。
シューティングゲームの得点表示とは異なり、頭の「0」は消す「ゼロサプレス」も必要です。
以前に「Laboratory」でやった、Laboratoryテーマ??5「 16ビットアドレス値の10進数表示 」の表示部分を改造します。
そのままのロジックで表示させると、
これを改造し「ゼロサプレス」すると、
更に改造し、変数&HD005に桁数を代入しコールすると、指定桁数で右詰め表示されます。
桁数「4」で表示すると、
更に、変数&HD005に「0」を代入しコールすると、左詰め表示されます。
これが出来れば、ステータス表示(右詰め)や、店屋の商品値段表示(右詰め)、戦闘のダメージ表示(左詰め)等が出来るようになります。
改造内容は下記の通り。
16進数→10進数変換ロジックは、ほぼいじっていません。
表示ロジックは大幅に改造してあります。
直接VRAMに描き込まず、メッセージ表示ワーク内に、&HD005の値に応じて格納するように改造しました。
IN
OUT
HL
表示する値
なし
DE
格納先先頭アドレス