Ловим звёзды

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

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

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

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

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

Шаг 1 · Измерь расстояние

Звезда поймана, когда её центр оказался близко к центру корабля по x и y.

Python
ship_x = 450drop_x = 470drop_y = 80caught = abs(drop_x - ship_x) < 39 and abs(drop_y - 75) < 35print(caught)
Что увидишь
True

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

  1. abs() берёт расстояние без знака: 470 − 450 превращается в 20.
  2. Первая проверка смотрит близость по горизонтали, вторая — по вертикали.
  3. and требует, чтобы обе проверки были верны.

Шаг 2 · Начисли очко

При встрече со звездой убираем её с экрана и увеличиваем счёт.

Python
if caught:    self.drops.remove(drop)    if drop["kind"] == "star":        self.score += 1
Что увидишь
Счёт увеличивается на 1; пойманная звезда исчезает.

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

  1. Внешний if срабатывает только при столкновении.
  2. remove убирает предмет, чтобы он не засчитался дважды.
  3. Внутренний if начисляет очко только за звезду.

Попробуй сам

  1. Поставь drop_x = 600. Будет ли столкновение?
  2. Поменяй очки за звезду с 1 на 2.
  3. Найди в полном файле строку, где выводится счёт.

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

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

После каждого обновления игры проверяется расстояние до падающих предметов. Счёт на экране берётся из self.score.

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

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