2

C++でゲームを作っています。私の現在の目標は、プレイヤーが死んでいるかどうかを確認するために、永久ループでプレイヤーの健康状態をチェックすることです。彼がいる間、私はそれを計算したい << あなたは死んでいます。ただし、cout << は while ステートメント内にあり、常にヘルスをチェックしているため、結果は cout << を何度も出力して実行します。ループで永久に健康状態をチェックし、健康状態が 1 未満の場合は、<< "あなたは死んでいます"; と出力します。一度だけ。while ステートメントを 1 回だけ実行するように指示する方法はありますか? ここに私の現在の while ステートメントがあります:

bool gamerunning = true;

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

このコードを実行すると、「あなたは死んでいます」というメッセージが何度も出力されます。このループでヘルスをチェックし続けたいのですが、cout を 1 回だけ実行したいので、同じメッセージが何度も繰り返されることはありません。これを止めるために何をすべきかについての小さな例を提供できれば、非常に高く評価されます. どうもありがとう!

4

7 に答える 7

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;
  }
}
于 2012-12-28T19:04:46.817 に答える
2

なぜそのようなことはありませんか?

bool gamerunning = true;

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

ループを保持したい場合は、余分なブール変数を追加するだけです-userDead、userDeadがfalseの場合にのみチェックを行い、出力を書き込んだ後、それをtrueに設定できます。

于 2012-12-28T19:06:18.453 に答える
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;
    }
}
于 2012-12-28T19:04:40.880 に答える
1

a を使用して、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;
        }
    }
}
于 2012-12-28T19:05:52.687 に答える
0

通常はステートマシンがありますが、簡単な方法は追跡することです。

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";
   }
}

于 2012-12-28T19:04:43.397 に答える
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;
    }
}
于 2012-12-28T19:06:26.803 に答える
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;
       }
    }
}
于 2012-12-28T19:07:12.560 に答える