Studio ついんくる ||Lesson-Lesson7 数の利用編||

Lesson7 数の利用編

変数という名のただの箱

KAG3に限らずプログラミングで数字を利用する場合、数字を変数に代入します。変数というのは数字を入れておく箱を言います。 しかしそれだけでは分かりにくいと思われますが、言ってしまえば数学の時間に使用するxやyと考えていいでしょう。例えば、x=2+3のxは変数となります。 実は変数はxやyよりももっと使いやすかったりするのですが、奥が深すぎるためここでは教え切れません。基本を説明していきましょう。

箱の名前

先ほど私は変数を"箱"としましたが、それらには3つの種類があり、私達はその箱の機能を利用することができます。 その箱の機能とは何なのでしょうか?箱には、セーブで保存される箱セーブしなくても保存される箱保存されない箱があります。 そして箱の名前は私達が勝手に決定することができます。別にxやらyなんかを使わなくてもいいのです。箱の名前の付け方について、下を見てください。
f.hogehoge
sf.hogehoge
tf.hogehoge

はじめに赤く示した、f.sf.tf.に注目してください。これは箱の種類を示すものです。 箱は上より、セーブで保存される箱(ゲーム変数)、セーブしなくても保存される箱(システム変数)、保存されない箱(一時変数) を示します。そしてその次に好きな名前をつけることができます。そのとき名前の先頭に半角の数字もしくは、半角記号の使用ができないので注意が必要です。 つまりこうなります。(*は箱の種類のどれかを当てはめます)
可能な名前
*.flagpoint
*.flag_ポイント
*.フラグポイント
*._フラグpoint
*.1番目のflagポイント
不可能な名前
*._flagpoint
*.1番目のflagポイント

Tip

変数の名前に全角文字を使用できるのは非常にまれです。 通常のプログラミング言語では不可能と考えていいでしょう。 これは正確にはKAG3はスクリプト言語で、CやBASICのようなプログラミング言語ではなく 簡易プログラミング言語と呼ばれるものだからです。 ですがタグ式のスクリプトも珍しいので、KAG3は独自性に富んだ言語といえるかも知れません。
ちなみにKAG3の土台となっている吉里吉里はTJS言語というスクリプト言語でプログラムを組むソフトで、 吉里吉里本体のソースは18万行ほどあるそうです。想像もできないorz

実際の使用

変数を実際使用する場合、今までと同じくタグを使用します。その際使用されるのがevalタグです。 このタグは、つねに追加記述expを必要とします。つまり、[eval exp="*****"]と使用することになります。ここでは変数(箱)の種類をf.で説明していきますが、 実際は好きな種類を使用してかまいません。ここでは変数への数、文字の代入の仕方を説明します。
;f.numberという箱に数字を代入
[eval exp="f.number = 10000"]

;f.characterという箱に文字列を代入
[eval exp="f.character = '壁を征する者が覇者とは言い切れない。それが本質だ。'"
数字は変数名と=で結べば代入することができます。文字は数字と区別するために'(シングルクォーテーション)を使用します。 しかし、' 'の外に文字は記述できませんが、' 'の中に数字を記述することはできます。その場合数字はデータではなく文字として扱われます。

計算をさせる

記号動作
+足し算
-引き算
*掛け算
/割り算
¥割り算の整数解
計算は非常に容易に覚えられると思います。なぜなら計算に使用する記号は左図のように、ほとんど私達が普段使用するものと変わらないからです。 これらの計算は数字と数字文字と文字文字と数字が可能です。(文字が関連する場合は足し算のみ)では下のソースを見てください。
;数字と数字
[eval exp="f.a = 2"]
[eval exp="f.b = 3"]
[eval exp="f.ans = f.a + f.b"]
;f.ansは 5

;こんな感じでも可能
[eval exp="f.a = 14"]
[eval exp="f.ans = f.a * 3"]
;f.ansは 42

;文字と文字
[eval exp="f.a = '私'"]
[eval exp="f.b = 'はこう言った。'"]
[eval exp="f.ans = f.a + f.b"]
;f.ansは 私はこう言った。

;文字と数字
[eval exp="f.a = 100"]
[eval exp="f.b = 'の経験値'"]
[eval exp="f.ans = f.a + f.b"]
;f.ansは 100の経験値
このように計算を行うことができます。ちなみに上のソースを実行しても全く何も起こりません。(正確に言うと中では計算が行われているんですケドね;) 計算結果を画面に出力するには、次の説明へと進んでください。

計算結果の出力

さて、先ほど皆さんに説明したソースはあくまでも計算の仕方です。ただ計算をしただけでは面白くもなんともありません。 これはなんとしてでも計算結果を目に見える形で出したいものです。そんなときはembタグを使用します。 では先ほどのソースの答えを出力してみましょう。
;数字と数字
[eval exp="f.a = 2"]
[eval exp="f.b = 3"]
[eval exp="f.ans = f.a + f.b"]
f.ansは[emb exp="f.ans"][l][r]

;こんな感じでも可能
[eval exp="f.a = 14"]
[eval exp="f.ans = f.a * 3"]
f.ansは[emb exp="f.ans"][l][r]

;文字と文字
[eval exp="f.a = '私'"]
[eval exp="f.b = 'はこう言った。'"]
[eval exp="f.ans = f.a + f.b"]
f.ansは[emb exp="f.ans"][l][r]

;文字と数字
[eval exp="f.a = 100"]
[eval exp="f.b = 'の経験値'"]
[eval exp="f.ans = f.a + f.b"]
f.ansは[emb exp="f.ans"]
無事出力されたでしょうか?私は左図のように出力されました。きちんと出力されているので 何の問題も無いようです。しかし、画面に表示させるだけでは計算を使用する機会がほとんどありません。そこで計算結果をほかのタグと連動させて見ましょう。 今回は、前回使用したwaitタグの追加記述timeへ計算結果を反映させます。 そのときは次のようなソースを書きます。



タグへの埋め込み

[eval exp="f.待ち時間 = 1000"]
[wait time="&f.待ち時間"]
他のタグへ数字を埋め込む事をエンティティといいます。エンティティを行う場合は&(半角アンパサンド)の後に変数名を記述します。 上のソースでは、1秒間の停止が実行されます。

[次へ進む]

Back to the Lesson([top]>[Lesson]>[Lesson7 数の利用編])