Войти Создать аккаунт

Игра «2048» · Шаг 3 из 5

Сдвиг в любую сторону

Сжимать умеем только влево, поворачивать — только по часовой. Этого хватает на все четыре стрелки: повернуть поле так, чтобы нужная сторона оказалась слева, сжать каждый ряд и повернуть обратно. Обе умелки приходят аргументами — шаг сам их не пишет.

Что сделать

Сдвиньте всё поле в нужную сторону — поворотами и сжатием влево, без четырёх отдельных сдвигов.

Что приходит

  • pole — поле, список рядов; менять его нельзя

  • kuda — направление: "vlevo", "vniz", "vpravo" или "vverh"

  • szhat_ryad — ваш шаг 1, приходит аргументом

  • povernut — ваш шаг 2, приходит аргументом

Что вернуть

Пару (новое поле, очки): поле повёрнуто так, чтобы сторона оказалась слева, каждый ряд сжат, поле повёрнуто обратно; очки — сумма по рядам.

Допишите функцию sdvig в редакторе справа. Результат верните через return — то, что напечатано, на проверку не влияет.

В игре

Игра зовёт sdvig на каждую стрелку. Если поле не изменилось, ход не считается. Решите шаг — и плитки поедут во все четыре стороны.

Без этого шага: работает только «влево».

Пример

Поле 4×4, стрелка «влево». Поворачивать для неё не нужно, остаётся сжать каждый ряд: [0, 2, 0, 4] становится [2, 4, 0, 0], нижний ряд [0, 0, 2, 2] — [2, 2, 0, 0]. Функция возвращает новое поле и 0 очков.

В проверке вместо ваших первых шагов стоят подмены: szhat только прижимает плитки влево, без слияний и без очков, а povernut падает, если его позвали, — для «влево» поворот не нужен.

Готовая игра →

Ctrl+Enter — проверить

Обсуждение

Вопросов пока нет.

Войдите, чтобы спросить.