Методичка · Оконная 2D-игра · Python Arcade

Аркадная игра: Лови звёзды: учителю

Это уже не консольный квест. На компьютере открывается игровое окно: ребёнок двигает корабль клавишами, ловит падающие звёзды и уклоняется от метеоритов. Мы разбираем рисунок, движение по кадрам, клавиши, столкновения, счёт и перезапуск.

01

За 30 секунд

Чтобы быстро решить, подходит ли проект для занятия.

Что делает ребёнок

Игрок управляет голубым кораблём клавишами A/D или стрелками. Жёлтые звёзды дают очки, красные метеориты отнимают жизни. Экран постоянно обновляется, поэтому это настоящая 2D-аркада.

К чему стремится

Собрать 10 звёзд раньше, чем закончатся три жизни. После победы или проигрыша клавиша R запускает новую попытку.

Кому подходит

После основных тем Python: переменные, условия, списки, словари и функции. Лучше проводить на компьютере с установленным Python и Arcade; браузерная Python IDE не открывает графические окна Arcade.

Формат

8 занятий по 40–60 минут. Сначала играем в готовый проект, затем меняем по одной механике и объясняем её код.

Как представить проект детям

«Сегодня мы создаём игру, которая живёт в отдельном окне. Корабль слушает клавиатуру, предметы падают каждый кадр, а программа решает, поймали мы звезду или метеорит. Начнём с окна и рисунка, затем добавим движение и правила победы.»

Что дети освоят

02

Первое занятие

Готовый сценарий на 45 минут, который можно взять прямо в класс.

Перед началом

  • На этом Mac движок Arcade 3.3.3 уже установлен в .venv-arcade внутри папки codeshool. Запустите файл «Играть — Лови звёзды.command» двойным нажатием.
  • На другом компьютере скачайте проект и установите зависимости из requirements.txt. Arcade требует обычное графическое окно и не запускается в онлайн IDE сайта.
  • Проверьте управление A/D или стрелками и клавишу R. Подготовьте рисунок системы координат: x вправо, y вверх.
  • Покажите скриншот игры на сайте, если игровой компьютер нельзя вывести на проектор.
  1. 0–7 мин
    Сыграйте вместе

    Пусть дети назовут три вещи, которые меняются на экране: положение корабля, счёт, жизни.

  2. 7–15 мин
    Покажите карту игры

    Окно рисует кадры, клавиши подают команды, on_update() меняет координаты.

  3. 15–30 мин
    Разберите урок 1

    Запустите минимальное окно и поменяйте его заголовок и цвет фона.

  4. 30–43 мин
    Дайте мини-задачу

    Пусть дети найдут WIDTH, HEIGHT и background_color, затем покажут свой вариант окна.

  5. 43–50 мин
    Проверьте понимание

    Спросите, что делает arcade.run() и в какой момент появляется окно.

Скачать проект для компьютера
03

Карта всех уроков

Одна тема, один вопрос классу и одна методическая подсказка на каждый шаг.

01

Первое игровое окно

Открываем настоящее окно игры вместо текстовой консоли.

Arcade · Window · run()

Цель: Запустить простое окно 900 × 600 на компьютере.

Спросите: Что появляется вместо текстовой консоли?

Ожидаемый ответ: Отдельное окно игры, созданное через arcade.Window.

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

02

Рисуем корабль

Собираем героя из простых цветных фигур.

координаты · on_draw()

Цель: Понять, как на экране появляются фигуры по координатам.

Спросите: Где находится точка (0, 0)?

Ожидаемый ответ: В левом нижнем углу игрового окна.

Подсказка: Нарисуйте оси x и y на доске. В Arcade ноль координат находится слева внизу. Попросите детей показать, как сдвинуть корабль вправо на 50 пикселей.

03

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

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

события · on_key_press()

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

Спросите: Почему нужна on_key_release()?

Ожидаемый ответ: Она сообщает игре, что кнопку отпустили, и корабль должен остановиться.

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

04

Движение по кадрам

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

on_update() · delta_time

Цель: Связать удержание клавиши с перемещением каждого кадра.

Спросите: Для чего умножать скорость на delta_time?

Ожидаемый ответ: Чтобы движение зависело от прошедшего времени, а не от числа кадров.

Подсказка: Объясните delta_time через секундомер: машина может рисовать 30 или 60 кадров, но за одну секунду корабль должен пройти примерно одинаковое расстояние.

05

Падающие звёзды

Создаём объекты со случайным x и опускаем их вниз.

список · словарь · random

Цель: Хранить много падающих предметов и менять их координаты.

Спросите: Где хранятся все падающие предметы?

Ожидаемый ответ: В списке self.drops; каждый элемент — словарь с координатами, видом и скоростью.

Подсказка: Для первого объяснения можно нарисовать список из двух словарей на доске. Случайность влияет на вид и место падения, но правило движения одинаково для всех.

06

Ловим звёзды

Проверяем встречу корабля и звезды, добавляем очко.

столкновение · abs() · счёт

Цель: Распознать близость объектов по их координатам.

Спросите: Как узнать, что корабль поймал звезду?

Ожидаемый ответ: Сравнить расстояния по x и y: оба должны быть достаточно маленькими.

Подсказка: Положите два кружка на координатную сетку. Сначала проверьте расстояние по x, потом по y. Подчеркните, что обе проверки нужны одновременно.

07

Метеориты и жизни

Добавляем опасность и условие проигрыша.

ветвление · lives · состояние

Цель: Обработать два вида столкновения по-разному.

Спросите: Что делает метеорит?

Ожидаемый ответ: Отнимает одну жизнь; при нуле игра переходит в состояние lost.

Подсказка: Покажите на доске таблицу: star → score +1, meteor → lives -1. Спросите, почему проверка конца игры стоит после обработки столкновений.

08

Победа и новый старт

Заканчиваем аркаду и даём игроку начать заново.

цель · restart() · сборка

Цель: Сыграть в законченную игру и изменить одно правило.

Спросите: Что вернёт новый раунд после R?

Ожидаемый ответ: restart() сбросит положение, предметы, счёт, жизни и состояние игры.

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

04

Если что-то пошло не так

Типичные места, на которых дети останавливаются.

Игра не открывается в браузере

Arcade создаёт окно на компьютере. На сайте доступны уроки, скриншот и файл игры, но для запуска нужна локальная установка.

Пример не запускается отдельно

Со второго урока блоки кода — фрагменты полного файла. Открывайте main.py и изменяйте в нём соответствующий участок.

Корабль летит сам

Проверьте on_key_release(): при отпускании клавиши соответствующий флаг должен стать False.

Скорость зависит от компьютера

В on_update() сдвиг умножается на delta_time — время с прошлого кадра.

Открыть первый урок Вернуться к проекту