アイテムで分岐させましょう
$ σ_σ$ < アイテムは持ち物全般を指す言葉よ。 Σc ' _' ) < アイテムがあるとアドベンチャーゲームっぽいぜ。
アイテムで管理
前回は分岐後のジャンプを学習しました。
今回は、条件の設定方法とそれによる分岐について解説します。
<?xml version="1.0" encoding="UTF-8"?> <textio> <act> <select> <option verb="ミル;" item="コイン"> <p> もう何も落ちていない。</p> <else/> <p> 特に何もない。</p> <p> いや…コインが落ちている。</p> </option> <option verb="ヒロウ;トル" item="!コイン"> <p> コインを拾った。</p> <item id="コイン"/> </option> <option verb="モチモノ"> <inventory/> </option> </select> </act> </textio>
各要素の説明
option要素のitem属性
<option verb="ミル;" item="コイン"> <p> もう何も落ちていない。</p> <else/> <p> 特に何もない。</p> <p> いや…コインが落ちている。</p> </option>
option要素にitem属性がついています。var属性と使い方はほぼ同じです。
item属性で指定したidのアイテム所持状態で、実行部分をelse要素前後に振り分けます。
前回のvarの説明ではp要素に条件を書きましたが、その上のoption要素に条件を書いても、同じことができます。
optionの段階で分けると、実行部分に複数の要素を持つことができます。
item属性もvar属性と同様に、最初に!を付けるとtrue/falseが入れ替わります。
item要素
<item id="コイン"/>
item要素の使い方はvar要素とほぼ同じです。
アイテム名はid属性で指定します。
ここではコインというフラグがtrue(所持)に設定されています。
item要素が空要素の場合、trueに設定されます。
<item id="コイン">true</item>
trueを省略しない書き方は上記の通りです。
<item id="コイン">false</item>
アイテムを手放すときは、falseを書きます。
item要素による指定がない初期状態では、全てのアイテムはfalse(不所持)と見なされます。
<item/>
var要素と同様に、item要素で設定した値は、ブラウザを閉じても保存されます。
そしてvar空要素と同様に、item空要素を書くと全てのフラグが初期値のfalseに設定されます。
$ σ_σ$ < ここまでvarと一緒ならitemの意味あるのかしら? Σc ' _' ) < うわー、無駄なの作りやがって、バカだなー。
意味ありますよ! そのひとつを次に説明します。
inventory要素
<inventory/>
inventory要素はp要素のように画面に文字を表示します。
ただし、表示するのは現在所持しているアイテムの一覧に限ります。
アイテムがひとつなら、inventoryを使わなくても、次のように書けば、似た機能が実現できます。
<p item="コイン">コイン<else/>何も持たない。</p>
アイテムが複数ある場合も、同様の処理を並べることで、アイテムの一覧機能は実現できますが、かなり面倒になります。
そこで使い方が限定されているものの、アイテム一覧表示はよく使うので、inventory要素が用意されているというわけです。
inventory要素を使うと、item要素のid属性で設定した文字列がそのまま表示されるので、idには読んでプレイヤーが理解できる文字を設定する必要があります。
それは大抵の場合、全角カタカナになります。
前回までの、textio、act、p、select、option、go、elseそしてvarの8つに加えてitemとinventory要素を紹介して合計10個になりました。
もう完全にゲームが作れるだけの要素が揃ったと言えるでしょう。
このうち、else、item、inventoryなんかは使わなくてもなんとかなると思いますし、実質7要素でゲームが作れます。
とっても簡単ですね!
Σc;' _' ) < おいおい、結局必要ないって言ってるし。 $ σ_σ$ < でも、折角あるんだから使っていいんじゃないかしら。
まとめ
- item属性はvar属性とほぼ同じ使い方。
- item要素もvar要素とほぼ同じ使い方。
- inventory要素を使うとアイテム一覧が表示できる。
- idに設定するアイテム名は全角カタカナ推奨。
似たような機能でも、分かれている理由はあるので、上手く使い分けましょう。
次回は、2単語入力によるコマンドについて解説します。