シナリオを移動しましょう

 $ σ_σ$  < 今度はシナリオの実行場所を移動するわ。
 Σ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が設定してあるとみなすので、上記のように書けばそこへジャンプできます。

 前回までの、textioactpselectそしてoptionの5つに加えてgoの要素を紹介して合計6要素になりました。
 ここまで来ると、完全にゲームと言っていい状態です。
 HTMLでリンクする感覚でジャンプできますし、とっても簡単ですね!

まとめ

  • act要素にはid属性で名札を貼ろう。
  • 最初のp要素はclearが基本。
  • go要素にhref属性に#idを指定してジャンプ。
  • idなしact要素は、実はid="start"と同じ。

 場面転換もできるようになりましたが、何か足りない気がしませんか?
 そう、次回はストーリーゲームに外せないフラグについて解説します。