似乎ncurses导致我的循环提前破坏

问题描述 投票:-2回答:2

我正在运行一个程序,使用带有循环的ncurses,该循环应该为角色移动生成一个窗口,等待~5秒,清除窗口,然后重新开始。我的想法是让它在一个嵌套的窗口中进行十次。但是,在前五秒结束后,整个循环都会中断并且程序结束。

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验证),因此整个循环中断。

c++ ncurses
2个回答
1
投票

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.