2016-10-25 9 views
0

У меня есть оператор if (пошаговые атаки), если есть простой способ выйти из выражения if, чтобы противник не атаковал, если он уже мертв?Как вырваться из утверждения if в середине пути | java

Надеюсь, не сделав другого утверждения, равного тому, которое у меня уже есть. Просто звучит глупо, чтобы иметь два одинаковых утверждения внутри друг друга.

Простейшим способом было бы, чтобы цикл While прорвался, как только враг умрет, я думаю. Но я не эксперт.

while (!monster.isDead() && !player.isDead()) 
     { 
      HashSet<String> input = reader.getInput(); 

      if(input.contains("attack")) { 
       int playerAttack = player.attack(); 
       int monsterAttack = monster.attack(); 

       if (monster.getMonsterLiv() > 0) 
       {     
        monster.getAttacked(playerAttack);     
        System.out.println(Utilities.battleString(player.getName(), monster.getMonsterNavn(), playerAttack, monsterAttack, monster.getMonsterLiv())); 
        overView += "\n" + Utilities.battleString(player.getName(), monster.getMonsterNavn(), playerAttack, monsterAttack, monster.getMonsterLiv()); 

        player.getAttacked(monster.attack()); 
        System.out.println(Utilities.battleString(monster.getMonsterNavn(), player.getName(), monsterAttack, playerAttack, player.getHealth())); 
        overView += "\n" + Utilities.battleString(monster.getMonsterNavn(), player.getName(), monsterAttack, playerAttack, player.getHealth()); 
       } else { 
        monster.getAttacked(playerAttack);     
        System.out.println(player.getName() + " attacks " + monster.getMonsterNavn() + " for " + playerAttack + " damage, and kills the " + monster.getMonsterNavn()); 
        overView += "\n" + player.getName() + " attacks " + monster.getMonsterNavn() + " for " + playerAttack + " damage, and kills the " + monster.getMonsterNavn(); 
       } 
      } 
      else if (input.contains("run")) 
      { 
       player.setGold(player.getGold() - 50); 
       break; 
      } 
      else { 
       System.out.println("Unknown word, try \"attack\" or \"run\" instead!"); 
      } 
     } 

Способ, которым я это сделал, может быть немного странным. Любые советы по форматированию кода также приветствуются!

+2

'if (! Monster.isDead()) {attack back}' – azurefrog

ответ

2

Изменение содержимого вашей обычной атаки следующим образом:

int playerAttack = player.attack(); 
int monsterAttack = monster.attack(); 

monster.getAttacked(playerAttack); 
//etc 

if (monster.getMonsterLiv() > 0) 
{ 
    player.getAttacked(monster.attack()); 
    //etc 
} else { 
    //The monster dies from massive damage! 
} 

Идея заключается в том, что вы всегда применить атаку игрока к монстру, а затем применить только атака игрока к монстру, если монстр жизнь остается.

Таким образом, вам не нужно «вырываться» из вашей логики; следующая итерация цикла будет автоматически завершена.

+0

Спасибо! Я не понимаю. Как я понял, что атака игрока в заявлении if была хорошей идеей. – Peebl

 Смежные вопросы

  • Нет связанных вопросов^_^