我很难理解window.timeout()函数。更具体地说,我正在玩一条"蛇" python中的游戏:
s = curses.initscr()
curses.curs_set(0)
w = curses.newwin()
w.timeout(100)
while True:
move snake until it hits the wall
据我所知,在这种情况下,超时(100)决定了蛇"移动的速度,即在屏幕上打印出新字符。但是,当我想修改代码时,我就陷入困境,等到有人按下" start"。我写了类似的东西:
w.timeout(100)
while True:
if w.getch() is not start:
stay at the initial screen
else:
while True:
move the snake until it hits the wall
然而,在这种情况下,超时(100)似乎控制程序每次等待w.getch()多长时间,而不是每次蛇移动之间等待多长时间。另外,我注意到在第一个例子中,超时是在while循环之外的顶部声明的。这对我来说很奇怪,因为通常如果我想暂停一个while循环,我会把sleep()放在while循环的底部。
答案 0 :(得分:2)
如果要在蛇动作之间暂停,可以使用napms
等待一定的毫秒数(与sleep
不同,不会干扰屏幕更新)。将w.timeout
设置为100(毫秒)可能太长。如果您不关心阅读功能键,可以使用nodelay
将w.getch
设置为非阻止,依靠napms
来减慢循环。
关于后续评论:在ncurses中,wtimeout
函数设置名为 _delay
的窗口的属性,该窗口在getch
function内最终作用{ {3}}如果要读取数据,它会提前返回。