Python 诅咒 而循环和超时



我很难理解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
我知道在这种情况下,

timeout(100(决定了蛇"移动"的速度,即在屏幕上打印出新字符。但是,当我想修改代码以便它等到有人按下"开始"时,我卡住了。我写了这样的东西:

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

但是,在这种情况下,timeout(100( 似乎控制程序每次等待 w.getch(( 的时间,而不是每次蛇移动之间等待多长时间。另外,我注意到在第一个示例中,超时是在 while 循环之外的顶部声明的。这对我来说看起来很奇怪,因为通常如果我想暂停 while 循环,我会将 sleep(( 放在 while 循环的底部。

如果你想在

蛇的移动之间暂停,你可以使用napms等待给定的毫秒数(与sleep不同,不会干扰屏幕更新(。 将w.timeout设置为 100(毫秒(可能太长。 如果您不关心读取功能键,则可以使用 nodelayw.getch设置为非阻塞,依靠napms来减慢循环速度。

关于后续注释:在 ncurses 中,wtimeout 函数设置一个名为 _delay 的窗口属性,该属性在 getch 函数内起作用,最终传递给定时等待函数,如果有数据要读取,该函数将提前返回。

相关内容

  • 没有找到相关文章

最新更新