Игра «Тетрис» · Шаг 6 из 9
Убрать линии
Полные ряды исчезают, а всё, что было над ними, опускается. Ряд над одной убранной линией опускается на один, над двумя — на два: ровно на столько, сколько убрано линий под ним.
Что сделать
Уберите полные линии и опустите всё, что было над ними.
Что приходит
zanyato— словарь «клетка → вид фигуры»; менять его нельзяlinii— номера полных рядов
Что вернуть
Новый словарь без клеток полных рядов; клетка (r, c) опустилась на столько рядов, сколько полных ниже неё.
Допишите функцию ubrat_linii в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт ubrat_linii сразу после того, как нашла полные линии. Решите шаг — и после исчезнувшей линии верх стакана будет опускаться, а не висеть над дырой.
Без этого шага: линия исчезает, но верх не опускается — дыра.
sorted(ubrat_linii({(0, 1): "I", (1, 0): "T", (1, 1): "T", (2, 0): "O", (2, 1): "O"}, [2]).items())
[((1, 1), 'I'), ((2, 0), 'T'), ((2, 1), 'T')]
Функция принимает занятые клетки стакана — словарь «клетка → вид фигуры» — и список номеров полных рядов. Возвращает новый словарь: клеток из полных рядов в нём нет, а каждая остальная клетка (r, c) с тем же видом стоит на (r + k, c), где k — сколько полных рядов ниже неё (с номером больше r). Переданный словарь не меняется.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.