У меня есть функция, которая создает и вставляет некоторые числа в вектор.
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;
не успевает бежать; /
бла-блаб-блах-блах-блах-блах-блах-блах-блах-блах-блах-блах-блах!хорошо, я нашел, где настоящая проблема, которая заставляла вставлять более 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;
}
проблема кажется, что второй, если выполняется более одного раза,что странно!