Menu
CoddyTech

Основы двумерных массивов

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 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