0

好吧,伙计们,我刚刚进入 java 脚本,我做了一个简单的游戏,它可以工作,可以做我想做的一切,但现在我想让它变得困难,这样每次敌人的生命值为 0 时它都会重新填充,但会变得更强大,因为它有更多健康 这就是我想出的 这是使它重新填充的部分 它增加了 100 但重新填充时只保持 200 我希望它每次变为 0 时增加 100

if (enemyHealth<=0) {
    enemyHealth=0;
    alert("you win");
    gold=gold+500;
    document.FGame.Output.value=gold;
    enemyHealth=100+100;
}
4

3 回答 3

1

这是因为你总是将 100 + 100 设置enemyHealth为 100 + 100,它总是等于 200。你可以做的是有一个totalEnemyHealth变量,每次敌人死亡时增加 100。当您复活该敌人时,您会将其生命值设置为新totalEnemyHealth值。

//make sure not to re-initialize this variable every time
var totalEnemyHealth = 100;

//then in your function

 if (enemyHealth<=0){
    enemyHealth = totalEnemyHealth += 100;
    alert("you win")
    gold=gold+500;
    document.FGame.Output.value=gold;
}

但是,如果您有多个敌人,则该方法不会产生预期的结果。要解决您的问题,您将需要更多面向对象的东西,例如由一个Enemy实例表示的所有敌人,其中该实例将有能力跟踪它死亡的次数并将其用作健康乘数。

简单的例子:

var Enemy = {
    baseHealth: 100,
    health: 100,
    deathCount: 0,
    takeDamage: function (amount) {
       if ((this.health -= amount) <= 0) {
           this.die();
           this.respawn();
       }
    },
    die: function () {
        this.deathCount++;
    },
    respawn: function () {
        this.health = (this.deathCount + 1) * this.baseHealth;
    }
};

var someEnemy = Object.create(Enemy);

console.log(someEnemy.health); //100

someEnemy.takeDamage(150); //violent attack

console.log(someEnemy.health); //200
于 2013-11-08T01:24:05.193 回答
0

您可以添加一个计数器。像这样简单的东西:

var counter=1; //at start of game
if (enemyHealth<=0)
{
    enemyHealth=0
    alert("you win")
    gold=gold+500;
    document.FGame.Output.value=gold;
    enemyHealth=100+(100*counter);
    counter++;
}
于 2013-11-08T01:26:34.167 回答
0

这是一个例子:

http://jsfiddle.net/9zhqg/1/

var gold = 0;

for(i = 0; i < 20; i++){
    var num = Math.floor(Math.random()*10);
    var enemyHealth = num *i;
    if (enemyHealth<=0){
        //enemyHealth=0
        alert(i + "you win")
        gold+= 500;
       //document.FGame.Output.value=gold;
        enemyHealth += 100
        alert(enemyHealth);
    }
}

您可以看到它何时运行,它在 20 次 for 循环中达到 0 的次数。然后它会将生命值恢复到 100。我认为这就是你所需要的。- 不是 100% 确定我是否了解您的用例。

于 2013-11-08T01:37:02.813 回答