2013-12-19 49 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;