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 | 格納先先頭アドレス |