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

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

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

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

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

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

Шаг 1 · Появление нового предмета

Каждый предмет — словарь с координатами, видом и скоростью. Словари лежат в списке drops.

Python
self.drops.append({    "x": random.randrange(35, WIDTH - 35),    "y": HEIGHT + 20,    "kind": random.choice(("star", "star", "star", "meteor")),    "speed": random.randrange(175, 255),})
Что увидишь
Над верхним краем появляется звезда или метеорит.

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

  1. append добавляет новый словарь в список drops.
  2. x выбирается случайно по ширине окна, y начинается выше верхнего края.
  3. Три слова star и одно meteor делают звёзды чаще метеоритов.

Шаг 2 · Опускай предметы

На каждом обновлении уменьшаем y. Если предмет ушёл за нижний край, удаляем его.

Python
for drop in self.drops[:]:    drop["y"] -= drop["speed"] * delta_time    if drop["y"] < -20:        self.drops.remove(drop)
Что увидишь
Предметы падают вниз и исчезают под экраном.

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

  1. for перебирает копию списка: [:] создаёт её, чтобы можно было удалять элементы.
  2. Уменьшение y двигает объект вниз.
  3. После ухода ниже -20 объект больше не нужен в памяти игры.

Попробуй сам

  1. Сделай звёзды чаще, добавив ещё одно слово star.
  2. Измени диапазон скоростей и посмотри на результат.
  3. Объясни, почему новый предмет начинается с y = HEIGHT + 20.

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

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

Полная игра создаёт новый объект примерно каждые 0,65 секунды и обновляет все объекты внутри on_update().

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

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