2011-11-03 3 views
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> 

그것은 특히 그들이 정수있어하지만 난 그렇게하는 방법을 모르겠어요 것을 확인되지 함께 할 수있는 뭔가가있을 수 있습니다.

답변

3

의 작업 버전입니다. var를 제거하여 수정하십시오.

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

가장 직접적인 문제가 있습니다. hitEnemyenemyHealth 데칼레이션에서 var을 제거해야합니다. 그러면 첫 번째 변수를 수정하는 enemyHealth이라는 새 변수가 만들어집니다.

enemyHealth = enemyHealth - parseFloat(attack); 

또한 당신은 점수를 업데이트하기 위해 모든 hitEnemy 전화의 끝에서 begin를 호출해야합니다. 당신이 hitEnemy 기능 내부 enemyHealth의 VAR를 재정의하기 때문에 여기에 코드

+0

아. 감사! 위대한 작품! 나는 그것을 기억하려고 노력할 것이다. – user1026779

+0

@ user1026779 - JaredPar의 대답을 수락했는지 확인하십시오. :-) 감사! – JasCav

0

러드의 응답에 추가 ...

var enemyHealth = enemyHealth - attack; 

은 용

var enemyHealth; 
enemyHealth = enemyHealth - attack; 

먼저 enemyHealthhitEnemy의 범위 * undefined로 정의 속기이다. 이제 두 개의 변수가 존재하지만 내부의 변수는 외부 변수를 "음영"하므로 외부 변수를 참조 할 수 없습니다. 따라서 undefined에서 attack을 뺀 값이 NaN입니다.

* 무의미한 소리, 나는 알고있다

관련 문제