← Все вопросы

Как заставить квадрат двигаться по экрану в pygame?

Задан 16 месяцев назад868 просмотров1 ответ
6

Нарисовал квадрат, он стоит на месте. Хочу, чтобы он сам ехал вправо. Пробовал поставить x = x + 1 рядом с рисованием, но он либо стоит, либо мелькает в разных местах. Как правильно сделать движение?

1 ответ

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

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

import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
clock = pygame.time.Clock()

x = 0
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    x += 3                       # двигаем вправо

    screen.fill((0, 0, 0))       # стираем прошлый кадр
    pygame.draw.rect(screen, (0, 200, 100), (x, 200, 50, 50))
    pygame.display.flip()
    clock.tick(60)               # 60 кадров в секунду

pygame.quit()

Если убрать screen.fill(...) — увидишь «размазанный» хвост из квадратов, потому что старые кадры не стираются. Это самая частая ошибка с движением.

Ваш ответ

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