Python; как я могу заставить что-то двигаться непрерывно - PullRequest
0 голосов
/ 08 сентября 2018

Это мой код:

import pygame
pygame.init()

win = pygame.display.set_mode((500,500))

pygame.display.set_caption("Test")
x = 50
y = 50
width = 40
height = 60
vel =5

run = True
while run:
    pygame.time.delay(100)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

        keys = pygame.key.get_pressed()

        if keys[pygame.K_LEFT]:
            x -= vel
        if keys[pygame.K_RIGHT]:
            x += vel
        if keys[pygame.K_UP]:
            y -= vel
        if keys[pygame.K_DOWN]:
            y += vel

        win.fill((0,0,0))
        pygame.draw.rect(win, (255,255,255), (x,y,width,height))
        pygame.display.update()

pygame.quit()

Я бы хотел, чтобы прямоугольник двигался непрерывно, когда вы удерживаете одну из кнопок, но он перемещается только один раз за нажатие. Я только начинаю изучать Python и Pygame (как вы можете видеть), поэтому я благодарен за любую помощь.

1 Ответ

0 голосов
/ 17 сентября 2018

Здесь происходит то, что вы помещаете код для обновления позиции в цикл обработки событий, что означает, что ваш код для перемещения объекта запускается только тогда, когда pyame обнаруживает событие, подобное нажатию клавиши. Но если вы удерживаете нажатой клавишу, Pygame не регистрирует это как событие.

Просто удалите весь код из keys = pygame.key... до display.update() из цикла for и поместите его в цикл while.

Как таковой:

while run:
    pygame.time.delay(100)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]:
        x -= vel
    if keys[pygame.K_RIGHT]:
        x += vel
    if keys[pygame.K_UP]:
        y -= vel
    if keys[pygame.K_DOWN]:
        y += vel

    win.fill((0,0,0))
    pygame.draw.rect(win, (255,255,255), (x,y,width,height))
    pygame.display.update()

pygame.quit()

Объект, который должен двигаться, теперь будет двигаться непрерывно, пока нажаты клавиши!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...