Доступ к элементам двумерного массива
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 13 из 78.
Чтобы обратиться к одной ячейке двумерного массива, используй два индекса: первый выбирает строку, второй — столбец в этой строке. Оба начинаются с 0.
var level := [
[1, 1, 1, 1],
[1, 0, 2, 1],
[1, 1, 1, 1]
]
print(level[1][2]) # 2 (строка 1, столбец 2)
print(level[0][0]) # 1level[1] возвращает строку [1, 0, 2, 1], а затем [2] выбирает индекс 2 этой строки. Отрицательные индексы отсчитываются с конца, как и в любом массиве: level[-1][-1] — это нижняя правая ячейка.
Присвойте значение ячейке, чтобы изменить её. Когда игрок подбирает монету, её клетка становится полом:
level[1][2] = 0
print(level[1]) # [1, 0, 0, 1]Индекс за пределами сетки — это ошибка, которая останавливает программу: level[3][0] приводит к сбою, потому что строки нумеруются от 0 до 2. Если индексы берутся из ввода или вычисляются, сначала проверь их на соответствие размеру сетки:
var row := 2
var col := 5
if row >= 0 and row < level.size() and col >= 0 and col < level[row].size():
print(level[row][col])
else:
print("Outside the map")Это выводит Outside the map, потому что столбца 5 не существует. and останавливается на первом условии, которое равно false, поэтому level[row] считывается, только если строка существует.
Задание
ЛегкоНапиши функцию с именем get_tile с тремя параметрами:
grid: двумерный массив целых чисел (объяви его какgrid: Array)row: индекс строкиcol: индекс столбца
Она возвращает значение в этой строке и столбце. Если row или col находится за пределами сетки (меньше 0 или не меньше количества строк или столбцов), она возвращает вместо него -1. Отрицательные индексы считаются выходящими за пределы.
Например, get_tile([[1, 2, 3], [4, 5, 6]], 1, 2) возвращает 6, а get_tile([[1, 2], [3, 4]], 2, 1) возвращает -1.
Тесты сами вызывают get_tile() и проверяют возвращаемое значение. Не вызывай её и ничего не выводи.
Попробуйте сами
func get_tile(grid: Array, row: int, col: int):
# Напишите код здесь
pass
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript