Home>戻る

〜第15章 宝箱の開け閉め〜


最初は宝箱の絵が表示されていて、それを調べると「○○を見つけた。」と表示され、 宝箱の絵が開いた状態になり、 もう一度調べても「何も見つからなかった。」と出る処理をやりましょう。

「これもスクリプトで扱うのでは?調べた後にグラフィックスの変更をしてフラグ立てて、と」
と思いがちですが、その場合はその時だけ適用されますが、マップから出てまた入ってくると、 グラフィックスが元の宝箱の絵に戻ってしまいます。

マップロード時にイベントの配置も行われますから、その時に何かしないといけません。
これは、条件によってどのイベントを配置するか、という考え方で出来ます。

例えば、
「所持金100ゴールド以上なら、このイベントを配置。違うならそのイベントを配置。」
「聖なる殺虫剤というアイテムを持っていれば、このイベントを配置。違うならそのイベントを配置。」
「スイッチ20がオンなら、このイベントを配置。違うならそのイベントを配置。」
というように。
今回のプログラムはスイッチのみを条件として扱いました。
これらはイベントテーブルファイルに記述させます。

[eventtable/08.txt]
NULL<>006<>0806<>198<>false<>0<>//宝箱1(未開封)
001<>006<>9901<>199<>false<>0<>//宝箱1(開封済み)
左端のNULL,001というのが条件を現しています。次の006というのはイベントNOです。
二行ともイベントNOが006で共通しています。 これは条件によってどちらかを使用するということです。
条件にNULLがある場合は、そちらをまず読み込みます。
そして次の行を読み取り、条件に数字がある場合は、 そのスイッチ番号がオンであればそちらに更新させます。

シミュレートさせましょう。
最初はスイッチ番号は何もオンになっていません。
よって1行目だけが読み込まれます。
宝箱の絵はテーブル4番目の「198」(未開封)です。

主人公が宝箱を調べると、スクリプト「0806.txt」(テーブル3番目)を読み込みます。
そこには、
[0806.txt]
talk:宝箱を開けた。『天使の爪切り』が入っていた。
switch_on:001
と記述しています。
メッセージを流し、001というスイッチ番号をオンにさせる処理です。

スクリプトはそこで終わりなので、そこでイベントテーブルを更新させます。
今度は001というスイッチがあるので一行目を読み込んだ後、 二行目も読み込まれ更新されます。
宝箱の絵は「199」(開封済み)になりました。
そして今度また主人公が宝箱を調べると、スクリプト「9901.txt」が読み込まれます。
[9901.txt]
talk:宝のない宝箱は、ただの空箱。
以上です。
主人公がマップを出て入りなおしてもスイッチ情報はそのままなので、 空の宝箱が読み込まれます。

<プログラム公開>
Rpg15.java

プロジェクト一式ダウンロード(データ含む)