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

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

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

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

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

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

Шаг 1 · Проверь цель

После десяти пойманных звёзд игра переходит в состояние won.

Python
GOAL = 10if self.lives <= 0:    self.state = "lost"elif self.score >= GOAL:    self.state = "won"
Что увидишь
После 10 звёзд появляется сообщение «ПОБЕДА!». 

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

  1. Сначала проверяем проигрыш — жизни закончились.
  2. elif проверяет победу, если проигрыша нет.
  3. state = won сообщает on_draw(), какой экран показать.

Шаг 2 · Начни новую попытку

Клавиша R вызывает функцию, которая сбрасывает всё игровое состояние.

Python
def restart(self):    self.ship_x = WIDTH / 2    self.drops = []    self.score = 0    self.lives = 3    self.state = "playing"def on_key_press(self, key, modifiers):    if key == arcade.key.R:        self.restart()
Что увидишь
Корабль снова в центре, счёт 0, жизни 3, можно играть заново.

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

  1. restart возвращает начальные значения; в полном файле она также сбрасывает клавиши и таймер.
  2. Проверка key == arcade.key.R узнаёт кнопку R.
  3. self.restart() вызывает функцию, и новый раунд начинается без закрытия окна.

Попробуй сам

  1. Победи, собрав 10 звёзд. Нажми R и начни заново.
  2. Поменяй GOAL на 5 и сравни длительность игры.
  3. Придумай новое правило: например, особая синяя звезда даёт два очка.

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

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

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

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

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