Как вы получаете последнюю клавишу со стрелкой, используя проклятия? - PullRequest
7 голосов
/ 06 сентября 2010

Я пишу игру Python Snake с использованием curses , но у меня возникли некоторые проблемы с управлением змеей, мой текущий код для управления змеей находится внутри основного цикла и выглядит следующим образом:

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 Ответ

3 голосов
/ 07 сентября 2010

Набор 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)
...