2015-12-15 63 views
0

我正在製作一個遊戲,玩家可以選擇3個不同的角色。然而,我遇到了一個明顯的問題,那就是當我創建一個函數(如攻擊函數)時,它只鏈接到一個特定的字符。Javascript:你如何輸入未知變量?

我寧願寫我的代碼,當人選擇他們的角色時,所有人都可以使用相同的攻擊技能,而不必編寫3個不同的角色。另外,攻擊技能與一個按鈕相關聯,所以它必須是多樣的。

我不能有一個指定 X播放器的攻擊按鈕。那麼,如何製作我的代碼,以便它可以添加所有字符而不是僅指定一個字符?

例如:看我的功能下面爲罷工攻擊。我可以把它設置爲侏儒&天使這很好。然而,如果玩家選擇ELF字符呢?那麼這個功能將不起作用,因爲它認爲角色是一個矮人,與天使戰鬥。我怎樣才能解決這個問題?

New=Object.create; 

actor = { 
    primaryStats: function (level, hp, hpcap, balance, balancecap, exp){ 
     this.level = level; 
     this.hp = hp; 
     this.hpcap = hpcap; 
     this.balance = balance; 
     this.balancecap = balancecap; 
     this.exp = exp; 
}, 

player = New (actor), 
monster = New (actor), 

dwarf = New(player), 
human = New(player), 
elf = New(player), 

angel = New(monster), 
demon = New(monster), 
dragon = New(monster); 

//ATTACK SKILL ONE 
dom.el("strike").onclick = function strike() { 

    playerHitCalc(dwarf, angel); 
    }; 

    playerHitCalc = function(character, boss){ 
     roll = Math.floor(Math.random() * character.accuracy + 1); 
     if (roll > boss.agility){ 
      var hit = true; 
     } 
     else { 
      hit = false; 
      logMessage(boss.ID + " " + "has evaded your attack!") 
     } 
     playerDamCalc = function(){ 
      if (hit == true){ //If you score a successful hit 
       var damage = Math.floor(Math.random() * character.strength + 1); 
       var totalDamage = damage - boss.armor; // Subtract Damage from Bosses Armor 
       if(totalDamage <= 0)totalDamage += boss.armor; // Add boss armor to prevent Negative Numbers 
       boss.hp -= totalDamage; // Subtract bosses HP from damage. 
       character.exp += totalDamage * 0.25; // Gain 1 exp point per 4 damage done 
       dom.setText("bosshealthcounter", boss.hp) // Update Bosses Health 
       logMessage("You hit " + boss.ID + " for " + totalDamage + " damage!"); 
      } 
+0

http://stackoverflow.com/questions/892595/understanding-原型繼承式的JavaScript – kay

回答

0

您可以使用數據屬性DOM元素鏈接到特定的字符。例如 -

<button class="attack-btn" data-attacker="dwarf" data-target="angel">Attack</button> 

然後在上單擊處理程序,您可以提取該特定元素的屬性攻擊和,而不是硬編碼值目標

希望有幫助!你正在做

0

一兩件事是建立從PlayerActorPlayerMonster,然後具體播放器類與同爲怪物。

問題在於現在你對每種類型的玩家和每種類型的怪物都有一個特定的句柄。

如果我們想編輯目前的代碼,你就必須添加currentPlayercurrentMonster變量,你會做等於PlayerMonster你想打架。然後,你可以避開引用具體player和具體monster,只是使用

playerHitCalc(currentPlayer, currentMonster);

但我建議改變的東西一點點,create objects in a little different way.