2002年04月28日(日) [長年日記]
■ EGG 第五回ラインナップ
例によって話題として取り上げるのが遅れ気味のProject-EGGですが、第五回ラインナップの販売が始まっていました。
今回気になるのは……うーん「白と黒の伝説」あたりでしょうか?なかなか難しいところです。最近購入しても全然やっていなかったりするので、ちょっと慎重に考えてみます。
■ BLACK DIAMOND講座5「文字列変数と変数の活用法」
久々の第五回です。そろそろBLACK DIAMONDのオフィシャルページの方に持っていってもいいかもしれませんね。
第五回は、文字列変数と、変数の活用法について説明します。これらを利用すると、かなりアクロバチックな記述が出来るので、覚えておいて損はないでしょう。
いつものように、例を示します。
*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 |
- 文字列変数への代入
「S(番号)」で示されるのが文字列変数で、S(0)〜S(511)まで自由に使うことが出来ます。文字列変数は、名前の通り文字を格納しておくことの出来る変数です。
文字列変数に文字を代入するときは、この例のようにシングルクオーテーション''で文字を囲み、フラグ変数などと同じように「=」で代入出来ます。
- 文字列変数の表示
これは、メッセージウィンドウに表示される文字列です。ただし、{}で囲まれた部分は変数名として解釈され、変数の内容に置き換えられます。
具体的にはS(2)には「DOURO」が入っているため、この「ラベル{S(2)}にジャンプします。」は「ラベルDOUROにジャンプします。」と表示されます。
- ユーザーの入力文字列を文字列変数に格納
INPUT命令を使い、文字列変数にユーザーが入力した文字列を格納します。例では、苗字をS(0)、名前をS(1)に格納しています。INPUT命令の第二引数(1)は、文字列の代入であることを示しています。
「{S(0)}{S(1)}か……そんな名前だった気もする。」という部分は、もちろん「{S(0)}」と「{S(1)}」が、それぞれユーザーが入力した苗字と名前に置き換えられて表示されます。
- 文字列変数が示すラベルへのジャンプ
奇妙な書式ですが、この行では文字列変数S(2)の中に入っている文字列をラベル名として解釈し、そのラベルへのジャンプを行っています。この例では、S(2)には「DOURO」が入っているので、実際には「*GOTO DOURO」と記述するのと同様の結果になります。もちろん変数名を{}で囲まずに「*GOTO S(2)」と書いてしまうと、「S(2)」という名前のラベルにジャンプする、という指示になってしまうので、注意してください。
- フラグ変数埋め込みラベル
ここからの数行は、「話す 人」と入力したときに実行される処理です。入力するたびに、違うメッセージを表示します(三回まで)。通常、同じコマンドを入力した時に反応を変えるためには以前解説した「IF」を使用するのですが、いちいちIFを使うほどのこともない単純な処理の場合、このような記述が出来ます。
この処理のキモとなる「TALKH1_{F(2)}」という記述は、項目4と理屈は同じです。{}で囲まれた「F(2)」というフラグ変数が展開され、「{F(2)}」の部分と置き換えられます。F(2)が0だった場合は、「TALKH1_0」になり、「*GOTO」文により、その名前のラベルにジャンプします。
このように、文字列変数やフラグ変数など、すべての変数をラベルに埋め込むことが出来ます。
- フラグ変数への代入(ジャンプ先の変更)
ここでF(2)に1を入れることで、次に「話す 人」と入力した場合、項目5の「*GOTO TALKH1_{F(2)}」で、ラベル「TALKH1_1」にジャンプすることになります。いちいち「*IF」で分岐を記述しなくても、このような単純な方法で簡単な分岐が実現出来ます。
以上、やや駆け足でしたが、文字列変数と、変数の活用法について解説しました。{}での変数展開は便利な機能なので、ぜひ覚えてください。うまく使えば、ずいぶんスッキリとしたスクリプトを書くことが出来るでしょう。
今回までで、ゲームの流れに関わる部分はすべて解説しましたので、学んだテクニックを活用して、面白いゲームを作ってくださいね。
ということで、第五回でした。なんか、久々に書いたので、イマイチわかりづらい内容になってしまいましたが、まあ、これらの機能を使う人はそれなりにわかっている人だと思うので、よしとしますか……。
さて、第六回はようやく画像周りの予定です。今回とはうってかわって、簡単な内容になります。講座の感想や要望は、ツッコミ機能を使ってお寄せください。
http://tdfms.com *
* * * * * * * * * * * * * * * * * * * *