2017-06-06 49 views
-4
function wpnChs() { 
    var p1 = prompt("Do you take a SWORD or a CLUB to battle?").toUpperCase(); 
    var HP = 1; 
    var EHP = 1; 
    var dmg = Math.floor(Math.random() * 1); 
    var dmgT = Math.floor(Math.random() * 1); 
    var first = Math.floor(Math.random() * 1); 
    if (p1 === "SWORD") { 
    HP = 10; 
    EHP = 9; 
    dmg = Math.floor(Math.random() * 8); 
    dmgT = Math.floor(Math.random() * 6); 
    first = Math.floor(Math.random() * 3); 
    } else if (p1 === "CLUB") { 
    HP = 11; 
    EHP = 9; 
    dmg = Math.floor(Math.random() * 6); 
    dmgT = Math.floor(Math.random() * 5); 
    first = Math.floor(Math.random() * 3); 
    } else { 
    wpnChs(); 
    } 
} 

function dmgD1() { 
    EHP -= dmg; 
} 

function dmgD2() { 
    HP -= dmgT; 
} 

function fR() { 
    if (p1 === "SWORD") { 
    dmg = Math.floor(Math.random() * 8); 
    dmgT = Math.floor(Math.random() * 6); 
    first = Math.floor(Math.random() * 3); 
    } else { 
    dmg = Math.floor(Math.random() * 6); 
    dmgT = Math.floor(Math.random() * 5); 
    first = Math.floor(Math.random() * 3); 
    } 
} 

var fight = function() { 
    if (first === 0 || 2) { 
    dmgD1(); 
    if (dmg === 0) { 
     alert("You attacked, but the enemy dodged it!"); 
     fR(); 
     fight(); 
    } else { 
     alert("You attacked and did " + dmg + " damage. The enemy now has " + EHP 
     + 
     " health"); 
     if (EHP <= 0) { 
     alert("You killed the enemy!") 
     } else { 
     fR(); 
     fight(); 
     } 
    } 
    } else { 
    dmgD2(); 
    if (dmgT === 0) { 
     alert("The enemy attacked, but you dodged it!"); 
     fR(); 
     fight(); 
    } else { 
     alert("The enemy attacked and did " + dmgT + " damage. You now have " + HP 
     + 
     " health."); 
     if (HP <= 0) { 
     alert("You died!"); 
     } else { 
     fR(); 
     fight(); 
     } 
    } 
    } 
}; 

wpnChs(); 
fight(); 
+3

難道你不認爲這是一個好主意,顯示你得到什麼錯誤? – NewToJS

+3

Java與JavaScript無關 – epascarello

+1

奇怪的錯誤是什麼? – epascarello

回答

0

好的,所以第一個問題是範圍問題。當你僅僅爲第一個函數作用域時,你試圖通過代碼使用第一個函數中聲明的變量。你可以通過幾種不同的方法解決這個問題。

  1. 您可以在功能之外聲明它們,使它們更具全球性 。
  2. 您仍然可以在當前函數中聲明它們並將它們作爲參數傳遞給 。像戰鬥(第一,dmg); 我推薦這種方式。

我使用Chrome開發人員工具發現這個初始誤差 - 試圖推F-12,當你瀏覽並試圖運行你的代碼,你經常會得到一個控制檯錯誤 - 像下面如果一個有些事不起作用。這些控制檯錯誤通常爲您的應用程序發生了什麼提供了寶貴的見解。

Error in the console

嘗試閱讀這個詳細瞭解如何使用開發工具:https://developers.google.com/web/tools/chrome-devtools/javascript/

我也建議你看看這裏:https://www.w3schools.com/js/js_scope.asp更多地瞭解在JavaScript作用域。

保留它。第一步可能有點混亂,但一旦你知道它開始全部聚集在一起。