似乎 ncurses 导致我的循环提前中断

It seems like ncurses is causing my loop to break early

我是 运行 一个使用 ncurses 的程序,循环应该为角色移动生成 window,等待约五秒钟,清除 window,然后开始再次。我的想法是将它放在一个嵌套的 window 中,它将执行十次。然而,在前五秒结束后,整个循环被打破,程序结束。

int i=0;
while(i < 10)
{
   playwin.makeWindow();
   wtimeout(playwin.getWindow(), 0);

   originalTime = time(NULL);
   while(newTime < 5)
   {
      newTime = time(NULL);
      newTime -= originalTime;
      player.display();
      playwin.drawWindow();
      player.getMv();
   }
   wclear(playwin.getWindow());
   i++;
}

我希望 window 生成,wtimeout 函数将阻止 getMv 函数阻塞,嵌套的 while 循环将显示 window 并允许玩家四处移动。大约五秒钟后,我希望 while 循环结束,window 被清除,迭代器增加,循环再次开始。

但是,嵌套的while循环结束后,迭代器已经在10处(通过printf验证),所以整个循环中断。

However, after the nested while loop ends, the iterator is already at 10 (verified with printf), so the whole loop breaks.

newtime没有可见的初始化,如果它的初始值(如果根本没有init可能是undefined)不小于5则while(newTime < 5)...永远不会执行,因为 newTime 永远不会改变并且 i 很快变成 10

如果其初始值小于 5,则 while(newTime < 5)... 仅执行一次,因为您在

之后未重置其值

只需在 while(newTime < 5) ...

之前添加例如 newTime = 0;(或小于 5 的值)

进入循环之前,originalTime设置为当前时间。
一旦你输入,newTime 得到(可能)相同的值。
你从另一个中减去一个,所以 newTime 变成 0。
因此不会进入第二次循环