我正在使用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验证),因此整个循环中断。
答案 0 :(得分:1)
但是,嵌套的while循环结束后,迭代器已经为10(已通过printf验证),因此整个循环中断。
没有 newtime 的可见初始化,如果它的初始值(如果没有init则可能是不确定的)不小于5,所以while(newTime < 5)...
不会执行,因为< em> newTime 永不更改, i 迅速变为10
如果其初始值小于5,则while(newTime < 5)...
仅执行一次,因为在此之后您不会重置其值。
只需在newTime = 0;
之前添加例如while(newTime < 5) ...
(或小于5的值)
答案 1 :(得分:0)
进入循环之前,将originalTime
设置为当前时间。
输入后,newTime
就会(可能)获得相同的值。
您将一个减去另一个,因此newTime
变为0。
因此它将不再第二次进入循环。