タイトルなんかおかしくない? | |
細かいことは気にしない。 | |
とっても変だと思うんだけど・・・ | |
変数はゲームを作る上で、すっっっっごく大切だから、今回はしっかり勉強してね。 | |
うへぇ・・・勉強かぁ・・・ | |
変数って何か分かる? | |
なんとなく・・・ | |
KAGのリファレンスによると「なにかを記憶させておく物」ってことね。 もう少し言うと・・・ KAG の変数の種類には 3 つあります。栞のセーブとロードとともにセーブ・ロードされる普通の「ゲーム変数」と、栞のセーブ・ロードとは関係なしに、常に値を保持できる「システム変数」、一時的に値をおいておくための「一時変数」があります。(リファレンスより抜粋) |
|
手抜きしたね・・・ | |
普通にゲームを作る時に使う変数は「ゲーム変数」を使うの。キャラクタのパラメータとかね。 「システム変数」はずっと記憶されるものだから、たとえばどのエンディングをクリアしたとか、どのCGを見たとか、このシステム変数に記憶しておけば、回想モードとかに使えるよね。 | |
一時変数は? | |
まったく保存されないから、その時だけ必要なものに使うといいよ。 | |
そんなのあるの? | |
計算式の値を入れたり、他にもいろいろ使い道はあるよ。 | |
ふーん・・・ | |
変数は自分で好きな名前をつけることができるんだけど、最初に半角の数字がきちゃダメなの。あと、使える文字は半角の英数と_(アンダースコア)、全角文字(日本語)だから、-とか@とか.とかの記号は使えないよ。 | |
どんな名前でもいいの? | |
うん、自分で分かりやすい名前にしようね。 あと、ゲーム変数は変数の名前の前に f. をつける事を忘れないで。 | |
f.hogehoge みたいな感じでいいの? | |
そう。 それから、一時変数は、 tf. をつけて、システム変数には sf. をつけるの。 |
|
そもそも、変数って何をするためにあるの? | |
何って一言で言うのは難しいけど、ゲームだったらパラメータとか、データを保存しておくため・・・かな。 いろいろ計算もできるしね。 |
|
うーん・・・ | |
じゃあ、変数を扱うためのタグを使ってみようよ。 実際に使ってみたら少し分かるかも。 |
|
うん。分かった。 | |
変数を使う上で、一番基本的なタグは eval と emb タグね。 eval は式を評価するタグで、embは評価した結果を表示するためのタグなの。 | |
評価って? | |
簡単に言っちゃうと計算するってことかな。 | |
それなら分かるよ。 | |
じゃあ、試しにサンプルを実行してみようか。 | |
*start [eval exp="f.h1=10"] [eval exp="f.h2=5"] [eval exp="f.h3=f.h1+f.h2"] [emb exp="f.h1"]足す[emb exp="f.h2"]は[emb exp="f.h3"][r] [r] [eval exp="f.a='吉里吉里'"] [eval exp="f.b='/KAG'"] [eval exp="f.c=f.a+f.b"] [emb exp="f.c"] |
|
文字も足し算できるの? | |
吉里吉里では文字列を足すと、文字列を結合してくれるの。 上のサンプルの結果で分かるよね。 |
|
うん。 | |
変数を使って、タグの属性を指定することもできるんだよ。 例えば、こんな感じ。 |
|
*start [image storage="shikaku.png" layer=0 page=fore left=100 top=100 visible=true] 四角を移動します。[l] [eval exp="tf.left=300"] [eval exp="tf.top=300"] [layopt layer=0 page=fore left=&tf.left top=&tf.top] |
|
最後の行のlayoptタグの中で、変数に&が付いてるでしょ。 エンティティって言うんだけどね、これで変数の内容を属性に渡すことができるの。 |
|
なるほど・・・ これを使えばいろいろできそうだね。 |
|
例えば・・・ | |
*start [image storage="shikaku.png" layer=0 page=fore left=0 top=0 visible=true] [eval exp="f.x=0"] [eval exp="f.y=0"] *loop [layopt layer=0 page=fore left=&f.x top=&f.y] [eval exp="f.x=f.x+10"] [eval exp="f.y=f.y+5"] [wait time=100] [jump target="*loop"] |
|
わぁ!動いた! | |
普通は、レイヤを動かすためのタグがあるからそれを使うんだけど、やろうと思えばこういうこともできるわけ。 | |
すごいねぇ。 なんでもできる気がしてきたよ。 |
|
今回は eval タグが2つか3つくらいしか続かないけど、evalタグをたくさん書くときは、次のように書く方法もあるから、覚えておくといいよ。 | |
その1:,(カンマ)でつなげる
[eval exp="f.x=0, f.y=0"] その2:iscriptタグを使う [iscript] f.x=0; f.y=0; [endscript] |
|
この方法を使うと evalタグをいくつも書くより処理速度が速くなるの。 | |
iscriptタグってなに? | |
TJSスクリプトをKAGのシナリオの中に書くためのタグなの。 | |
TJS?? なんか聞いたことあるようなないような・・・ |
|
吉里吉里を使うためのスクリプト言語よ。 TJSについてはここでは詳しくやらないけど、少しは知っておいた方がいいかもね。 |
|
次々に新しいことが出てくるなぁ・・・ | |
大丈夫、今回はここまでだから。 次回は、いよいよ条件分岐のお話ね。 |