这是因为你总是将 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