2012-03-06 77 views
1

我正在爲我的網站寫一個骰子滾輪,並感謝我的其他問題,我可以在我的函數中輸入數據,但我要求的數據返回的身份不明。Javascript Dice roll返回身份不明

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

我做錯了什麼?

+0

現在我得到了NaN,如果我不在()中發送一個數字,但我想讓函數獲得我的consAlign []值? – Delarn 2012-03-06 18:53:32

+0

我已經擴展我的答案來解釋你爲什麼得到NaN。 – Douglas 2012-03-06 19:14:28

+0

它現在有效!我要攻擊我的代碼中的「疑問」部分......我想我必須爲此部分製作JSon。 – Delarn 2012-03-06 19:55:08

回答

2

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

我也是在輥法加1,使值的範圍爲1..6,而不是0..5。

+0

非常感謝這個答案! – Delarn 2012-03-06 18:36:06

+0

好的,我做到了,它給了我骰子應該是什麼。 'var nDice; \t \t \t nDice = new Dice(consAlign); \t \t \t console.log(nDice);' 它給了我一個骰子的對象......現在我該如何擲骰子? – Delarn 2012-03-06 19:08:09

+0

你可以調用roll方法:'nDice.rollDice()'。我在我的示例中將其重命名爲「roll」,因爲您已經知道它是一個「Dice」對象,所以您不需要在方法名稱中重複該操作。 – Douglas 2012-03-06 19:17:36