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 运算符意味着任何一个条件都将为真,然后循环将继续。和 Player life 是>0,所以它没有退出循环

于 2013-11-10T06:39:36.200 回答
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负数;如果其中一个或两个值为正,则循环将继续。

如果您希望循环在任一值为负时终止,则需要&&在条件中使用“和”。

于 2013-11-10T06:38:55.890 回答