Javascript 战斗转弯系统

Javascript 战斗转弯系统,javascript,Javascript,我会尽量说清楚,但我可能会错过信息。如果您需要更多信息来回答,请随时提问 我的战斗是一个函数,每当我点击一个特定的按钮,它就会被调用 以下是日志: var clochardInitiative = 9; var Initiative = 10; var fightClochard = function() { if (clochardInitiative>Initiative) { HPNow-=(clochardDmg-Armor); c

我会尽量说清楚,但我可能会错过信息。如果您需要更多信息来回答,请随时提问

我的战斗是一个函数,每当我点击一个特定的按钮,它就会被调用

以下是日志:

var clochardInitiative = 9;
var Initiative = 10;

var fightClochard = function()
{
    if (clochardInitiative>Initiative)
    {
        HPNow-=(clochardDmg-Armor);
        clochardLifeNow -= (Dmg-clochardArmor);
        updateStats();
    }

    else if (Initiative>=clochardInitiative)
    {
        clochardLifeNow -= (Dmg-clochardArmor);
        HPNow-=(clochardDmg-Armor)
        updateStats();
    }   
}
我希望具有较高主动性价值的战斗机首先攻击。如果他杀了对手。那么对手就不能进攻了

现在有了这段代码,两个人都在进行攻击,即使其中一人刚刚去世


谢谢:

首先,在这两种方法中,您都在减少双方的生命!实际上,这意味着你要付出生命代价

var fightClochard = function()
{
    if (clochardInitiative>Initiative)
    {
        HPNow-=(clochardDmg-Armor);
        //clochardLifeNow -= (Dmg-clochardArmor); <-- commented out because the clochard has hit 
        updateStats();
    }

    else if (Initiative>=clochardInitiative)
    {
        clochardLifeNow -= (Dmg-clochardArmor);
        //HPNow-=(clochardDmg-Armor) <-- commented out because player has hit the clochard.
        updateStats();
    }   
}

你的代码有太多错误。基本上,您的代码应该如下所示:

var Fighter = function (life, armor, initiative, dmg) {
  this.life = life;
  this.armor = armor;
  this.initiative = initiative;
  this.dmg = dmg;
};

Fighter.prototype.fight = function(opponent) {
  if (opponent.initiative>this.initiative)
  {
      this.life-=(opponent.dmg-this.armor);
      if(this.life<=0) {
         updateStats();
         return; // <- ANSWER TO YOUR QUESTION
      }
      opponent.life-=(this.dmg-opponent.armor);
      updateStats();
   }
   else if (this.initiative>=opponent.initiative)
   {
     opponent.life-=(this.dmg-opponent.armor);
     if(opponent.life<=0) {
         updateStats();
         return; // <- ANSWER TO YOUR QUESTION
     }
     this.life-=(opponent.dmg-this.armor);
     updateStats();
   }  
};    

但我强烈建议您在继续之前先看一看关于面向对象Javascript的指南和文档,例如,…

我没有看到任何关于玩家是否还活着的测试。无论如何,我强烈建议玩家之间不要有区别,在名字前面加上前缀,而是创建不同的对象:例如player.initiative和clochard.initiative。特别是不同的命名,比如HPNow,clochardLifeNow,它显然代表相同的东西,应该有相同的命名。他们似乎在做同样的事情。更改订单并不是在做你认为它在做的事情。谢谢。我开始清理我的代码,我将遵循您的建议:-