2023年10月18日
【ゲーム制作】3Dダンジョンロールプレイングゲーム 第27回
3Dダンジョンロールプレイングゲーム 第27回目です。
さて、今回もスクリプトの命令「IS」を組んでいきます。
前回「買い」を組みましたので、「売り」を組んでいきます。
「買い」同様、いくつかのサブルーチンが必要です。
@所持アイテムbゥら、そのアイテムデータの先頭アドレスを検索するサブルーチン。
「買い」の@と同じ。
A所持アイテム格納エリア(16バイト)が空かチェックするルーチン。(空ならエラー。)
コメントのKWは「KEY WAIT」、GPは「GOLD PRINT」のサブルーチンです。
B選択された所持アイテムの格納エリアのアドレスを検索するサブルーチン。
今作は所持アイテム数が16個と少ないので、並び替えしない。
そのため、所持アイテム格納エリアの空きを飛ばして検索する必要有り。
どういう事か具体的に説明します。
格納エリアに上図のように入っていたとして、3個目のアイテム20を使うとします。
すると、3個目の格納エリアが空きます。
この時、アイテム22は、アイテムとしては3個目になりますが、格納エリアは4個目となります。
並び替えしないと、格納エリアの空きを飛ばして個数カウントしないと、正常なアイテムを選べません。
因みに、この時アイテム21を手に入れると、格納エリアの一番若い空き場所である3個目に格納されます。
Cアイテム名と売値を一緒に表示するサブルーチン。
コメントのISは「ITEM SEARCH」、VPは「VARIABLE PRINT」です。
売値は買値の半額(/2)となります。
D所持金額を表示するサブルーチン。
「買い」のBと同じ。
E標準メッセージウィンドウを表示し、メッセージを表示するサブルーチン。(標準サブルーチンとして利用。)
「買い」のCと同じ。
F重要アイテム、若しくは装備中アイテムかチェックするルーチン。(重要アイテム、装備中アイテムならエラー。)
アイテムbフ8ビット中先頭1ビット目を重要品フラグ、先頭から2ビット目を装備中フラグとします。
どちらかでも立っていれば、売れない(捨てられない)事にします。
アイテム種類は6ビットなので、最大31種類作成可能。(今作は23種類。)
アイテム種類を32種類以上作りたければ、アイテム格納ワークと同数のアイテム情報ワークを用意します。
これがあれば、下6ビットで同じアイテムを複数持っている時に、1つの格納エリアで31個まで持たせるといった事が出来ます。
G所持品格納エリアからアイテムb削除し、所持金を増やすルーチン。
コメントのPSはB「POSSESSION SEARCH」、ISは「ITEM SEARCH」、KWは「KEY WAIT」です。
メッセージです。
次回は、「IN」を組んでいきます。