首页 > 解决方案 > 按下一个键会创建一个循环,直到您按下另一个键

问题描述

我正在用 Python 创建一个 Snake 游戏。按下方向键后,蛇将以缓慢的速度朝该方向移动,直到用户按下另一个键。按下一个键后我能够让蛇移动,但我无法通过按下另一个键来阻止它:(我正在使用 pygame)

if event.type == pygame.KEYDOWN:

    if event.key == pygame.K_LEFT:

        while i==False:
            time.sleep(0.2)
            X_had1=X_had1 - 1

            #Print operation

            if event.type == pygame.KEYDOWN:
                if event.key != pygame.K_LEFT:
                    i=True

标签: pythonpygame

解决方案


不可以。永远不要尝试在应用程序循环中使用附加循环来控制应用程序。您有应用程序循环使用它。添加一个控制方向的变量,并在您按下某个键时更改该变量的值。使用direction更改位置 ( X_had1, Y_had1):

direction = None
speed = 1

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

        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                direction = (-1, 0)
            if event.key == pygame.K_RIGHT:
                direction = (1, 0)
            if event.key == pygame.K_UP:
                direction = (0, -1)
            if event.key == pygame.K_DOWN:
                direction = (0, 1)

    if direction:
        X_had1 += direction[0] * speed
        Y_had1 += direction[1] * speed

推荐阅读