Игра «Тетрис» · Шаг 8 из 9
Куда упадёт
Пробел роняет фигуру до дна, а тень заранее показывает, где она окажется. И то и другое — один вопрос: на сколько рядов фигура может опуститься, пока не упрётся? Ответ зависит от стакана — поэтому «можно ли так поставить» приходит готовой функцией.
Что сделать
Узнайте, на сколько рядов фигура может опуститься, пока не упрётся, — для тени и падения по пробелу.
Что приходит
kletki— клетки фигурыmozhno— функция: клетки → можно ли так поставить
Что вернуть
Наибольшее k ≥ 0, при котором фигура встаёт на каждой глубине от 1 до k.
Допишите функцию glubina_padeniya в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В игре
Игра зовёт glubina_padeniya дважды: чтобы нарисовать тень под фигурой и чтобы уронить фигуру до дна по пробелу. Решите шаг — и появятся тень и быстрое падение.
Без этого шага: тени нет, пробел никуда не роняет — фигура ложится там, где была.
Фигура — две клетки в ряду 0. В проверке mozhno — подмена: ставить можно всё, что выше ряда 5. Фигура опускается на 1, 2, 3, 4 ряда, а на 5 уже нельзя — функция возвращает 4.
Функция принимает клетки фигуры и функцию mozhno (клетки → True, если так поставить можно). Возвращает наибольшее k ≥ 0 такое, что фигура, опущенная на 1, на 2, … на k рядов, каждый раз встаёт: mozhno от клеток с рядом, увеличенным на k, — True.
Образцовый тест целиком
def mozhno(kletki):
return all(r < 5 for r, c in kletki)
glubina_padeniya([(0, 0), (0, 1)], mozhno)
4
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.