I think he knows that and now so do you. So, don't draw the black sprite.
hmm...this is how I see it at that point. The way you have it, the draw_flag belongs to the bug. Forget about time. When you want to draw the bug set draw_flag to true. But don't let time decide when you draw your bug. you always draw a bug when it's true and time does not effect it any longer. take it out.
So how do we make this thing happen? The bullet decides when the bug is drawn? That might be okay...one more bool should do it right? so we add another bool called draw_flag_coll = false to begin with. and draw_flag which belongs to the bug should start out true. right? we see the bug, we don't see the collision image. Try this now and make it how you want it.
private void Form1_Paint(object sender, PaintEventArgs e)
{ // update
if(y < = -510)
{
// todo : do better collision in the other axis, okay I got this
if( (x > (350 - 30)) && (x < (350 + 30)) ) // hard coding again
{
draw_flag_bug = false; // bug will never come back....it's gone for good.
draw_flag_coll = true; // timer will kill this
}
else
{
// advance your bullet here perhaps
// y--;
}
}
// draw
e.Graphics.Clear(Color.Black);
e.Graphics.DrawImage(ship, 350 + x, 530);
e.Graphics.DrawImage(bullet, 375 + x, 520 + y);
if(draw_flag_bug == true)
{
e.Graphics.DrawImage(bug_one, 350, 0); // don't hard code values
}
if(draw_flag_coll == true)
{
e.Graphics.DrawImage(coll, 350, 0); // here either
}
}
private void timer2_Tick(object sender, EventArgs e)
{
draw_flag_coll = false; // this tick time could be set to 2 seconds or so...
// this could be better...
// instead of just turning it off,
// we do something better so it stays on the same amount of time
}
Hope that helps..
oh, and watch out for that rouge bullet, it's still active somewhere.