Движение по кадрам
Передвигаем корабль плавно и не выпускаем его за край экрана.

Цель урока: Связать удержание клавиши с перемещением каждого кадра.
Arcade запускается на компьютере. Первый урок показывает основу игрового файла; далее это фрагменты полной игры. Открой полный код и меняй в нём нужные строки. Кнопка онлайн IDE для этого проекта не используется.
Шаг 1 · Вычисли направление
Если нажато вправо, добавляем 1; если влево — вычитаем 1.
left_pressed = Falseright_pressed = Truedirection = int(right_pressed) - int(left_pressed)print(direction)1
Что происходит в коде
- int(True) превращается в 1, int(False) — в 0.
- 1 − 0 даёт направление вправо.
- Когда обе клавиши отпущены, направление равно нулю.
Шаг 2 · Сделай движение ровным
on_update получает время с прошлого кадра. Умножение на delta_time сохраняет похожую скорость на разных компьютерах.
direction = int(self.right_pressed) - int(self.left_pressed)self.ship_x += direction * SHIP_SPEED * delta_timeself.ship_x = max(35, min(WIDTH - 35, self.ship_x))Корабль движется в нужную сторону и останавливается у края.
Что происходит в коде
- direction выбирает лево, право или стоять на месте.
- SHIP_SPEED * delta_time превращает скорость «пиксели в секунду» в сдвиг за один кадр.
- min и max ограничивают x так, чтобы корабль не вылетел за экран.
Попробуй сам
- Уменьши SHIP_SPEED с 420 до 250 и сравни движение.
- Найди правую границу, если ширина окна 900.
- Предскажи direction, когда нажаты сразу обе клавиши.
Меняй одну строчку за раз, сохраняй файл и запускай игру на компьютере снова.
Как это работает в полной игре
on_update() полной игры вызывается многократно. В нём перемещается корабль и проверяются падающие предметы.
Скачать проект ArcadeЗаметка для преподавателя
Объясните delta_time через секундомер: машина может рисовать 30 или 60 кадров, но за одну секунду корабль должен пройти примерно одинаковое расстояние.