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 ではない場合、doend 内の処理を行い、
そして、以降はイテレータ関数 iter に arg1 と v1 を渡して呼び出します。

例:
<?
for k, v in pairs(t) do
  mes(k .. " = " .. tostring(v) .. "\n")
end
?>
上のコードをテキストオブジェクト内に記述すると
テーブル t の全ての要素の名前とその値を表示します。

pairs 関数は、
イテレータ関数として next 関数を、
arg1 として 渡された値 (obj) を、
arg2 として nil を返します。

while 文

whiledo
 ~
end
while 文は <式> が真の値を返す限り doend 内の処理を繰り返し続けます。

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

このWIKIを編集するにはパスワード入力が必要です

認証パスワード