我正在製作一款蛇形遊戲,要求玩家在不停止遊戲過程的情況下按下WASD
鍵來獲得玩家的輸入。所以我不能在這種情況下使用input()
,因爲那時遊戲停止滴答作響以獲得輸入。如何使用線程獲取python 3中的鍵盤輸入?
我發現了一個getch()
函數,它可以在不按下輸入的情況下立即給出輸入,但是此函數也會停止遊戲滴答以獲取輸入,如input()
。我決定使用線程模塊在不同的線程中通過getch()
獲得輸入。問題是getch()在不同的線程中不工作,我不知道爲什麼。
import threading, time
from msvcrt import getch
key = "lol" #it never changes because getch() in thread1 is useless
def thread1():
while True:
key = getch() #this simply is almost ignored by interpreter, the only thing it
#gives is that delays print() unless you press any key
print("this is thread1()")
threading.Thread(target = thread1).start()
while True:
time.sleep(1)
print(key)
那麼,爲什麼getch()
是無用的,當它是thread1()
?
你可能要考慮安裝和使用pygame的,而不是使用線程。它具有讓您輕鬆知道鍵盤上哪個鍵被按下的功能,所以您不必使用線程。 – Michael0x2a