【问题标题】:Javascript Dice roll returns unidentifiedJavascript掷骰子返回身份不明
【发布时间】:2012-03-24 06:40:56
【问题描述】:

我正在为我的网站编写一个掷骰子,感谢我的另一个问题,我可以在我的函数中输入数据,但我询问的数据返回身份不明。

            //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"]));

我做错了什么?

【问题讨论】:

  • 现在如果我不在 () 中发送数字,我会得到 NaN,但我希望函数获取我的 consAlign[] 值?
  • 我已经扩展了我的答案来解释为什么你得到 NaN。
  • 现在可以使用了!我要攻击我的代码中“有问题的”部分......我想我必须为那部分制作 JSon。

标签: javascript dice


【解决方案1】:

Dice 函数不返回值。看起来你打算用它来构造一个新对象:

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

编辑:要跟进您的编辑,您将收到 NaN,因为 dicekind 未定义。 5 * undefined 给出 NaN,“不是数字”。

您需要在Dice 中使用this.dicekind 才能使其工作。下面是一种方法:

    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());

我还在 roll 方法中添加了 1,因此值的范围是 1..6,而不是 0..5。

【讨论】:

  • 非常感谢您的回答!
  • 好的,我做到了,它给了我骰子应该是什么。 var nDice; nDice = new Dice(consAlign); console.log(nDice); 它给了我一个带有骰子的对象...现在我该如何掷骰子?
  • 可以调用roll方法:nDice.rollDice()。我在示例中将其重命名为 roll,因为您已经知道它是 Dice 对象,因此您无需在方法名称中重复。
  • 这很有帮助,我正在重新学习 JavaScript,很长一段时间我都没有编写任何代码。我必须恢复节奏!
  • var nDice; nDice = new Dice(consAlign); console.log(nDice); for (var i = 0; i &lt;= 5; i++){ intDice[i] = nDice.rollDice(nDice.dicekind["UnAl"]); } console.log(intDice); 我设法让它工作。所以下一步是整理东西,这样我就可以实现游戏机制。
猜你喜欢
  • 1970-01-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 2021-10-07
  • 2012-02-29
  • 2015-06-26
相关资源
最近更新 更多