Lua構文
if文
if(条件) then
条件が真の場合の処理
else
条件が偽の場合の処理
end
場合分けをしたい場合に使います。
以下のスクリプトでは、オブジェクト基準での時間が2秒より小さい時は、大きさ1/2倍、それ以外の時は2倍になります。
if(obj.time < 2) then --もし時間が2秒より小さい場合は
obj.zoom = obj.zoom *0.5 --大きさを0.5倍にする
else --それ以外の場合は
obj.zoom = obj.zoom *2 --大きさを2倍にする
end --終り
elseif
複数の場合分けをする場合に使用。elseifは好きなだけ増やすことができます。
if(obj.time < 2) then --もし時間が2秒より小さい場合は
obj.zoom = obj.zoom *0.5 --大きさを0.5倍にする
elseif(obj.time < 5) then --時間が2秒より小さい場合以外で、5秒より小さい場合は
obj.zoom = obj.zoom *5 --大きさを5倍にする
else --それ以外の場合は
obj.zoom = obj.zoom *2 --大きさを2倍にする
end --終り
for文
for i=0,n do
~
end
スクリプトの処理を繰り返します。
オブジェクトを複数描画する場合などに使用。
以下のスクリプトでは、スクリプトが、i=0場合、i=1、…i=4の場合と繰り返し適用され、オブジェクトが右に5つ間隔50で描画されます。
for i=0,4 do --「i」を0~4まで繰り返す
x = obj.ox + 50*i --スクリプト
obj.draw(x,0) --オブジェクトを記載する
end --終り
汎用 for 文
for v1 [, ...] in iter [, arg1 [, arg2]] do
~
end
このループは、まず最初にイテレータ関数 iter に arg1 と arg2 を渡して呼び出し、
その戻り値を v1 以降のローカル変数に格納します。
v1 が nil だった場合、そこでループは終了します。
v1 が nil ではない場合、do ~ end 内の処理を行い、
そして、以降はイテレータ関数 iter に arg1 と v1 を渡して呼び出します。
例:
<? for k, v in pairs(t) do mes(k .. " = " .. tostring(v) .. "\n") end ?>
上のコードをテキストオブジェクト内に記述すると
テーブル t の全ての要素の名前とその値を表示します。
pairs 関数は、
イテレータ関数として next 関数を、
arg1 として 渡された値 (obj) を、
arg2 として nil を返します。
while 文
while 式 do
~
end
while 文は <式> が真の値を返す限り do ~ end 内の処理を繰り返し続けます。
repeat 文
repeat
~
until 式
repeat 文は <式> が偽の値を返す限り処理を繰り返し続けます。
ループ開始時に既に <式> が真だったとしても、最低1回は処理が行われます。
break 文
各種ループから脱出します
関数の定義
function 関数名(引数)
~
end
関数を自分で定義することで、同じ処理を簡単に繰り返すことが出来ます。
--"test"という名前の関数の定義。変数はx,yの2つに設定。
function test(x,y)
obj.load("figure","四角形",0xffffff,100)
obj.draw(x,y,0,1,1,0,0,45)
end
--あとは下のように記述するだけで実行されます。
test(0,0)
test(200,50)
戻り値を定義するケース
<?
function test2(x,y)
t=x^2+y^2
return t
end
n=test2(2,3)
mes(n) --このとき戻り値は、n=2^2+3^2→13となります。
?>
配列
配列は次のようにして定義します。
word={"a","b","c","d"}
配列の数は「#word」で表せます。
配列の保存
配列を保存し、その配列を使用してスクリプトを作成します。
x={} --配列を初期化
idx=0 --インデックス初期値
for i=0,5 do
xx=2^i
idx=idx+1 --インデックスは1ずつ増えていく
x[idx]=xx --xxの値が配列に保存される
end
- このとき配列の内容はこのようになります。
x={1,2,4,8,16,32}
- 配列を呼び出すときは"x[1]"のように使用します。
x[1]→1 x[2]→2 x[3]→4 x[4]→8 x[5]→16 x[6]→32
- 最終更新:2013-01-29 08:16:00