2016-12-14 5 views
0

так вот что я хочу сделать:javascript while loop print after loop done

Два объекта имеют переменные hp и power. Я хочу сделать битву между ними. Логика выполняет цикл, который выполняет следующие действия: object1HP-object2Power, Object2HP - Object2Power. Когда HP одного из объектов 0 или ниже - распечатайте, кто выиграл.

это то, что я до сих пор:

this.battle = function(other) { 
 
    \t do { 
 
      this.hp - other.power; 
 
      other.hp - this.power; 
 
     } 
 
    \t while (this.hp <=0 || other.hp <=0); 
 
     
 
     if(this.hp <=0) { 
 
      console.log(this.name + " won!"); 
 
     } else { 
 
      console.log(other.name + " won!"); 
 
     } 
 
    }

Я знаю, что это может быть беспорядок. Благодаря!

+1

вам необходимо изменить свой цикл и (&&) и> 0, чтобы он продолжался до тех пор, пока он не окажется ниже нуля или равен нулю – Pete

ответ

0

Я не уверен, в чем ваш вопрос. Работает ли фрагмент кода? Одна крошечная деталь, которая приходит на мой взгляд в том, что вы, вероятно, хотите написать

this.hp -= other.power; 
other.hp -= this.power; 

вам не хватает «=», и вы получите бесконечный цикл, поскольку переменные оставаться неизменными.

0

Это должен быть рабочий фрагмент кода:

this.battle = function(other) { 
 
    \t do { 
 
      this.hp = this.hp - other.power; //Need to set this.hp equal to it, or nothing is changing 
 
      other.hp = other.hp - this.power; 
 
     } 
 
    \t while (this.hp >=0 && other.hp >=0); //You want to keep running the loop while BOTH players have HP above 0 
 
     
 
     if(this.hp <=0) { //If this has less than zero HP, then the other person won, so you need to inverse it 
 
      console.log(other.name + " won!"); 
 
     } else { 
 
      console.log(this.name + " won!"); 
 
     } 
 
    }

Первый вопрос, вы имели в том, что вы не устанавливали переменные после того, как вы изменили их. Просто наличие this.hp - other.power не сохраняет значение в любой переменной. Таким образом, this.hp остается неизменным после каждого цикла. Чтобы исправить это, просто установите новое значение в this.hp, указав this.hp = this.hp - other.power.

Вторая проблема заключается в том, что ваше условие для вашего цикла while неверно. Высказывание this.hp <= 0 || other.hp <= 0 гласит: «Если у какого-либо игрока есть hp меньше нуля, продолжайте работать,« где, как вы ищите », если оба игрока имеют hp больше нуля, продолжайте работать«

Наконец, ваша логика в финале if заявление было неправильным. Я добавил несколько комментариев к фрагменту кода, чтобы просмотреть изменения. Сообщите мне, если что-то по-прежнему не так, надеюсь, что это помогло.