Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

Tiniest Engineは、LuaとPythonに触発されたシンプルなスクリプティング言語を使用します。

変数

変数は、値を格納する名前付きのボックスです。変数を使用することで、情報を記憶し、後で再利用できるようになります。たとえば、ゲームではプレイヤーの健康、移動速度、スコア、または現在のインベントリを格納することができます。

新しい変数を作成するには、varを使用します。名前は左側に、値は右側に置きます。

var name = "Player One"    // 文字列
var health = 100           // 数字(整数)
var speed = 2.5            // 数字(浮動小数点)
var isAlive = true         // ブーリアン
var inventory = []         // 空のリスト
var nothing = null         // Null値(値がない)

コメント

コメントは人間のためのメモです。エンジンはゲームを実行する際にそれらを無視します。コメントを使用して、コードのセクションが何をしているのかを説明したり、自分へのリマインダーを残したり、一時的に難しいアイデアを説明したりします。

// これは単一行コメントです
var x = 10  // 行の末尾のコメント

演算子

演算子は値を結合する記号やキーワードです。算術演算子は数学を行い、比較演算子は質問をし、論理演算子は真/偽の回答を結合します。

ほとんどのゲームロジックは「Aキーが押されている場合は左に移動」や「プレイヤーが触れた場合はコインを集める」といった小さな式から構築されます。演算子はこれらの式を書くためのものです。

// 算術
var sum = 5 + 3        // 8
var diff = 10 - 4      // 6
var product = 3 * 4    // 12
var quotient = 15 / 3  // 5
var remainder = 17 % 5 // 2

// 比較
var equal = (5 == 5)       // true
var notEqual = (5 != 3)    // true
var greater = (10 > 5)     // true
var less = (3 < 7)         // true
var greaterEq = (5 >= 5)   // true
var lessEq = (3 <= 5)      // true

// 論理('and'と 'or'キーワードを使用、&&や||は使用しない)
var both = true and false   // false
var either = true or false  // true
var not = !true             // false

リスト

リストは、1つの変数に複数の値を格納します。敵、弾丸、コイン、チェックポイント、またはメニューオプションなど、同じ種類の多くのものがある場合に便利です。

角括弧を使用してリストを作成します。[]は空のリストを作成し、[1, 2, 3]は初期値を持つリストを作成します。リストのインデックスは0から始まるため、最初のアイテムはitems[0]になります。

var items = []
items.add("sword")         // リストの末尾に追加
items.add("shield")
items.add(42)

var numbers = [10, 20, 30]
var first = items[0]       // "sword"
numbers[1] = 99            // インデックスで上書き
var count = items.length() // 3

items.remove(0)            // インデックス0の要素を削除
items.clear()              // すべての要素を削除

インデックスループでリストを反復処理します:

for (var i = 0; i < items.length(); i = i + 1) {
    print(items[i])
}

If/Else文

if文は、ゲームが何をすべきかを選択させます。条件が真であれば、最初のブロックが実行されます。偽であれば、elseブロックが代わりに実行されることがあります。

これがゲームが状態に反応する方法です:もし健康がゼロであれば、ゲームオーバーを表示し、もしキーが押されたらジャンプし、もしスコアが十分に高ければ次のレベルをアンロックします。

if (health <= 0) {
    print("Game Over")
} else if (health < 25) {
    print("Low Health!")
} else {
    print("Health OK")
}

ループ

ループはコードを繰り返します。カウントしたり、リスト内のすべてのアイテムを処理したり、いくつかのオブジェクトを生成したり、条件が真の間ずっと何かを続けたりする場合に便利です。

条件が真である間繰り返したい場合は、whileループを使用します。範囲をカウントするか、インデックスでリストを歩くときは、forループを使用します。

Whileループ:

var i = 0
while (i < 10) {
    print(i)
    i = i + 1
}

Forループ:

for (var i = 0; i < 10; i = i + 1) {
    print(i)
}

Break文(ループを早期に抜ける):

for (var i = 0; i < 100; i = i + 1) {
    if (i == 5) {
        break  // iが5のときにループを終了
    }
    print(i)
}
// 出力:0, 1, 2, 3, 4

Continue文(次の反復にスキップ):

for (var i = 0; i < 5; i = i + 1) {
    if (i == 2) {
        continue  // iが2のときは出力をスキップ
    }
    print(i)
}
// 出力:0, 1, 3, 4

関数

関数は、名前を持つ再利用可能なコードのブロックです。特定のブロックを実行したいときに関数を呼び出します。関数はスクリプトを整理するのに役立ち、同じ命令をあちこちにコピーする必要がありません。

関数は、パラメータと呼ばれる値を受け取ることができます。また、returnを使用して値を返すこともできます。以下の例では、baseDamagemultiplierがパラメータであり、関数は最終的なダメージの数値を返します。

func calculateDamage(baseDamage, multiplier) {
    return baseDamage * multiplier
}

var damage = calculateDamage(10, 1.5)  // 15