2013-12-19 4 views
0

doesItHitdoTheyHit은 항상 실행되는 것처럼 보이지만 dealDamage은 전역 변수에 아무런 영향을주지 않습니다.코드가 전역 변수를 업데이트하지 않는 것처럼 보입니다.

var hitPercentage=Math.floor(Math.random() * 101) + 1 
function doesItHit(){ 
    if(toHit * hitPercentage >= enemyEvasion){itHits = true} 
    else("You miss.") 
} 

function doTheyHit(){ 
    if(enemyToHit * (Math.floor(Math.random() * 101) + 1) >= evasion){enemyToHit = true}} 

function dealDamage(){enemyHealth= enemyHealth-lasers;} 
function recieveDamage(){health= health - enemyLasers;} 

function playerTurn(){ 
     doesItHit(); 
     if (itHits===true){ 
     dealDamage() 
     console.log("You deal "+ lasers + " points of damage to the enemy.") 
     lasersFired=false 

     }  
} 
+0

사용 세미콜론을! [JSHint] (http://www.jshint.com/)와 같은 도구를 사용하십시오. – epascarello

+1

전역을 사용하지 마십시오. 지금은 도움이되지 않지만 앞으로는 유용 할 것입니다. –

답변

5

코드가 실제로 변경되지 않기 때문입니다. 원하지 않는 여분의 세미콜론 (dealDamage)이 있습니다. 당신의 recieveDamage 기능이 어느 아무것도하지 않습니다 보조 노트에

(당신이 enemyHealth에서 lasers의 값을 빼 할 가정)

function dealDamage(){ 
    enemyHealth = enemyHealth - lasers; 
} 

하지만이되지 않습니다 :

이 시도 그렇게하기 위해 당신이 원하는 것을 명확히해야합니다. 그래서 나는 어떤 제안도 할 수 없습니다.

+0

recieveDamage 기능이 작동하지 않는 이유는 무엇입니까? – jordansinn

+0

@jordansinn : 그럼 이제는 그것을 바꿀 것입니다. 당신은 또한'dealDamage' 함수를 내가 제안한 것으로 변경했습니다 ... 그 질문이 그 유형입니까? 아직도 문제가 있습니까? – musefan

0

당신은 당신의 dealDamge 인해 잘못된 표현으로 피해를하지 않도록 올바른 표현을 형성하지 않았다

enemyHealth= enemyHealth;-lasers; 

당신이 :

enemyHealth= enemyHealth-lasers; 
관련 문제