Глава 21 · Проект: космический шутер

Полный код

Вся игра целиком — уже собранная и проверенная — и подведение итогов главы.

Полная, уже собранная и проверенная игра — отдельным файлом:

📄 projects/pygame/space-shooter/space_shooter.py

Запустите игру у себя
python space_shooter.py в терминале. Управление: стрелки влево/вправо — движение, пробел — выстрел.
★★ Самостоятельная задача
Жизни вместо мгновенного конца

Добавьте переменную zhizni = 3 — при столкновении корабля с врагом отнимайте одну жизнь и убирайте врага, вместо немедленного окончания игры.

★★★ Задача повышенной сложности
Уровни сложности

Постепенно уменьшайте INTERVAL_POYAVLENIYA_VRAGA по мере роста счёта — враги должны появляться всё чаще.

Итоги

Что мы узнали в этой главе

  • Крупный проект строится из уже знакомых, более мелких приёмов — корабль, враги и пули устроены похоже, просто с разными правилами движения.
  • pygame.Rect хранит позицию и размер вместе и умеет проверять столкновения через .colliderect().
  • При удалении элементов по условию безопаснее собрать новый список уцелевших элементов, чем изменять список во время перебора.
  • Текст в Pygame рисуется в два шага: render() создаёт изображение, blit() накладывает его на экран.
  • Порядок отрисовки элементов кадра определяет, что окажется «поверх» — рисуйте фон первым, интерфейс (счёт, финальный экран) — последним.