Menu
CoddyTech

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
challenge icon

挑战

简单

构建一张小型地牢地图。创建一个名为 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)
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: GDScript 在线编译器