Игра «Сапёр» · Шаг 4 из 5
Открыть пустую область
Щелчок по клетке, рядом с которой мин нет, открывает не одну клетку, а всю пустую область вокруг — вместе с каёмкой из чисел. Ровно так растекается вода по лужам: от пустой клетки — во все стороны, пока не упрётся в числа.
Что сделать
Откройте клетку по щелчку — а если рядом пусто, растеките открытие по всей пустой области.
Что приходит
strokaиstolbec— куда щёлкнулиchisla— поле чисел из шага 3,-1— минаotkryto— список уже открытых клеток
Что вернуть
Клетки, открытые этим щелчком, по рядам и столбцам: сама клетка, а у нуля — соседи и дальше от каждого нуля; мина или уже открыта — [].
Допишите функцию otkryt в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт otkryt на каждый щелчок по закрытой клетке. Решите шаг — и щелчок по пустому месту раскроет всю пустую область вместе с каёмкой из чисел.
Без этого шага: открывается только та клетка, по которой щёлкнули.
Щелчок по (0, 0): там ноль, и открываются соседи; среди них снова нули — открываются и их соседи. Всё расходится, пока не упрётся в числа. Мина в углу (3, 3) остаётся закрытой.
otkryt(0, 0, [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 1, 1], [0, 0, 1, -1]], [])
[(0, 0), (0, 1), (0, 2), (0, 3), (1, 0), (1, 1), (1, 2), (1, 3), (2, 0), (2, 1), (2, 2), (2, 3), (3, 0), (3, 1), (3, 2)]
Функция принимает клетку (ряд, столбец), поле чисел (как в шаге 3: −1 — мина) и список уже открытых клеток. Возвращает список клеток, которые этот щелчок открывает заново, упорядоченный по рядам и столбцам:
- если клетка уже открыта или в ней мина — пустой список;
- иначе открывается она сама;
- если у открытой клетки число 0, открываются и все её соседи (из восьми), кроме мин и уже открытых; от каждого открывшегося нуля — дальше так же.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.