Как заставить Pygame быстрее загружать изображения? - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь сделать игру, используя pygame, и мне нужен какой-то персонаж, чтобы двигаться влево и вправо. Для этого каждый раз, когда пользователь удерживает кнопку «влево», я снова рисую фоновое изображение и немного рисую символ слева от его предыдущей позиции, и я делаю аналогичное действие, когда он удерживает кнопку «вправо». , Проблема в том, что изображения загружаются недостаточно быстро. Когда я запускаю код и удерживаю, например, кнопку «влево», спрайт перемещается влево, но кажется, что он пропал в течение крошечного времени (примерно 0,2 секунды), и движение не является непрерывным (говоря, что спрайт исчез) Я имею в виду, что есть время, когда я могу «приостановить» экран и увидеть только фоновое изображение, без спрайта). Я хочу, чтобы движение было непрерывным, поскольку сейчас оно выглядит не очень хорошо. Я пытался обновить тик часов, но для непрерывного движения спрайта он должен двигаться очень медленно, и я тоже этого не хочу. Вот мой код:

run = True

while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        x = x-vel
        screen.blit(img, (0, 0))
        pygame.display.flip()
        screen.blit(ship_img, (x, y))
        pygame.display.flip()
    if keys[pygame.K_RIGHT]:
        x = x + vel
        screen.blit(img, (0, 0))
        pygame.display.flip()
        screen.blit(ship_img, (x, y))
        pygame.display.flip()

(vel - это константа, в моем коде это значение равно 5)

Как мне это исправить?
Игра, которую я пытаюсь сделать, это ЭТО одна, и если вы прокрутите вниз, вы увидите, что космический корабль этого парня движется непрерывно, так что это возможно.

1 Ответ

0 голосов
/ 14 апреля 2019

Судя по тому, как сформулирован ваш вопрос, кажется, что вы хотите, чтобы ваш игрок перемещался без проблем.Если это так, есть гораздо лучший способ сделать это!

Сначала создайте переменную для скорости, с которой ваш объект игрока перемещается по оси X.Если ваш playerobject определен как класс, обязательно объявите его как self перед объявлением.

speedx = 0

После этого замените весь код в событиях, просто изменив переменную скорости на любое число, которое выПожалуйста.

keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT]:
        speedx = insert number here

Так я обычно и поступаю.Надеюсь, это поможет!

...