Lua入門(簡易版)

ここでは次項のチュートリアルを進める上で最低限必要となるプログラミング用語やその記述例について記述していく。
より詳しく知りたい方はプログラミング入門的なサイトがたくさんあるので調べてほしい。

■コメント文

スクリプト文中において、ここでは何を記述しているのかコメントをつけることができる。
Luaではハイフンをふたつ続けて書くと以降がコメント文として機能する。
discard = 0 -- 捨て札の枚数カウント用

また、行頭にシャープ"#"を記述するとその行が丸々コメント行となる。
# 変数宣言
discard = 0

ハイフンふたつと角括弧ふたつを記述することで複数行コメントとなる。
--[[
ここはコメント文
ここはコメント文
]]

■変数

ある何かについての値を保存しておくための入れ物。
入れ物にはそれぞれ名前を付け、呼び出すときには名前を呼ぶ。
プログラミングにおけるイコールは等号ではなく、代入用の演算子として用いられる。
つまり、イコールで接続された左辺に右辺の値を代入する、という処理になる。
round = 1 -- ラウンド数カウント用
print(round) -- 画面に変数roundの中身を表示(1の表示)
round = round + 1 -- ラウンド数のカウントアップ
print(round) -- 画面に変数roundの中身を表示(2の表示)

変数には型(Type)と呼ばれる入れ物の種類を持っている。
数字用の型の変数には数字を、文字列用の型の変数には文字列を入れることができる。
Luaでは型の宣言は不要となっており、代入された値にあった型が自動的に選ばれている。

変数の命名には以下の制約があるが、基本的にどのような名前でも良い。
あとから見返した時になんの変数か分かりやすいものをつけよう。
  • 変数の名前の先頭は英字かアンダーバー(_)であること。(数字は不可)
  • すでに使用されている名前ではないこと。
※Lua内で最初から使用されている名前も付けることはできない。(例:endなど)

■関数

関数とはある一定の処理をまとめたもの。
Luaでは function ~ end で区切られている。
なんども繰り返す処理がある場合はその単位で区切るとよい。
例えば、初期セットアップ、ラウンド終了処理、点数計算などで分ける。
関数の名前も基本的に自由に付与できるが、変数と同様の制約がある。
function sample()
    print("サンプル関数")
end

関数はゲーム内の特定の処理をトリガーにして呼び出されるものがある。
function onLoad()
    Print("この関数はゲーム/オブジェクトが呼び出された瞬間に実行される")
end

関数内から他の関数を呼び出すこともできる。
function onLoad()
    deck = self.call("getDeck")
end

function getDeck() -- 最初に見つかったデッキを返す
    local objects = getAllObjects()
    for index, object in ipairs(objects) do
        if object.tag == "Deck" then
            return object
        end
    end
end

■条件分岐

ある一定の条件の場合にのみ実行したい処理を記述することができる。
Luaでは if ~ end で区切られる。
if文の後に条件式を書き、その条件に当てはまる場合に実行する処理を続けて書く。
複数の条件を設定したい場合は elseif を、いずれの条件にも当てはまらない場合は else を用いる。
if playerNum == 3 then
    print("3人プレイ")
elseif playerNum == 4 then
    print("4人プレイ")
else
    print("プレイヤー人数が正しくありません")
end

条件式は次の比較演算子を使うことができる。
演算子 説明
== 左辺と右辺が等しい
~= 左辺と右辺が等しくない
< 左辺が右辺よりも小さい
<= 左辺が右辺よりも小さい、または等しい
> 左辺が右辺よりも大きい
>= 左辺が右辺よりも大きい、または等しい

また、条件式の結果trueが返れば良いので変数を条件式とすることもできる。
flag = true
if flag then
    print("flagはtlue")
else
    print("flagはfalse")
end

■ループ処理

ループ終了条件を満たすまで一定回数繰り返したい時に使用する。

規定回数ループ
for i=1,10,1 do
    print(i)
end

終了条件を満たすまでループ
for i,v in ipair(getAllObjects()) do
    print(v.getName())
end
または
i = 0
while i < 5 do
    print(i)
    i = i + 1
end

タグ:

+ タグ編集
  • タグ:
最終更新:2020年10月07日 18:53