Javascript Dice roll возвращается неопознанным - PullRequest
1 голос
/ 06 марта 2012

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

            //Constant
        var consDie = new Array(3); //Implanté les élément de constance des dés. 
            for (var i = 0; i <= 2; i++){
                consDie[i] = 12 - (i * 2);
                console.log("D" + consDie[i]); 
            }

            var consNDice = 6; //Constante pour le nombre de dés
            var consAlign = {
                UnAl : consDie[2], 
                Bal : consDie[1], 
                Phys : consDie[0], 
                Ment : consDie[0]
            }; 
            //declaration of an object that contain the kind of dice that is rolled by powerup 

        //Variable integers
        var intDice = new Array(6); // contenant pour les résultats de dé.
        var intPhys = 0; //Phys Aligned answer counter
        var intBal = 0; //Neutral/balanced aligned answer counter
        var intMent = 0; //Mental aligned answer counter 


        //Dice Roll function

        function Dice (consAlign) {
            //Variables constant
            this.dicekind = consAlign;
            this.rollDice = function() {
                return Math.floor(Math.random()*dicekind);
            };

        }

        console.log(Dice(consAlign["Ment"]));

Что я сделал не так?

1 Ответ

2 голосов
/ 06 марта 2012

Функция Dice не возвращает значение. Похоже, вы хотели использовать его для создания нового объекта:

console.log(new Dice(consAlign["Ment"]));

Редактировать: чтобы продолжить редактирование, вы получаете NaN, потому что dicekind не определено. 5 * undefined дает NaN, "Не число".

Вам нужно будет использовать this.dicekind внутри Dice, чтобы это работало. Вот один из способов сделать это:

    function Dice(kind)
    {
        this._kind = kind;
    }

    Dice.prototype.roll = function()
    {
        return Math.floor(Math.random() * this._kind) + 1;
    };

    var dice = new Dice(6);

    console.log(dice.roll());

Я также добавил 1 в методе roll, чтобы диапазон значений составлял 1..6 вместо 0..5.

...