C++中有檢查擦除成功的方法嗎?
我有兩段代碼擦除同一個對象。第一次擦除對象,然後第二次擦除它,但沒有找到對象。 任何想法?C++向量擦除檢查
for(long indexs=0; indexs < (long)Enemie1.vS2Enemie1.size(); indexs++)
{
if((vRegularShots[index].x>=Enemie1.vS2Enemie1[indexs].x && vRegularShots[index].y>=Enemie1.vS2Enemie1[indexs].y && vRegularShots[index].y<=(Enemie1.vS2Enemie1[indexs].y+17) && vRegularShots[index].x<=(Enemie1.vS2Enemie1[indexs].x+17))||(Enemie1.vS2Enemie1[indexs].x>=vRegularShots[index].x && Enemie1.vS2Enemie1[indexs].y>=vRegularShots[index].y && Enemie1.vS2Enemie1[indexs].y<=(vRegularShots[index].y+16) && Enemie1.vS2Enemie1[indexs].x<=(vRegularShots[index].x+5)))
{
Enemie1.vS2Enemie1.erase(Enemie1.vS2Enemie1.begin()+indexs);
vRegularShots.erase(vRegularShots.begin()+index);
score+=100;
}
}
vregularshots
認爲是推出了與vS2Enemie1
持有的敵人射擊。如果有兩槍在同一時間觸及敵人,那麼它將循環拍攝並檢查它是否觸及任何敵人,然後清除敵人和槍擊。但是當另外一槍也觸及敵人時,它會試圖抹去已經被擦掉的敵人。
有什麼想法?
UPDATE
for(long indexs=0; indexs < (long)Enemie1.vS1Enemie1.size();)
{
if((vRegularShots[index].x>=Enemie1.vS1Enemie1[indexs].x && vRegularShots[index].y>=Enemie1.vS1Enemie1[indexs].y && vRegularShots[index].y<=(Enemie1.vS1Enemie1[indexs].y+17) && vRegularShots[index].x<=(Enemie1.vS1Enemie1[indexs].x+17))||(Enemie1.vS1Enemie1[indexs].x>=vRegularShots[index].x && Enemie1.vS1Enemie1[indexs].y>=vRegularShots[index].y && Enemie1.vS1Enemie1[indexs].y<=(vRegularShots[index].y+16) && Enemie1.vS1Enemie1[indexs].x<=(vRegularShots[index].x+5)))
{
Enemie1.vS1Enemie1.erase(Enemie1.vS1Enemie1.begin()+indexs);
vRegularShots.erase(vRegularShots.begin()+index);
score+=100;
}
else
indexs++;
}
請提供一些演示您所遇問題的示例代碼。 – 2010-08-22 05:42:57
什麼是'腳本'? C++代碼通常不被稱爲腳本,反正矢量不會在程序終止時停留... – bdonlan 2010-08-22 05:51:17
我編輯我的文章。 – Ramilol 2010-08-22 05:55:55