2016-12-14 14 views
0

javascript whileループの後にループが行われた

2つのオブジェクトには、hpと力の変数があります。私は彼らの間で一種の戦いをしたい。ロジックは、次のようなループを実行します:object1HP-object2Power、Object2HP - Object2Power。オブジェクトのうちの1つの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に変更する必要があります。その結果、ループが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 - other.powerと言って新しい値をthis.hpに設定してください。

第2の問題は、whileループの条件が正しくないことです。 this.hp <= 0 || other.hp <= 0と言っているのは、どちらかのプレイヤーが0よりも少ないhpを持っているなら、探しているものが「両方のプレイヤーが0より大きいhpを持っているなら、実行し続ける」ということです。

最後に、 ifステートメントが間違っていました。コードスニペットに関するいくつかのコメントを追加して、変更を順を追って説明します。 何かが間違っている場合はお知らせください。

関連する問題