−第五回「文字列変数と変数の活用法」−

 第五回は、文字列変数と、変数の活用法について説明します。これらを利用すると、かなりアクロバチックな記述が出来るので、覚えておいて損はないでしょう。
 いつものように、例を示します。


*SCENE NAME_INPUT

*INPUT 自分の苗字は何だったかな……? S(0) 1   ←3
*INPUT 自分の名前は何だったかな……? S(1) 1
 {S(0)}{S(1)}か……そんな名前だった気もする。しばらくこの名前を名乗ることにしよう。   ←3

*S(2)='DOURO'   ←1

 ラベル{S(2)}にジャンプします。   ←2
*GOTO {S(2)}   ←4

*SCENEEND

*SCENE DOURO

>話す 人
*GOTO TALKH1_{F(2)}         ←5
*LABEL TALKH1_0
男「やあ、珍しい服を着ているね。どうしたんだい?」
*F(2)=1                  ←6
*END
*LABEL TALKH1_1
男「それにしても[人口制限計画]ってのは迷惑な計画だよな」
*F(2)=2
*END
*LABEL TALKH1_2
男「今日の夕飯は何かなあ……」
*END

*SCENEEND

  1. 文字列変数への代入
     「S(番号)」で示されるのが文字列変数で、S(0)〜S(511)まで自由に使うことが出来ます。文字列変数は、名前の通り文字を格納しておくことの出来る変数です。
     文字列変数に文字を代入するときは、この例のようにシングルクオーテーション''で文字を囲み、フラグ変数などと同じように「=」で代入出来ます。
     
  2. 文字列変数の表示
     これは、メッセージウィンドウに表示される文字列です。ただし、{}で囲まれた部分は変数名として解釈され、変数の内容に置き換えられます。
     具体的にはS(2)には「DOURO」が入っているため、この「ラベル{S(2)}にジャンプします。」は「ラベルDOUROにジャンプします。」と表示されます。
     
  3. ユーザーの入力文字列を文字列変数に格納
     INPUT命令を使い、文字列変数にユーザーが入力した文字列を格納します。例では、苗字をS(0)、名前をS(1)に格納しています。INPUT命令の第二引数(1)は、文字列の代入であることを示しています。

     「{S(0)}{S(1)}か……そんな名前だった気もする。」という部分は、もちろん「{S(0)}」と「{S(1)}」が、それぞれユーザーが入力した苗字と名前に置き換えられて表示されます。
     
  4. 文字列変数が示すラベルへのジャンプ
     奇妙な書式ですが、この行では文字列変数S(2)の中に入っている文字列をラベル名として解釈し、そのラベルへのジャンプを行っています。この例では、S(2)には「DOURO」が入っているので、実際には「*GOTO DOURO」と記述するのと同様の結果になります。もちろん変数名を{}で囲まずに「*GOTO S(2)」と書いてしまうと、「S(2)」という名前のラベルにジャンプする、という指示になってしまうので、注意してください。
     
  5. フラグ変数埋め込みラベル
     ここからの数行は、「話す 人」と入力したときに実行される処理です。入力するたびに、違うメッセージを表示します(三回まで)。通常、同じコマンドを入力した時に反応を変えるためには以前解説した「IF」を使用するのですが、いちいちIFを使うほどのこともない単純な処理の場合、このような記述が出来ます。

     この処理のキモとなる「TALKH1_{F(2)}」という記述は、項目4と理屈は同じです。{}で囲まれた「F(2)」というフラグ変数が展開され、「{F(2)}」の部分と置き換えられます。F(2)が0だった場合は、「TALKH1_0」になり、「*GOTO」文により、その名前のラベルにジャンプします。
     このように、文字列変数やフラグ変数など、すべての変数をラベルに埋め込むことが出来ます。
     
  6. フラグ変数への代入(ジャンプ先の変更)
     ここでF(2)に1を入れることで、次に「話す 人」と入力した場合、項目5の「*GOTO TALKH1_{F(2)}」で、ラベル「TALKH1_1」にジャンプすることになります。いちいち「*IF」で分岐を記述しなくても、このような単純な方法で簡単な分岐が実現出来ます。

 以上、やや駆け足でしたが、文字列変数と、変数の活用法について解説しました。{}での変数展開は便利な機能なので、ぜひ覚えてください。うまく使えば、ずいぶんスッキリとしたスクリプトを書くことが出来るでしょう。
 今回までで、ゲームの流れに関わる部分はすべて解説しましたので、学んだテクニックを活用して、面白いゲームを作ってくださいね。

 bar10_white.gif

[前の講座][目次]

Copyright 2001-2002 ONODA Production/Youjiro BLACK ONODA