dlatemu - kasujesz nowo powstały particle. ja ten kod napisałem ogólnikowo, czyli co kiedy sie robi, to nie jest kod dla zwykłego kopiuj-wklej całości.
Gdzieś na początku:
struct PARTICLE_DESC
{
int x;
int y;
int speed;
};
// lista particli
list<PARTICLE_DESC> particles;
gdzieś indziej sobie dodasz ze 100 particli:
for(int i=0;i<100;i++)
{
PARTICLE_DESC part;
part.x=rand()%320;
part.y=0;
part.speed=rand()%10+1;
particles.push_back(part);
}
potem w pętli głównej aktualizujesz (poprawilem, dziwne ze nikt nie zauwazyl ;p):
for(list<PARTICLE_DESC>::iterator iter=particles.begin();iter!=particles.end();iter++)
{
iter->y+iter->speed;
if(iter->y>240)
{
iter->x=rand()%320;
iter->y=0;
iter->speed=rand()%10+1;
}
masked_blit(partic,bufor,0,0,iter->x,iter->y,partic->h,partic->w);
}
a gdy ich już nie potrzebujesz to dajesz:
jeśli chcesz usunąć wszystkie particle:
particles.clear()
lub jeśli chcesz usunąć jakiś konkretny:
int _i=0;
for(list<PARTICLE_DESC>::iterator iter=particles.begin();iter!=particles.end();iter++)
{
if(_i==id_particla_do_usuniecia)
{
particles.erase(iter);
break;
}
_i++;
}