自動実行的な使い方

戻る

基本の使い方

とりあえず、どんなことが出来るのか? もし私の目的に合うものなら使ってみようじゃないか、 という人のために、いちばん簡単な使い方を説明します。
  1. BODYタグ内のどこかに、次の一行を加えます。
    <script src="ess.js" language="JScript"></script>
  2. 出力エリアとして、IDをつけたブロックを作成します。ここでは仮に、msg1としておきます。
    <div id="msg1"></div>
  3. 実際に出力する内容として、IDをinitialとしたブロックを作成し、表示内容を記述します。
    <div id="initial">
    \m[select,msg1]
    やあこんにちわ。\n
    DHASS with tunaスクリプトはじまります。\n
    </div>
これで、ページの全内容が読み込まれたあとに、 msg1にinitialで指定した内容がタイプライタ表示されます。
テストページ
ちなみに、出力エリアは必ずしもDIVである必要はありません。 IDさえついていたらテーブルセルのTDや段落タグのPなど、 文章を含められるタグならどんなタグでも使えます。 IDをつけた要素(文章を含めることの出来るタグ)はすべて「出力エリア」として認識されます。

さらなる使い方

文章を表示するだけではアドベンチャーゲームとしては前時代的です。 ひとつ、画像の表示をしてみましょう。 まず、画像エリアと出力エリアを作ります。
<center>
<img id="img1" width="320" height="240" style="visibility:hidden;">
<div id="msg1" style="border:black solid thin;
 width:400; height:100; text-align:left;"></div>
</center>
すこしごちゃごちゃしていますが、難しいことはありません。 上に画像を表示するimgタグがあります。 IDのついたimgタグはすべて「画像エリア」として認識されます。 画像エリアがvisibility:hiddenで非表示になっているのは、 あとでフェードイン表示させるためです。
下は文章を出力するためのdivです。 IDがついた要素なので「出力エリア」として認識されます。 枠線をつけて大きさを決めるためにスタイルシートを使っています。
表示内容のtunaスクリプトは、次のようにしてみます。
<div id="initial">
\m[select,msg1]
\u[cave.jpg,ruin.jpg]
このtunaスクリプトは先行ロードを完了したあと、\n
画像エリアを選択し、\n
画像をフェードイン表示させます。
\.u
\i[select,img1]
\i[fadeopen,cave.jpg]
</div>
テストページ
まず、出力エリアとしてmsg1を選択しています。
続いて\uタグでcave.jpgの先行ロードを開始します。 Web上では常に画像を先行ロードしておかないと表示できませんので、これは重要です。 \.uタグは先行ロードが完全に終わるまで待機します。 \uと\.uの間は、長いほど効果的です。 というのも、文章を表示している間にバックグラウンドで先行ロードを完了することができれば、 待ち時間なしで進行できるからです。
最後に、画像エリアとしてimg1を選択し、 画像エリアにcave.jpgをフェードインで表示させます。

選択肢を作る

アドベンチャーゲームとしては、やはり選択肢が必要です。 ここではその選択肢の実行を試してみます。
ここで「コントロールタグ」について説明しておきましょう。 tunaスクリプトでは\で始まる文字列を「コントロールタグ」と呼びます。
tunaスクリプトは通常の文章をそのまま出力しますが、 それだけだと文章の表示以外なにも出来なくなってしまいます。 そこでコントロールタグを文章中に入れて、 画像の表示をさせたり、 時間待ちをしたり、 選択肢を作成したりするわけです。
また、tunaスクリプトでは改行が全て無視されますので、 実際に改行をするときには\nというコントロールタグが必要です。
さて、次のtunaスクリプトを見てください。
\m[select,msg1]
あなたの好きな果物は?\n
\a[melon,メロン]\n
\a[mikan,みかん]\n
\a[ringo,リンゴ]\n
\.a

\t[melon]
メロンか。\n
それもよい・・・。
\j[end]

\t[mikan]
みかん。\n
ふむ、食べ過ぎに注意せよ。
\j[end]

\t[ringo]
さくっ。\n

\t[end]
ページを開くと、あなたの好きな果物は?と質問されます。 3つの選択肢が表示され、クリックするとそれぞれの文章が表示されます。
テストページ
選択肢は\a[ラベル,標題]というコントロールタグで作成します。 その選択肢をクリックしたときに、\t[ラベル]の位置に処理が移動するわけです。 必要なだけ選択肢を作った後、\.aで選択肢の選択待ちに入ります。
移動先の位置を\t[ラベル]で設定します。 それぞれの\tに続く文章で個別の内容を表示し終わったら、 \j[end]で最後の位置を示すラベル\t[end]まで強制的にジャンプします。 ここで\jがないと選択肢のジャンプ先で文章が表示された後、 そのまま次の選択肢の内容まで表示されてしまいます。
\j[ラベル]は強制ジャンプ命令で、 \t[ラベル]が上にあれば実行を上に戻すことも可能です。

分割すること

さて、これまでの説明(とサンプルページの内容)でアドベンチャーゲームは作れます。 ですが本格的な大長編に作ろうと思うと、当然ながらtunaスクリプトも大長編になってしまいます。 もっとも、現バージョンではセーブ・ロードが出来ないので、 それほどの長編を作ってもユーザが困るんですが、 それでもある程度の長さになると管理が大変になります。
そこで分割が重要です。 場面ごとにいくつかのdivに分割しておけば、 それぞれでジャンプラベルを新しく使うことが出来ます。 選択肢ごとにひとつのdivを割り当てるぐらいがちょうどです。
別のtunaスクリプトに移動するコントロールタグは\g[ID名]です。 このタグはA taleで多用されているので、それを見てください。
good luck!

戻る