2D 数组基础
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 12 课,共 78 课。
二维数组按行和列存储值,就像表格或游戏地图中的格子。在 GDScript 中,二维数组是一个元素为数组的数组:每个内层数组都是一行。
var level := [
[1, 1, 1, 1],
[1, 0, 2, 1],
[1, 1, 1, 1]
]在这张地图中,0 表示地板,1 表示墙,2 表示金币。每行写一行可以让网格更易读,GDScript 也支持将整个字面量写在一行中。
print() 会将二维数组显示在一行中,每一行都放在各自的方括号内:
print(level)[[1, 1, 1, 1], [1, 0, 2, 1], [1, 1, 1, 1]]外层数组上的 size() 会统计行数。level[0] 是第一行,它是一个普通数组,所以 level[0].size() 会统计列数:
print(level.size()) # 3 行
print(level[0].size()) # 4 列遍历外层数组的 for 循环每次会给你一行:
for row in level:
print(row)[1, 1, 1, 1]
[1, 0, 2, 1]
[1, 1, 1, 1]单元格可以是任意类型:[["X", "O"], ["O", "X"]] 是一个字符串网格。你也可以从一个空数组开始,然后用 append() 添加整行:
var board := []
board.append(["X", "O", "X"])
board.append(["O", "X", "O"])
print(board.size()) # 2挑战
简单构建一张小型地牢地图。创建一个名为 level 的二维数组,包含以下 4 行,顺序如下:
1 1 1 1 1
1 0 2 0 1
1 0 1 3 1
1 1 1 1 1每行都是一个包含 5 个数字的数组。然后,在给定的循环打印各行之前,使用 size() 打印行数和列数。输出必须是:
Rows: 4
Columns: 5
[1, 1, 1, 1, 1]
[1, 0, 2, 0, 1]
[1, 0, 1, 3, 1]
[1, 1, 1, 1, 1]亲手试试
extends Node
func _ready():
# 将 [] 替换为地牢地图
var level := []
# 在这里输出行数和列数
for row in level:
print(row)
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: GDScript 在线编译器