كيف يمكنك الضغط على مفتاح السهم الأخير باستخدام اللعنات؟

StackOverflow https://stackoverflow.com/questions/3651709

  •  01-10-2019
  •  | 
  •  

سؤال

أنا أكتب لعبة ثعبان بيثون باستخدام اللعنات, ، لكن أواجه بعض المتاعب في التحكم في الثعبان ، يتم وضع الكود الحالي للتحكم في الثعبان داخل الحلقة الرئيسية ويبدو مثل هذا:

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)

ومع ذلك ، يبدو أن الكود يعامل المفاتيح التي تم الضغط عليها على أنها Que (لذلك ستتوقف الثعبان عندما ينفد من ضغط السهم) ، في حين أريد فعليًا استرداد مفتاح السهم الأخير الذي تم الضغط عليه.

كيف يمكنني استرداد مفتاح السهم الأخير الذي تم الضغط عليه؟

هل كانت مفيدة؟

المحلول

تعيين 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top