はじめに
変数とは、文字を書いた紙や分銅をしまっておく箱です。キャラフレスクリプトの場合には、この箱には2種類あります。ひとつは文字を書いた紙、つまり文章を保存しておく箱で、もうひとつは分銅、つまり数値を保存しておく箱です。
何のために使うの?
なぜこんなものが必要なのかといいますと、コンピューターは過去を記憶しないからなのです。あくまで「今どうなっているか」だけで判断してしまうのです。ですから、「今までに何回処理をしたか?」「以前にここを通ったか?」という判断ができないのです。そこで箱を用意して、以前にどういう処理をして結果がどうなったかを保存しておくのです。
変数名
箱には名前を付けないと区別しにくいですね。ですので、変数を使うときには名前を付けます。一般的なスクリプトだと任意の名前を付けられるのですが、キャラフレスクリプトの場合には箱の名前が事前に決められています。
- 文字を書いた紙、つまり文章を保存しておく箱 が ls (英字のエル、エス)
- 分銅、つまり数値を保存しておく箱 が lf (英字のエル、エフ)
我々生徒がキャラフレスクリプトで使用できる変数は、この二種類に限ります。他にもいくつかキャラフレスクリプトで使用できる変数がありますが、それらはキャラフレ本体で使用しているものですので、我々生徒がキャラフレスクリプトで使用してしまうと、キャラフレ本体に多大な悪影響を及ぼします。 ls と lf 以外は絶対に使用しないよう、重ねてお願い申し上げます。
添字(そえじ)って?
箱、つまり変数の名前が固定されたら、箱は一つずつしか使えなくなりますね?それでは困ります。ですので、同じ名前の箱を沢山用意して一列に並べ、先頭から何番目の箱、と指定することで区別します。この「何番目かを表す数字」のことを添字といいます。キャラフレスクリプトの場合、添え字は0から始まります。添え字の最大値は(常識の範囲内なら)制限がないと思って頂いて構いませんが、あまり大きな添え字を使うと実行速度に影響が出る可能性が大きくなりますので、あくまで必要最小限でお願いいたします。
添え字は四角かっこで囲んで指定します。例えば ls[0] とか lf[25] のように指定してください。なお、一般的なスクリプトと異なり、キャラフレスクリプトの場合には、数字を直接記述するしか添え字を指定する方法がありません。ls[lf[2]]、つまり「lsの『lfの2番に入っている値』番目」というように入れ子にする書き方はできないのです。
添え字は四角かっこで囲んで指定します。例えば ls[0] とか lf[25] のように指定してください。なお、一般的なスクリプトと異なり、キャラフレスクリプトの場合には、数字を直接記述するしか添え字を指定する方法がありません。ls[lf[2]]、つまり「lsの『lfの2番に入っている値』番目」というように入れ子にする書き方はできないのです。
変数ってどのように使うの?
(例1)ある処理を100回行なうとき
- lf[10]という変数を0にしておく
- Seg.1
- 何かの処理をする
- lf[10]という変数の中身に1を加える
- lf[10]という変数の中身が100未満なら(Seg.1)に戻る
これで、ある処理が100回行なわれることになります。もう一つ例をあげましょうか。
(例2)以前に、ある選択肢を選んだかどうか判断するとき
- lf[11]という変数を0にしておく
- メニューを表示する
- 選択された項目に応じて、(Seg.1)、(Seg.2)、(Seg.3)のいずれかに移動する
- Seg.1
- 何かの処理をする
- (Seg.4)に移動する
- Seg.2
- 何かの処理をする
- lf[11]という変数の中身を2にする
- (Seg.4)に移動する
- Seg.3
- 何かの処理をする
- (Seg.4)に移動する
- Seg.4
- 何か処理をする
- …..(中略)…..
- もしlf[11]という変数の中身が2ならば、ゲームオーバー
- …..(以下略)…..
スクリプトが読めない、書けないという人の大半は、「各行それぞれは判るのだけど、行が集まると何をやっているのかが判らない(当然、一から書けないし、修正できない)」という人なのではないでしょうか?そうなってしまう理由の一つが「ある変数を何に使っているか判らない」ということだと思います。ですので、スクリプトを書く際には、「この変数を何に使ったか」をメモなりコメントなりで残しておく方がよろしいかと。