It's simple really. You make one loop, which wraps everything up in it. You use 1 variable to control where you go while you're inside your loop. Here I've elected to use a switch to jump around to various states, or conditions. All those places where you keep saying "need loop here", you just move into one big loop, and when the condition's right, you go to the right place. Here we use a very simple version of one.

There are only a few states. IE: We can be at home. We can be at the store. We can be at foo, and at bar. However, that's all we can do. Thus, we have a finite number of choices. You update the state of where you're at allowing for only valid moves from your current state. For example, if we had we were sleeping, we might limit the current choices to: 'awake', or 'dead'. Otherwise you remain asleep. You can die in your sleep. You can also wake up from being asleep. Otherwise, you remain asleep.

Now you just do the same thing with your code above. It's pretty simple, and should be adequately illustrated if you look at the 'AT_HOME' state above. You read their choice into a temproary variable, and if it matches any of the states you allow them to change to, then you update the state.
Code:
while( state != STATE_DEAD )
{
    switch( state ) /* see what the state is... */
    {
        case STATE_ASLEEP: /* ...and go there. */
            printf("You're asleep. You can: \n"
                "1 - Wake up.\n"
                "2 - Die.\n"
                "> " );
            scanf( "%d", &choice ); /* Do your own error checking. */
            if( choice == 1 )
            {
                 /* They've chosen to wake up, so change state to be STATE_AWAKE */
                 state = STATE_AWAKE;
            }
            if( choice == 2 )
            {
                /* They've chosen to die. Kill'm. */
                state = STATE_DEAD;
            }
            /* Otherwise, it's an invalid choice, so don't do anything, and it will loop back here again. */
        break;
        ... put other cases here ...
    }
}
/* If we're out of the loop, we're at state == DEAD */
printf("You're dead.\n");
If you don't know what a switch is, I'd suggest grabbing your C book of choice and doing some reading.


Quzah.