フラグで分岐させましょう
$ σ_σ$ < フラグは旗のこと、要するに目印ね。 Σ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に設定されます。
便利ですね!
ちなみに、テクスティオではこのような要素を「初期化要素」といいます。
前回までの、textio、act、p、select、optionそしてgoの6要素に、else、varを加えて8要素となりました。
ゲーム作りに必要な一通りの材料が揃ったと言っていいでしょう。
8要素でゲームができるなんて、とっても簡単ですね!
まとめ
- 要素に付けるvar属性がtrueだったら実行される。
- else要素の後ろはfalseの場合に実行される。
- !マークはtrueとfalseを逆転させる。
- var要素でフラグを立てたり倒したり。
- var空要素で一発初期化。
ゲームと言ったらフラグは外せませんが、他にも外せないものがありますね。
次回は、アイテムの管理方法について解説します。