使用 Tiniest2D 制作 2D 游戏
脚本语言基础
Lesson 6 of 11 • 10 XP
简体中文 (Simplified Chinese)
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 返回一个值。在下面的示例中,baseDamage 和 multiplier 是参数,函数返回最终的伤害值。
func calculateDamage(baseDamage, multiplier) {
return baseDamage * multiplier
}
var damage = calculateDamage(10, 1.5) // 15