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

Цель урока: Хранить много падающих предметов и менять их координаты.
Arcade запускается на компьютере. Первый урок показывает основу игрового файла; далее это фрагменты полной игры. Открой полный код и меняй в нём нужные строки. Кнопка онлайн IDE для этого проекта не используется.
Шаг 1 · Появление нового предмета
Каждый предмет — словарь с координатами, видом и скоростью. Словари лежат в списке drops.
self.drops.append({ "x": random.randrange(35, WIDTH - 35), "y": HEIGHT + 20, "kind": random.choice(("star", "star", "star", "meteor")), "speed": random.randrange(175, 255),})Над верхним краем появляется звезда или метеорит.
Что происходит в коде
- append добавляет новый словарь в список drops.
- x выбирается случайно по ширине окна, y начинается выше верхнего края.
- Три слова star и одно meteor делают звёзды чаще метеоритов.
Шаг 2 · Опускай предметы
На каждом обновлении уменьшаем y. Если предмет ушёл за нижний край, удаляем его.
for drop in self.drops[:]: drop["y"] -= drop["speed"] * delta_time if drop["y"] < -20: self.drops.remove(drop)Предметы падают вниз и исчезают под экраном.
Что происходит в коде
- for перебирает копию списка: [:] создаёт её, чтобы можно было удалять элементы.
- Уменьшение y двигает объект вниз.
- После ухода ниже -20 объект больше не нужен в памяти игры.
Попробуй сам
- Сделай звёзды чаще, добавив ещё одно слово star.
- Измени диапазон скоростей и посмотри на результат.
- Объясни, почему новый предмет начинается с y = HEIGHT + 20.
Меняй одну строчку за раз, сохраняй файл и запускай игру на компьютере снова.
Как это работает в полной игре
Полная игра создаёт новый объект примерно каждые 0,65 секунды и обновляет все объекты внутри on_update().
Скачать проект ArcadeЗаметка для преподавателя
Для первого объяснения можно нарисовать список из двух словарей на доске. Случайность влияет на вид и место падения, но правило движения одинаково для всех.