シナリオを移動しましょう
$ σ_σ$ < 今度はシナリオの実行場所を移動するわ。 Σc`⊿´) < いえーい、ジャンピング!!
act間のジャンプ
前回はコマンド入力による分岐を扱いました。
今回はその分岐の後、次はどこを処理するかの指定を解説します。
<?xml version="1.0" encoding="UTF-8"?> <textio> <act> <p action="clear">「ごはんよー!」ママの声だ。</p> <go href="#upper"/> </act> <act id="upper"> <select> <option verb="ミル;"> <p> ここは二段ベッドの上だ。</p> </option> <option verb="オリル"> <go href="#end"/> </option> </select> </act> <act id="end"> <p> ママと猫と一緒に、晩ごはんを食べた。</p> <go href="#start"/> </act> </textio>
各要素の説明
act要素のid属性
<act id="upper">
今までact要素には属性がありませんでしたが、ここでid属性が付加されています。
テクスティオはact単位で移動をするので、id属性を使って要素に名札を貼って、移動先として指定できるようにする必要があるのです。
移動先の指定をするのですから、全てのact要素は区別できなくてはなりません。
ですから、1ファイル内のid属性の内容は全て異なるものにします。
id属性が書いていないact要素はid="start"
が記述されているものとして扱います。
そして、id="start"
が記述されているactは最初に実行されます。
p要素のaction属性
<p action="clear">「ごはんよー!」ママの声だ。</p>
p要素にも新たにaction属性がついています。
action="clear"
と書くことで、内容を表示する前に、画面の文字を消去できます。
大きな場面転換が発生した際に設定すると良いでしょう。
開始時に設定しておくと、クリア後に頭に戻った場合に同じ状態から始まるので、最初のp要素にはaction="clear"
を書いておくのが定番かと思います。
go要素
<go href="#upper"/>
やっと今回初登場のgo要素です。
内容を囲う必要がないので。</go>は必要ありません。代わりに<goの最後を/>で閉じておきます。/を忘れないように気をつけてください。
このように何も囲っていない、内容のない要素を「空要素」と言います。
href属性の中に行き先となるactのidを記述します。
その際、頭に#を付けるのを忘れないようにしてください。この記述法はHTMLのベージ内リンクと同じです。
Σc;´д`) < GOTOは複雑化を招く死の命令って聞いたことあるんだけど… $ σ_σ$ < テクスティオはact要素単位で飛ぶからシンプル、安心ね!
<option verb="オリル"> <go href="#end"/> </option>
前回解説したoption要素の中にgo要素を配置すれば、コマンドによって行き先を変更できます。
つまり、オリルと入力すれば、act#end要素(id="end"のact要素)に処理が飛ぶわけです。
<go href="#start"/>
先ほど説明したように、id属性のないactはstartが設定してあるとみなすので、上記のように書けばそこへジャンプできます。
前回までの、textio、act、p、selectそしてoptionの5つに加えてgoの要素を紹介して合計6要素になりました。
ここまで来ると、完全にゲームと言っていい状態です。
HTMLでリンクする感覚でジャンプできますし、とっても簡単ですね!
まとめ
- act要素にはid属性で名札を貼ろう。
- 最初のp要素はclearが基本。
- go要素にhref属性に#idを指定してジャンプ。
- idなしact要素は、実はid="start"と同じ。
場面転換もできるようになりましたが、何か足りない気がしませんか?
そう、次回はストーリーゲームに外せないフラグについて解説します。