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

Игра «Змейка» · Шаг 5 из 5

Очередь нажатий

Змейка сворачивает только на такте, раз в сто пятьдесят миллисекунд. Опытный игрок успевает между тактами нажать два поворота — «вверх» и сразу «влево», чтобы обогнуть угол. Если помнить только последнее нажатие, «вверх» потеряется, и змейка вместо поворота на месте поедет влево — прямо в себя. Нажатия надо складывать в очередь, а на каждом такте забирать из неё по одному.

Что сделать

Запоминайте нажатия в очереди, чтобы два быстрых поворота между тактами сработали оба.

Что приходит

  • ochered — очередь ещё не сработавших нажатий, deque или список; менять её нельзя

  • klavisha — новое нажатие

Что вернуть

Новую очередь deque с клавишей в конце; не меняется, если в ней уже три нажатия или клавиша та же, что последняя, или противоположна ей.

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

В игре

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

Без этого шага: запоминается только последнее нажатие, и два быстрых поворота между тактами сливаются в один.

Вызов
zapomnit([], "vverh")
Вернуть
deque(['vverh'])

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

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

Обсуждение

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

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