変数させるのだ


タイトルなんかおかしくない?
細かいことは気にしない。
とっても変だと思うんだけど・・・
変数はゲームを作る上で、すっっっっごく大切だから、今回はしっかり勉強してね。
うへぇ・・・勉強かぁ・・・
変数って何か分かる?
なんとなく・・・
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についてはここでは詳しくやらないけど、少しは知っておいた方がいいかもね。
次々に新しいことが出てくるなぁ・・・
大丈夫、今回はここまでだから。
次回は、いよいよ条件分岐のお話ね。


前のページ | MENU | 次のページ



inserted by FC2 system