フラグで分岐させましょう

 $ σ_σ$  < フラグは旗のこと、要するに目印ね。
 Σc ' _' )  < 立ってるか倒れてるかの2種類しかないから楽勝だぜ!

フラグで管理

 前回は分岐後のジャンプを学習しました。
 今回は、条件の設定方法とそれによる分岐について解説します。

<?xml version="1.0" encoding="UTF-8"?>
<textio>
<act>
<select>
	<option verb="ミル;">
		<p var="openLid"> フタが開いている。<else/> フタが閉じている。</p>
	</option>
	<option verb="アケル;ヒラク" var="!openLid">
		<p> フタを開けたら、おでんが煮えている。</p>
		<var id="openLid"/>
	</option>
	<option verb="シメル;トジル" var="openLid">
		<p> フタを閉めた。</p>
		<var id="openLid">false</var>
	</option>
</select>
</act>
</textio>

各要素の説明

p要素のvar属性

<p var="openLid"> フタが開いている。<else/> フタが閉じている。</p>

 ここで、p要素にvar属性がついています。
 var属性で指定したidのフラグの状態でp要素を実行するかどうかを決定します。
 フラグ(ここではopenLid)の状態がtrue(いわゆるフラグが立っている)場合にp要素を実行します。

else要素

<p var="openLid"> フタが開いている。<else/> フタが閉じている。</p>

 p要素の中に、始めて目にするelse要素があります。
 これは、先ほどの条件判定でフラグの状態がfalse(フラグが立っていない)場合の処理を表す区切りです。
 つまり、<p>から<else/>までがtrue、<else/>から</p>までがfalseの場合に実行される内容というわけです。

 varによる条件の指定を行った場合に、必ずしもelse要素を挟む必要はありません。
 else要素がなくてフラグがfalseの場合、何も実行されません。

option要素のvar属性

<option verb="アケル;ヒラク" var="!openLid">

 option要素にもvar属性がついています。
 var属性による条件判定は、基本的に全ての要素で可能です。

 ここで注意するのは、var属性の内容が先ほどのopenLidではなく、頭に!がついた!openLidになっていることです。
 !は論理否定などと言われ、trueならfalseに、falseならtrueにとフラグを逆転させる機能を持っています。
 ですから、このoptionはフラグがtrueの際に実行されないということです。

 Σc ' _' )  < ビックリしたからって、ひっくり返らなくてもいいよな。
 $;σ_σ$  < そういう解釈する人、始めて見たわ。

var要素

<var id="openLid"/>

 他の要素の中の属性としていて出ていたvarが、今度はvar要素として現れました。

 var要素はフラグの値を設定するのに使い、フラグ名はid属性で指定します。
 ここではopenLidというフラグがtrueに設定されています。
 var要素が空要素の場合、フラグをtrueに設定するからです。

<var id="openLid">true</var>

 内容を省略しない場合、このようにvar要素の内容の部分にtrueと書きます。
 動作としては全く同じです。

<var id="openLid">false</var>

 逆にfalseを設定する場合は、内容を省略して空要素にすることはできません。
 しっかりとvar要素の内容にfalseと書きましょう。

 var要素による指定がない初期状態では、全てのフラグはfalseと見なされます。

 varのid(フラグ名)は、アルファベットでもそれ以外の文字でも構いません。
 大文字・小文字・全角・半角は区別されるので、例えば半角英小文字にすると決めたら、他の文字種はあまり使わない方が間違いが少なくて良いでしょう。

var空要素

<var/>

 var要素で設定したフラグの値は、ブラウザを閉じても保存されます。
 ですから、ゲームを最初から始めるには初期状態になるように、var要素で設定しておく必要があります。
 フラグ毎にひとつひとつ設定しても良いですが、var空要素を書くと全てのフラグが初期値のfalseに設定されます。
 便利ですね!

 ちなみに、テクスティオではこのような要素を「初期化要素」といいます。

 前回までの、textioactpselectoptionそしてgoの6要素に、elsevarを加えて8要素となりました。  ゲーム作りに必要な一通りの材料が揃ったと言っていいでしょう。
 8要素でゲームができるなんて、とっても簡単ですね!

まとめ

  • 要素に付けるvar属性がtrueだったら実行される。
  • else要素の後ろはfalseの場合に実行される。
  • !マークはtrueとfalseを逆転させる。
  • var要素でフラグを立てたり倒したり。
  • var空要素で一発初期化。

 ゲームと言ったらフラグは外せませんが、他にも外せないものがありますね。
 次回は、アイテムの管理方法について解説します。