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         // 空值(无值)

注释

注释是供人类阅读的注释。当游戏运行时引擎会忽略它们。使用注释来解释代码的某个部分在做什么,为自己留下提醒,或临时描述一个复杂的想法。

// 这是一个单行注释
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, 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 (health <= 0) {
    print("Game Over")
} else if (health < 25) {
    print("低生命值!")
} else {
    print("生命值正常")
}

循环

循环重复代码。当你想计算、处理列表中的每个项目、生成多个对象,或者在条件仍然为真时保持执行某事时,它们非常有用。

当你想在条件为真时重复时,使用 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