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

It seems like ncurses is causing my loop to break early

本文关键字:循环 中断 我的 诅咒      更新时间:2023-10-16

我正在使用ncurses运行一个程序,该程序应该生成一个用于字符移动的窗口,等待~五秒钟,清除窗口,然后重新开始。我的想法是将其放在一个嵌套窗口中,该窗口将执行此操作十次。但是,在前五秒结束后,整个循环被打破,程序完成。

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++;
}

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

但是,在嵌套的 while 循环结束后,迭代器已经处于 10(使用 printf 验证(,因此整个循环中断。

但是,在嵌套的 while 循环结束后,迭代器已经处于 10(使用 printf 验证(,因此整个循环中断。

newtime 没有可见的初始化,如果它的初始值(如果根本没有 init 可能未定义(不小于 5,则永远不会执行while(newTime < 5)...,因为 newTime 永远不会改变,变得古怪 10

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

只需在while(newTime < 5) ...之前添加例如newTime = 0;(或小于 5 的值(

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