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

Цель урока: Обработать два вида столкновения по-разному.
Arcade запускается на компьютере. Первый урок показывает основу игрового файла; далее это фрагменты полной игры. Открой полный код и меняй в нём нужные строки. Кнопка онлайн IDE для этого проекта не используется.
Шаг 1 · Раздели награду и опасность
При столкновении звезда даёт очко, метеорит отнимает жизнь.
if drop["kind"] == "star": self.score += 1else: self.lives -= 1Звезда: +1 к счёту. Метеорит: −1 жизнь.
Что происходит в коде
- Словарь drop хранит вид предмета по ключу kind.
- Если это star, увеличиваем счёт.
- Для любого другого вида здесь срабатывает else и уменьшается число жизней.
Шаг 2 · Останови игру после трёх ударов
Когда жизни закончились, состояние игры меняется с playing на lost.
if self.lives <= 0: self.state = "lost"if self.state != "playing": returnДвижение останавливается, появляется экран проигрыша.
Что происходит в коде
- <= 0 учитывает ноль и отрицательные значения.
- state хранит этап игры: playing или lost.
- В начале on_update() return прекращает обновление, если игра закончилась.
Попробуй сам
- Измени начальное число жизней на 5.
- Врежься в три метеорита и проверь экран проигрыша.
- Объясни, почему после проигрыша падающие предметы останавливаются.
Меняй одну строчку за раз, сохраняй файл и запускай игру на компьютере снова.
Как это работает в полной игре
В полном файле у игрока три жизни. Красный метеорит отнимает одну; состояние lost останавливает движение, но окно остаётся открытым.
Скачать проект ArcadeЗаметка для преподавателя
Покажите на доске таблицу: star → score +1, meteor → lives -1. Спросите, почему проверка конца игры стоит после обработки столкновений.