← Все вопросы

Что такое игровой цикл (game loop) и зачем он нужен в каждой игре?

Задан 20 месяцев назад897 просмотров2 ответа
8

Во всех примерах pygame есть while running: и внутри всё происходит. Я вроде скопировал и работает, но не понимаю — что это за цикл и зачем он. Почему нельзя просто нарисовать один раз?

2 ответа

13
✓ Принятый ответ — помог автору

Игра — это не картинка, а движущаяся картинка. Экран нужно перерисовывать много раз в секунду, иначе ничего не будет двигаться и реагировать. Этот бесконечный while и называется игровым циклом: каждый его проход — один кадр.

В каждом кадре игра делает три вещи, всегда в таком порядке:

while running:
    # 1. СОБЫТИЯ — что нажал игрок
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 2. ЛОГИКА — двигаем объекты, считаем столкновения
    x += 1

    # 3. ОТРИСОВКА — рисуем новый кадр
    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, (255, 0, 0), (x, 100, 50, 50))
    pygame.display.flip()

Если нарисовать один раз без цикла — игра нарисует кадр и сразу закроется (или зависнет). Цикл крутится, пока игрок не выйдет.

6

Короткая аналогия: игровой цикл — это как мультик из кадров. Каждый оборот цикла = один кадр. Двигаешь объект на чуть-чуть, перерисовываешь — и за счёт того, что это происходит 60 раз в секунду, глаз видит плавное движение.

Ваш ответ

Войдите, чтобы ответить на вопрос.