選択肢の表示ができたところで、次はフラグを立てて分岐する処理に移ります。
これができればノベルゲームがひとまず形になります。
init.txt
の中身をすべて削除して、次の内容を貼り付け、保存してみてください。
@bg roof.png 1.0
@ch center 001-fun.png 1.0
さて、学校へ行くか。
@select label1 label2 label3 歩いて行こう 自転車で行こう やっぱりサボろう
:label1
歩いて行くことにした。
@set $1 = 1
@goto next
:label2
自転車で行くことにした。
@goto next
:label3
今日は休むことにした。
:next
@if $1 == 0 end
お金を拾った。
:end
保存したら、ゲームを実行します。
「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されるはずです。
ここでは
@set
と
@if
の2つのコマンドを組み合わせています。
@set
は、変数設定コマンドを表します。続く
$1
は、変数番号1に値を格納することを意味します。続く
=
は、単純な代入であることを意味します(他にも計算ができます)。続く
1
は、整数の1を代入することを意味します。変数の初期値は
0
ですので、「歩いて行こう」が選択されたときだけ、変数
$1
の値が
1
になります。
@if
は、条件分岐コマンドを表します。
$1 == 0
は、変数
$1
の値が
0
の場合、という条件を意味します。続く
end
は、条件に一致した場合はラベル
end
にジャンプする、という意味を表します。変数の初期値は
0
ですので、結果として、「歩いて行こう」を選択した場合だけ、「お金を拾った。」が表示されることになります。
変数の使い方は0/1のフラグだけではなく、好感度などの数値を持つこともできます。詳細はコマンド・リファレンスの
@set
と
@if
をご覧ください。ただ、スクリプトをシンプルに保つためには、なるべく0/1のフラグとして運用する方が望ましいと思います。
難しい、わからない、と感じても、問題ありません。
スクリプト生成を利用すれば、
Web上でフォームに入力するだけで、
シナリオを分岐するスクリプトを生成できます。