我正在做一个快速的游戏,玩家会对敌人的npc造成伤害。我在下面有一个函数来计算损坏,但是我无法通过控制台记录来说我正在做" X"伤害量。我究竟做错了什么?相反,它只是提取函数语句,但我希望它能给我函数值!
var damage = function() {
return Math.floor(Math.random() * 5 + 1);
};
我正确地在另一个代码中调用我的函数,但是当我尝试控制日志记录其他代码中的损坏时,我收到错误。
function attackButton() {
darkwarrior.hp = darkwarrior.hp - damage();
console.log(darkwarrior.hp);
console.log(damage);
答案 0 :(得分:3)
如果你运行console.log(damage());
,你将获得“X”的伤害而不是函数声明。因此,您可以将attackButton()
函数更改为:
function attackButton() {
var damageDealt = damage();
darkwarrior.hp = darkwarrior.hp - damageDealt;
console.log(darkwarrior.hp);
console.log(damageDealt);
答案 1 :(得分:0)
我不确定,你想记录结果吗?如果是这样,你可以这样做:
var damage = function() {
return Math.floor(Math.random() * 5 + 1);
};
console.log(damage());
编辑:
你忘记了()。 +如果不将其放在变量中,则值将不相同:function attackButton() {
var amount = damage()
darkwarrior.hp = darkwarrior.hp - amount;
console.log(darkwarrior.hp);
console.log(amount);
}
答案 2 :(得分:0)
您只需使用表达式将值赋给变量即可。然后记录下来。然后回来。
var damage = function() {
var num = Math.floor(Math.random() * 5 + 1);
console.log(num);
return num;
};
damage();

答案 3 :(得分:0)
这样的事情对你有用。
function NPC(startingLife, name) {
this.hp = startingLife;
this.name = name
}
NPC.prototype.takeDamage = function(amount) {
this.hp = Math.max(this.hp - amount, 0);
if (this.hp == 0) {
console.log(this.name + " Dies");
}
return this.hp;
};
function damage() {
return Math.floor(Math.random() * 5 + 1);
}
var darkwarrior = new NPC(4, 'Dark Warrior');
function attackButton() {
var amount = damage();
darkwarrior.takeDamage(amount);
console.log("Dark Warrior took " + amount + " points of damage");
}
document.querySelector('#attack-button').addEventListener("click", attackButton);

<button id="attack-button">ATTACK!</button>
&#13;
答案 4 :(得分:-1)
您只是返回值而不是打印它。你应该用console.log替换return(