>>890
こんな感じかな。

enum {Field = 0, Battle};

GameLoop()
{
int game = Field;
while(1) {
if(game == Field) FieldLoop(&game);
else if(game == Battle) BattleLoop(&game);}
}

FieldLoop(int *game)
{
while(1) {
if(敵が現れた) {*game = Battle; break;}}
}

BattleLoop(int *game)
{
while(1) {
if(戦闘が終わった) {*game = Field; break;}}
}