我制作的游戏中玩家可以选择3个不同的角色。然而,我遇到了一个明显的问题,那就是,当我创建一个函数(如攻击函数)时,它只链接到一个特定的字符。
我宁愿让我的代码写在人们选择角色的地方,所有人都可以使用相同的攻击技能,而不必编写3个不同的。此外,攻击技能与按钮相关联,因此它必须是多样的。
我无法为X播放器设置指定的攻击按钮。那么如何创建我的代码以便它可以添加所有字符而不仅仅是1个指定的字符?
示例:查看下面的警示攻击功能。我可以把它设置为矮人&天使很好。但是,如果玩家选择一个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 :(得分:0)
您可以使用数据属性将dom元素链接到特定字符。例如 -
<button class="attack-btn" data-attacker="dwarf" data-target="angel">Attack</button>
然后在点击处理程序中,您可以提取特定元素的属性攻击者和目标,而不是对值进行硬编码。
希望有所帮助!
答案 1 :(得分:0)
您正在做的一件事是从Player
创建Monster
和Actor
,然后从Player
创建特定的玩家类,并为怪物创建相同的玩家类。
问题在于,现在每个类型的玩家和每种类型的怪物都有一个特定的手柄。
如果我们想要修改当前代码,您必须添加currentPlayer
和currentMonster
个变量,这些变量将等于您想要的Player
和Monster
斗争。然后,您可以避免引用特定的player
和特定的monster
,并使用
playerHitCalc(currentPlayer, currentMonster);
但我建议稍微改变一下,create objects in a little different way.