Pygame - перемещение квадрата вокруг окна Pygame, но не может остановить текущее движение при изменении направления, в результате чего квадрат перемещается по диагонали - PullRequest
0 голосов
/ 25 февраля 2019

Я использую следующий код (который находится в цикле) для перемещения квадрата вокруг окна пигмея:

for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_UP:
                vel_y = -25
            elif event.key == K_DOWN:
                vel_y = 25
            elif event.key == K_LEFT:
                vel_x = - 25
            elif event.key == K_RIGHT:
                vel_x= 25
    y += vel_y
    x += vel_x

x и y - это позиция квадрата.

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

Мне нужно решение, чтобы оно не двигалось в текущем направлении и не переходило в новое.Не движется в обоих направлениях одновременно.

1 Ответ

0 голосов
/ 25 февраля 2019

Когда дополнительная клавиша нажата, другая vel_ по-прежнему имеет значение.Чтобы это исправить, все, что вам нужно сделать, это установить другую скорость на 0, когда вы устанавливаете новое направление.

if event.key == K_UP:
    vel_y = -25
    vel_x = 0
elif event.key == K_DOWN:
    vel_y = 25
    vel_x = 0
elif event.key == K_LEFT:
    vel_x = -25
    vel_y = 0
elif event.key == K_RIGHT:
    vel_x = 25
    vel_y = 0
...