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从. 这将创建一个名为intsead 的新变量,用于修改第一个变量。 enemyHealthhitEnemyenemyHealth

enemyHealth = enemyHealth - parseFloat(attack);

此外,您应该begin在每次通话结束时hitEnemy致电以更新分数。这是代码的工作版本

于 2011-11-03T00:37:33.007 回答
3

因为您在 hitEnemy 函数中重新定义了enemyHealth 变量。删除 var 以修复它。

 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

添加到贾里德的回应......

var enemyHealth = enemyHealth - attack;

是...的简写

var enemyHealth;
enemyHealth = enemyHealth - attack;

首先,enemyHealth被定义为undefined* 的范围内hitEnemy。现在,存在两个名为的变量enemyHealth,但内部变量“遮蔽”了外部变量,因此无法引用外部变量。因此,attack从 中减去undefined,产生NaN

* 这听起来很荒谬,我知道

于 2011-11-03T02:03:37.177 回答