Tiniest2Dで2Dゲームを作る
スクリプト言語の基礎
Lesson 6 of 11 • 10 XP
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を使用して値を返すこともできます。以下の例では、baseDamageとmultiplierがパラメータであり、関数は最終的なダメージの数値を返します。
func calculateDamage(baseDamage, multiplier) {
return baseDamage * multiplier
}
var damage = calculateDamage(10, 1.5) // 15