0

OK! i have a problem. I'm making a game with a character you control and theres monsters that move when you do and when you run into a monster i have it so you lose 1 life.

(iLife --; )

i set iLife equal to 4 at the start.

if iLife is 3 i have an image show of 3 full hearts and one empty

if its 2 theres 2 empty

1 1 empty you get the point.

my problem is this. when i collide with a monster iLife keeps subtracting it doesnt pause at all so you go from full health to dead instantly i need some kind of delay after it subtracts one from iLife but the delay cant stop the program so Sleep(); wont work please help if you need code or clarification let me know.

Edited by mpike: n/a

2
Contributors
6
Replies
8
Views
5 Years
Discussion Span
Last Post by VernonDozier
0

If you can't pause the program, perhaps you can spawn a child process and have THAT sleep. Or a thread. But I doubt the real solution is to sleep. The real problem, I would imagine, is that it subtracts more than once for a collision, so change it so it only subtracts once.

0

yea that too but i still am not sure how to do that im using SDL for the collision.

0

what would be really cool is, like in some games when you get hit by something youll go into a transparent state for a few seconds and you cant get hit in that time. thats kind of what i want

0

I imagine that how the collision is detected isn't as important as how it's handled. What I imagine you don't want is this...

bool collisionHasOccurred; // set true somewhere when monster and player share the same coordinates, however that is determined
while(true)
{
    // code
    if(collisionHasOccurred)
    {
        // subtract a life
    }
    // code
}

This might be better...

bool collisionHasOccurred
time_t lastCollisionTime;
while(true)
{
    // code
    if(collisionHasOccurred && (time(0) - lastCollisionTime > 5))
    {
        // subtract a life
        lastCollisionTime = time(0);
    }
    // code
}

You can now only lose a life at most every 5 seconds. Enough time to get un-collided however you want to do that.

Edited by VernonDozier: n/a

0

I'd just like to say that i love you <3. lol that worked so perfectly. The first example was exactly what i was doing too. thanks a ton

0

>> I'd just like to say that i love you <3. lol that worked so perfectly. The first example was exactly what i was doing too. thanks a ton

I love you too. :* Glad it worked.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.