Глава 21 · Проект: космический шутер
Игровой цикл
План того, что должно происходить на каждом кадре — и первый персонаж игры.
Игровой цикл
Как и в главе 20, цикл — сердце игры. На этот раз он будет обновлять сразу несколько вещей на каждом кадре: положение корабля, врагов, пуль — и проверять столкновения:
igrovoj_cikl_plan.py
while rabotaet:
# 1. обработать события (выход, выстрел)
# 2. обработать зажатые клавиши (движение корабля)
# 3. обновить положение врагов и пуль, проверить столкновения
# 4. нарисовать всё заново
# 5. clock.tick(FPS)
Создаём космический корабль
Вместо отдельных переменных x, y корабля удобно использовать
pygame.Rect — он сразу хранит позицию и размер вместе и
понадобится для проверки столкновений:
korabl.py
KORABL_SHIRINA, KORABL_VYSOTA = 50, 40
korabl = pygame.Rect(
SHIRINA // 2 - KORABL_SHIRINA // 2,
VYSOTA - KORABL_VYSOTA - 20,
KORABL_SHIRINA,
KORABL_VYSOTA,
)
# в игровом цикле:
pygame.draw.rect(screen, (80, 220, 120), korabl)
Rect хранит четыре числа — и много полезных свойств
Rect(x, y, ширина, высота) дополнительно вычисляет .centerx, .bottom, .top и другие удобные координаты — они пригодятся уже в следующем разделе.Практика в Jupyter Notebook
21-02-korabl.ipynb · Rect и первый корабль