如何在curses中获取最后按下的箭头键?

9 投票
1 回答
10468 浏览
提问于 2025-04-16 03:46

我正在用 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)

不过,这段代码似乎把按下的键当成了一个队列(也就是说,当箭头键按完了,蛇就会停下来),而我其实想要的是获取最后一个按下的箭头键。

我该怎么才能获取最后一个按下的箭头键呢?

1 个回答

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)

撰写回答