我正在编写这个非常简单的游戏,并希望每个玩家每次击中时都会造成伤害。出于某种原因,第一个匹配具有随机值,但接下来的后续值完全相同。它几乎就像Math.floor(Math.random())
函数运行一次,然后停止并使用它第一次给出的值。
以下是代码:
this.attackpoints=Math.floor((Math.random()*10)+5);
this.attack=function(opponent) {
opponent.hitpoints-=this.attackpoints;
console.log(this.name + " has " + this.hitpoints + " hitpoints and " + this.energy + " energy.");
console.log(this.name + " just hit " + opponent.name + ".");
}
答案 0 :(得分:1)
初始化Math.random
的值时,您只运行this.attackpoints
次。
你可以这样做:
this.getAttackPoints = function() {
return Math.floor((Math.random()*10)+5);
}
this.attack=function(opponent) {
opponent.hitpoints-=this.getAttackPoints();
console.log(this.name + " has " + this.hitpoints + " hitpoints and " + this.energy + " energy.");
console.log(this.name + " just hit " + opponent.name + ".");
}
答案 1 :(得分:0)
使用功能 -
this.attackpoints= function () {
return Math.floor((Math.random()*10)+5);
};
然后通过调用函数获得一个新的随机值 -
opponent.hitpoints-=this.attackpoints();
答案 2 :(得分:0)
this.attackpoints=function(){ return Math.floor((Math.random()*10)+5); };
this.attack=function(opponent) {
opponent.hitpoints-=this.attackpoints();
console.log(this.name + " has " + this.hitpoints + " hitpoints and " + this.energy + " energy.");
console.log(this.name + " just hit " + opponent.name + ".");
}
答案 3 :(得分:0)
不幸的是你没有发布我们可以看到的代码,上面的代码被调用,但我的猜测是你只能调用
this.attackpoints=Math.floor((Math.random()*10)+5);
一次又一次,你只使用始终保持不变的攻击点变量。
答案 4 :(得分:0)
那是因为你总是调用你对象的攻击点变量。相反,你应该调用一个再次计算攻击点的方法,而不是从变量中获取一个。