0
do{
    printf("Monster name:%s\n",monsternames[globalvar.monstercatego][globalvar.monsternivel]);
    printf("Monster Life:%d\n",globalvar.monsterhp);
    printf("------------------------------------------\n");
    printf("----------------BattleGround--------------\n");
    printf("------------------------------------------\n");
    printf("Player name:%s\n", nomeheroi);
    printf("Player life:%d\n", globalvar.playerhp);
    printf("----------------------------------------\n");
    printf("------------------Menu------------------\n");
    printf("----------------------------------------\n");
    printf("A - Attack\n");
    printf("D - Defend\n");
    scanf(" %c",&opcaobattle);
    switch(opcaobattle)
    {
        case 'a':
        danoPMonster();
        break;

        case 'd':

        break;
    }
  }while((globalvar.monsterhp >= 0) || (globalvar.playerhp >= 0));

私のコンソールは次のように表示されます:

Monster name:Rat
Monster Life:2
----------------------------------------
----------------BattleGround------------
----------------------------------------
Player name:Test
Player life:10
----------------------------------------
------------------Menu------------------
----------------------------------------
A - Attack
D - Defend

a

Monster name:Rat
Monster Life:-1
----------------------------------------
----------------BattleGround------------
----------------------------------------
Player name:Test
Player life:10
----------------------------------------
------------------Menu------------------
----------------------------------------
A - Attack
D - Defend

それは明らかにそれを示してglobalvar.monsterhp < 0おり、ループにアイデアを残しませんでしたか?

4

3 に答える 3

5

これは、||論理 OR 演算子を使用しているため、いずれかの条件が true になり、ループが続行されることを意味します。そして Player life は です>0。したがって、ループを終了していません

于 2013-11-10T06:39:36.200 に答える
1

おそらく、モンスターとプレイヤーの両方が生きている間だけ反復したいでしょう。あなたのコードは、少なくとも 1 つが生きている間繰り返されます。条件を「または」から「および」に変更します。

while((globalvar.monsterhp >= 0) || (globalvar.playerhp >= 0));
// to
while((globalvar.monsterhp >= 0) && (globalvar.playerhp >= 0));
于 2013-11-10T06:37:57.950 に答える
0

「or」条件は、両方が負になり、||負になるまでループが終了しないことを意味します。いずれかまたは両方の値が正の場合、ループは続行されます。globalvar.monsterhp globalvar.playerhp

いずれかの値が負の場合にループを終了する場合は&&、条件で「and」を使用する必要があります。

于 2013-11-10T06:38:55.890 に答える