1

私は簡単なゲームに取り組んでおり、攻撃ボタンをクリックすると、ベースと強さに基づいて乱数が生成され、敵の健康状態からそれを差し引くようにコーディングするまでになりましたが、減算部分動作しないようです。常に出力しますNaN

<head>
    <script>
    var playerHealth=100;
    var enemyHealth=100;
    var strength=10;

    function begin(){
        document.getElementById('playerhealth').innerHTML = playerHealth;
        document.getElementById('enemyhealth').innerHTML = enemyHealth;
        }

    function hitEnemy(){
        var attack=Math.floor(Math.random()*20 + strength);
        var enemyHealth = enemyHealth - attack;
        document.getElementById('damage').innerHTML = attack;   
        document.getElementById('enemyhealth').innerHTML = enemyHealth;
        }

    </script>
</head>
<body onload="begin()">
        <input type="button" name="doit" id="doit" value="Attack!" onclick="hitEnemy();">
        <br /><span>playerhealth</span>
        <div style="font-size:3em;" id="playerhealth"></div>
        <span>enemyhealth</span>
        <div style="font-size:3em;" id="enemyhealth"></div>
        <br />
        <span>You Did:</span><span style="font-size:3em;" id="damage"></span><span>damage</span>

</body>

特に整数であることを確認していないことと関係があるかもしれませんが、その方法はわかりません。

4

3 に答える 3

3

ここが一番の課題です。の内部のデカールvarから削除する必要があります。これにより、最初の変数を変更する intsad という名前の新しい変数が作成されます。 enemyHealthhitEnemyenemyHealth

enemyHealth = enemyHealth - parseFloat(attack);

さらに、スコアを更新するためにbegin、すべての通話の最後に通話する必要があります。hitEnemyここにコードの作業バージョンがあります

于 2011-11-03T00:37:33.007 に答える
3

hitEnemy 関数内で energyHealth 変数を再定義するためです。変数を削除して修正します。

 function hitEnemy(){
        var attack=Math.floor(Math.random()*20 + strength);
        enemyHealth = enemyHealth - attack;
        document.getElementById('damage').innerHTML = attack;   
        document.getElementById('enemyhealth').innerHTML = enemyHealth;
        }
于 2011-11-03T00:40:04.240 に答える
0

Jared の応答に追加するには...

var enemyHealth = enemyHealth - attack;

は...の省略形です

var enemyHealth;
enemyHealth = enemyHealth - attack;

まず、はのスコープ内で *enemyHealthとして定義されます。現在、名前付きの2 つの変数が存在しますが、内側の変数が外側の変数を「覆い隠し」、外側の変数を参照できなくなります。したがって、は から差し引かれ、 が生成されます。undefinedhitEnemyenemyHealthattackundefinedNaN

* 無意味に聞こえますが、私は知っています

于 2011-11-03T02:03:37.177 に答える