我有一个函数,可以创建并插入一些数字到一个向量中。
if(Enemy2.dEnemy==true)
{
pt.y=4;
pt.x=90;
pt2.y=4;
pt2.x=125;
for(int i=0; i<6; i++)
{
Enemy2.vS1Enemy.push_back(pt);
Enemy2.vS2Enemy.push_back(pt2);
y-=70;
pt.y=y;
pt2.y=y;
}
Enemy2.dEnemy=false;
Enemy3.cEnemy=0;
}
需要在两个向量中插入6个数字,唯一的问题是它实际上插入了更多的数字。
我认为如果Enemy2.dEnemy == true
,则代码片段不会运行,并且它不会一直保持为真。
代码片段第一次运行时,Enemy2.dEnemy
被设置为false
,并且不应再次运行。
我没有在任何地方将Enemy2.dEnemy
设置为true
,除非在创建窗口时。
如果我在代码片段的任何位置插入断点,则程序将正常工作 - 它将仅在两个向量中插入6个数字。
这里有什么问题呢?
好的,所以我进行了一些调试。
我发现
Enemy2.dEnemy=false;
由于某种原因被跳过了。我尝试这样做来查看是否是这样。
if(Enemy2.dEnemy)
{
pt.y=4;
pt.x=90;
pt2.y=4;
pt2.x=125;
for(int i=0; i<6; i++)
{
Enemy2.vS1Enemy.push_back(pt);
Enemy2.vS2Enemy.push_back(pt2);
y-=70;
pt.y=y;
pt2.y=y;
}
TCHAR s[244];
Enemy2.dEnemy=false;
if(Enemy2.dEnemy)
{
MessageBox(hWnd, _T("0"), _T(""), MB_OK);
}
else
{
MessageBox(hWnd, _T("1"), _T(""), MB_OK);
}
Enemy3.cEnemy=0;
}
提示框弹出显示1,我的代码正常工作。似乎Enemy2.dEnemy=false;
没有时间运行;/
blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah!
好的,我找到了真正的问题所在,这个问题导致插入超过6个数字...
问题出在我分配Enemy2.dEnemy=true;
处。
if(Enemy2.e1)
{
Enemy2.now=time(NULL);
Enemy2.tEnemy=Enemy2.now+4;
Enemy2.e1=false;
}
if(Enemy2.tEnemy==time(NULL))
{
check=1;
Enemy2.aEnemy=0;
Enemy2.dEnemy=true;
}
问题似乎是第二个 if 语句运行了多次,这很奇怪!