2013-12-19 47 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内有一个额外的分号,你不需要。

试试这个:

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

(假设你想减去lasersenemyHealth值)

在一个侧面说明,你的recieveDamage功能不会做任何事情,但它不是明确你的意图,所以我不能提供任何建议。

+0

为什么recieveDamage函数不起作用? – jordansinn

+0

@jordansinn:好吧,现在你会改变它。你也改变了你的'dealDamage'功能到我的建议......是这个问题中的一个类型吗?你还有问题吗? – musefan

0

您没有形成正确的表达让你的dealDamge绝不会造成的伤害是由于错误的表达:

enemyHealth= enemyHealth;-lasers; 

你:

enemyHealth= enemyHealth-lasers;