我正在运行一个程序,使用带有循环的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验证),因此整个循环中断。
但是,在嵌套的while循环结束后,迭代器已经是10(用printf验证),因此整个循环中断。
没有可见的newtime初始化,如果它的初始值(如果根本没有init可能是未定义的)不小于5,则while(newTime < 5)...
永远不会执行,因为newTime永远不会改变而且我变得快速10
如果其初始值小于5,则while(newTime < 5)...
仅执行一次,因为您之后未重置其值
只需在newTime = 0;
之前添加例如while(newTime < 5) ...
(或小于5的值)
在进入循环之前,originalTime
设置为当前时间。
一旦你输入,newTime
(可能)得到相同的值。
你从另一个减去一个,所以newTime
变为0。
因此它不会再次进入循环。