アイテムで分岐させましょう

 $ σ_σ$  < アイテムは持ち物全般を指す言葉よ。
 Σ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には読んでプレイヤーが理解できる文字を設定する必要があります。
 それは大抵の場合、全角カタカナになります。

 前回までの、textioactpselectoptiongoelseそしてvarの8つに加えてiteminventory要素を紹介して合計10個になりました。
 もう完全にゲームが作れるだけの要素が揃ったと言えるでしょう。
 このうち、else、item、inventoryなんかは使わなくてもなんとかなると思いますし、実質7要素でゲームが作れます。
 とっても簡単ですね!

 Σc;' _' )  < おいおい、結局必要ないって言ってるし。
 $ σ_σ$  < でも、折角あるんだから使っていいんじゃないかしら。

まとめ

  • item属性はvar属性とほぼ同じ使い方。
  • item要素もvar要素とほぼ同じ使い方。
  • inventory要素を使うとアイテム一覧が表示できる。
  • idに設定するアイテム名は全角カタカナ推奨。

 似たような機能でも、分かれている理由はあるので、上手く使い分けましょう。
 次回は、2単語入力によるコマンドについて解説します。