2012-12-28 2 views
2

Я создаю игру на C++. Моя текущая цель - проверить здоровье игрока в цикле forever, чтобы проверить, не мертв ли ​​он. Пока он есть, я хочу, чтобы он закончился < < Ты мертв. Но так как cout < < - в операторе while, проверка работоспособности все время, результат выводит и выполняет cout < < много раз. Я хочу, чтобы он проверял здоровье навсегда в цикле, и если здоровье < 1, я хочу, чтобы он был отключен < < «Ты мертв»; только раз. Есть ли способ сказать оператор while выполнять только один раз? heres my current while while:Как создать неограниченный цикл, который выполняется один раз в C++

bool gamerunning = true; 

while (gamerunning == true) //While game is running... 
{ 
if (health < 1) //If player is dead... 
{ 
cout << "You are dead"; 
} 
} 

Выполнение этого кода выдает «вы мертвы» кучу раз. Я хочу, чтобы он продолжал проверять работоспособность в этом цикле, но я хочу, чтобы cout выполнялся один раз, поэтому он не повторяет одно и то же сообщение снова и снова. Если вы можете предоставить небольшой пример того, что делать, чтобы остановить это, он будет высоко оценен. Большое спасибо, ребята!

+0

Вы говорите, вы не хотите, чтобы игра заканчивается, если игрок мертв? – sepp2k

+1

Использовать разные игровые состояния? – Rapptz

+0

set gamerunning == false в том случае, если –

ответ

1

Как насчет этого?

bool gamerunning = true; 
bool output_done = false; 

while (gamerunning == true) //While game is running... 
{ 
    if ((health < 1) && (output_done != true)) //If player is dead... 
    { 
     cout << "You are dead"; 
     output_done = true; 
    } 
} 
0

обычно вы бы иметь Statemachine .... но простой способ следить ..

bool gamerunning = true; bool alive = true;

while (gamerunning == true) //While game is running... 
{ 
    if (health < 1 && alive) //If player is dead... 
    { 
     alive = false; 
     cout << "You are dead"; 
    } 
} 

2

Похоже, вы хотите, чтобы остановить игру, бегая, когда игрок умер, в этом случае вы хотите:

while (gamerunning == true) //While game is running... 
{ 
    if (health < 1) //If player is dead... 
    { 
    cout << "You are dead"; 
    gamerunning = false; 
    } 
} 

Если нет, то вы можете держать другой bool, который говорит, произошел ли выход смерти:

bool deadOutput = false; 
while (gamerunning == true) //While game is running... 
{ 
    if (health < 1 && !deadOutput) //If player is dead... 
    { 
    cout << "You are dead"; 
    deadOutput = true; 
    } 
} 
1

Вы можете использовать bool, чтобы следить за это или нет это уже произошло:

bool gamerunning = true; 
bool printed = false; 

while (gamerunning == true) //While game is running... 
{ 
    if (health < 1) //If player is dead... 
    { 
     if (!printed) { 
      cout << "You are dead"; 
      printed = true; 
     } 
    } 
} 
2

Почему не что-то подобное?

bool gamerunning = true; 

while (gamerunning == true) //While game is running... 
{ 
    if (health < 1) break 
} 
cout << "You are dead"; 

Если вы хотите сохранить свой цикл, вы можете просто добавить дополнительные переменную Ий - userDead, сделать чек, только если userDead является ложным и после записи вывода вы можете установить его в действительности.

0
bool gamerunning = true; 

while (gamerunning == true) //While game is running... 
{ 
    if (health < 1) //If player is dead... 
    { 
     cout << "You are dead"; 
     break; 
    } 
} 

или

bool gamerunning = true; 

while (gamerunning == true) //While game is running... 
{ 
    if (health < 1) //If player is dead... 
    { 
     cout << "You are dead"; 
     gamerunning = false; 
    } 
} 
+0

OP не хочет прерывать цикл while. – jrok

0
bool gamerunning = true; 
bool playerDead = false 

while (gamerunning == true) //While game is running... 
{ 
    if (health < 1) //If player is dead... 
    { 
     if (!playerDead) 
     { 
      cout << "You are dead"; 
      playerDead = true; 
     } 
    } 
} 
Смежные вопросы