2015-03-14 6 views
1

Я делаю быструю игру, где игрок наносит урон врагу npc. У меня есть функция ниже, которая вычисляет ущерб, но я не могу получить консольный журнал, чтобы сказать, что я наношу урон «Х». Что я делаю не так? Вместо этого он просто подтягивает оператор функции, но я хочу, чтобы он дал мне значение функций!Javascript: Как получить значение функции?

var damage = function() { 
    return Math.floor(Math.random() * 5 + 1); 
    }; 

Я звоню функцию в другом коде правильно, но когда я пытаюсь утешить войти ущерб в этом другом коде, я получаю сообщение об ошибке.

function attackButton() { 
    darkwarrior.hp = darkwarrior.hp - damage(); 
    console.log(darkwarrior.hp); 
    console.log(damage); 
+3

Вероятно потому, что вы не вызывая его - 'повреждения()'? – PSL

+0

Как вы называете свою функцию? – j08691

ответ

3

При запуске console.log(damage()); вы получите «X» количество повреждений вместо функции заявления Таким образом, вы могли бы изменить attackButton() функцию, чтобы быть:.

function attackButton() { 
    var damageDealt = damage(); 
    darkwarrior.hp = darkwarrior.hp - damageDealt; 
    console.log(darkwarrior.hp); 
    console.log(damageDealt); 
+0

Это только заставляет его запускать функцию дважды и дает мне отдельное число с первого раза, когда я его запускал. – Shawn

+0

Отредактировано. Хороший улов, теперь он работает! – winhowes

+0

Это сработало. Думаю, я должен поместить функцию внутри своей кнопки, чтобы она работала отдельно. Спасибо за помощь :) – Shawn

-1

Вы просто возвращаете значение вместо его печати. Вместо этого вы должны заменить возвращение с console.log (

+1

он хочет выполнить функцию, которая вычисляет сумму. Я думаю, что журнал предназначен для отладки. – Florian

+0

console.log() просто отображает значение. Или вы можете сказать, просто распечатайте его. Он не возвращается. – Ejaz

0

Я не уверен, чтобы понять, вы хотите, чтобы войти результат Если да, то вы можете сделать это:

var damage = function() { 
    return Math.floor(Math.random() * 5 + 1); 
    }; 

console.log(damage()); 

EDIT:

вы забыли(). + Значение не будет таким же, если не поставить его в переменной:

function attackButton() { 
    var amount = damage() 
    darkwarrior.hp = darkwarrior.hp - amount; 
    console.log(darkwarrior.hp); 
    console.log(amount); 
} 
0

вы просто должны использовать выражение для присвоения значения переменной. Затем запишите его. Затем верните его.

var damage = function() { 
 
    
 
    var num = Math.floor(Math.random() * 5 + 1); 
 
    console.log(num); 
 
    return num; 
 
}; 
 

 
damage();

+0

Он хочет отобразить результат функции, а не в функции. – Florian

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>