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

Завершение игры и экран «Игра окончена»

Каждый кадр рисуется заново целиком — а при окончании игры на экране появляется финальная надпись.

Рисуем кадр заново

После всех проверок и обновлений кадр рисуется заново целиком — фон, корабль, пули, враги и счёт, в таком порядке (чтобы более поздние элементы оказывались поверх более ранних):

pererisovka.py
screen.fill((10, 10, 20))
pygame.draw.rect(screen, (80, 220, 120), korabl)
for pulya in puli:
    pygame.draw.rect(screen, (240, 220, 80), pulya)
for vrag in vragi:
    pygame.draw.rect(screen, (230, 60, 60), vrag)

tablo = shrift.render(f"Счёт: {schet}", True, (255, 255, 255))
screen.blit(tablo, (10, 10))

pygame.display.flip()

Экран «Игра окончена»

Когда igra_okonchena становится истинной, вместо обычной игровой логики выводится финальный экран:

game_over.py
if igra_okonchena:
    nadpis = shrift_bolshoj.render("ИГРА ОКОНЧЕНА", True, (255, 255, 255))
    rect = nadpis.get_rect(center=(SHIRINA // 2, VYSOTA // 2))
    screen.blit(nadpis, rect)
Реальное окно: полупрозрачная тёмная накладка на весь экран, крупная надпись ИГРА ОКОНЧЕНА, счёт и подсказка Enter — заново
Финальная версия добавляет к экрану Game Over счёт, рекорд сессии и явную подсказку, как начать заново (раздел 21.19).
get_rect(center=...) — удобное центрирование текста
Вместо ручного вычисления координат текста по его ширине и высоте, get_rect(center=(x, y)) сам находит нужный левый верхний угол так, чтобы текст оказался центрирован ровно в точке (x, y).
Из этого экрана нет выхода без перезапуска Python
У переменной igra_okonchena нет обратного пути — единственный способ сыграть ещё раз — запустить программу заново. Раздел 21.18 заменит одну булеву переменную на явный enum.Enum с четырьмя состояниями (MENU/PLAYING/PAUSED/GAME_OVER) и понятными переходами между ними, включая переход обратно в игру.
Практика: включает финальный экран
Pygame открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →