Клавиши управления

Учим корабль замечать нажатие и отпускание клавиши.

Кадр 2D-игры Лови звёзды

Цель урока: Запоминать, куда игрок хочет двигаться.

Как работать с примерами

Arcade запускается на компьютере. Первый урок показывает основу игрового файла; далее это фрагменты полной игры. Открой полный код и меняй в нём нужные строки. Кнопка онлайн IDE для этого проекта не используется.

Шаг 1 · Запомни нажатие

Клавиша не сдвигает корабль сама. Событие лишь запоминает желание двигаться.

Python
def on_key_press(self, key, modifiers):    if key in (arcade.key.LEFT, arcade.key.A):        self.left_pressed = True    elif key in (arcade.key.RIGHT, arcade.key.D):        self.right_pressed = True
Что увидишь
После нажатия A значение left_pressed становится True.

Что происходит в коде

  1. on_key_press Arcade вызывает, когда игрок нажимает кнопку.
  2. in проверяет два возможных варианта управления: стрелка или буква.
  3. True означает «эта клавиша сейчас нажата».

Шаг 2 · Не забудь отпускание

Если не вернуть False, корабль продолжит лететь после отпускания клавиши.

Python
def on_key_release(self, key, modifiers):    if key in (arcade.key.LEFT, arcade.key.A):        self.left_pressed = False    elif key in (arcade.key.RIGHT, arcade.key.D):        self.right_pressed = False
Что увидишь
После отпускания A значение left_pressed снова False.

Что происходит в коде

  1. on_key_release срабатывает при отпускании кнопки.
  2. False означает, что игрок больше не держит кнопку.
  3. Вместе две функции сохраняют текущее состояние клавиатуры.

Попробуй сам

  1. Найди обе функции в полном файле.
  2. Добавь клавишу J для движения влево.
  3. Предскажи, что случится, если убрать on_key_release().

Меняй одну строчку за раз, сохраняй файл и запускай игру на компьютере снова.

Как это работает в полной игре

В полном файле клавиши A/D и стрелки включают и выключают два флага. Следующий урок покажет, как эти флаги превращаются в движение.

Скачать проект Arcade
Заметка для преподавателя

Попросите детей удерживать карточку «влево», а потом опустить её. Это помогает объяснить разницу между событием нажатия и состоянием «кнопка удерживается».