当我按下W时,我正试图检测一个程序,以便向前移动一个乌龟对象。但是,要让它一直运行,我需要一段时间的True语句。但是,因为虽然True会阻止将来的代码运行,但我的程序停止响应,因为它没有到达我的程序的done()部分。
此程序适用于Python 3.7上的Windows 10。我试过把它放在完成()之后无济于事。
这是我的代码。
from turtle import *
import msvcrt
def keyDetect():
while True:
if msvcrt.kbhit():
key = msvcrt.getch()
return key
linerunner = Turtle()
while True:
if keyDetect() == "b'w'":
linerunner.forward(1)
done()
预期结果:按下W时,乌龟对象将以1为增量向前移动,直到我停止按住它为止。
实际结果:Python.exe没有响应
添加另一个条件,告诉程序退出循环(break
语句),就像按下S键一样:
while True:
if keyDetect() == "b'w'":
linerunner.forward(1)
elif keyDetect() == "b's'":
break
done()