Глава 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)
get_rect(center=...) — удобное центрирование текста
Вместо ручного вычисления координат текста по его ширине и высоте,
get_rect(center=(x, y)) сам находит нужный левый верхний угол так, чтобы текст оказался центрирован ровно в точке (x, y).Практика в Jupyter Notebook
21-06-unichtozhenie.ipynb · включает финальный экран