Pygame - 围绕 pygame window 移动一个正方形,但在改变方向时无法停止当前移动,导致正方形沿对角线移动

Pygame - Moving a square around pygame window but cannot stop current movement when changing direction, resulting in the square moving diagonally

我正在使用以下代码(在一个循环中)在 pygame window 周围移动一个正方形:

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 是正方形的位置。

这段代码在按下箭头键时不断地向我想要的方向移动方块。但是,我 运行 遇到了如果我向上或向下然后向左或向右按​​,它会沿对角线在屏幕上移动的问题。

我需要一个解决方案来阻止它在当前方向上移动并改变到新的方向。不能同时向两个方向移动。

当附加键被按下时,另一个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