如何使用curses按下最后一个箭头键?

Zaz*_*Zaz 7 python curses keypress

我正在使用curses编写一个Python蛇游戏,但是在控制蛇方面遇到了一些麻烦,我当前控制蛇的代码放在主循环中,看起来像这样:

while True:
    char = screen.getch()
    if char == 113: exit()  # q
    elif char == curses.KEY_RIGHT: snake.update(RIGHT)
    elif char == curses.KEY_LEFT: snake.update(LEFT)
    elif char == curses.KEY_UP: snake.update(UP)
    elif char == curses.KEY_DOWN: snake.update(DOWN)
    else snake.update()
    time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

然而,代码似乎将按下的键视为一个que(因此当它用完箭头时蛇会停止),而我实际上希望它检索被按下的最后一个箭头键.

如何检索按下的最后一个箭头键?

Zaz*_*Zaz 4

screen.nodelay(1)

screen.nodelay(1)
while True:
    char = screen.getch()
    if char == 113: break  # q
    elif char == curses.KEY_RIGHT: snake.update(RIGHT)
    elif char == curses.KEY_LEFT: snake.update(LEFT)
    elif char == curses.KEY_UP: snake.update(UP)
    elif char == curses.KEY_DOWN: snake.update(DOWN)
    else: snake.update()
    time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)

  • 我发现 `curses.halfdelay()` 可能会导致一些奇怪的错误,`screen.nodelay()` + `time.sleep()` 似乎效果更好。 (2认同)