我的代码有什么问题? - 骰子滚动

时间:2013-12-10 22:11:26

标签: javascript dice

我正在尝试向控制台登录一条消息:Gratz!你获得了5分!之后你将两个相同的数字相互滚动。

有人可以解释我的代码有什么问题吗?

<script>


 var d1 = Math.floor(Math.random()*6) +1;

  var diceRolls = [];


function rollDice() {
           var die1 = document.getElementById("die1");
           var status = document.getElementById("status");               
           var d1 = Math.floor(Math.random()*6) +1;
           console.log("You rolled "+d1+".");
           diceRolls.push(d1);


  }
    if(diceRolls[diceRolls.length - 1] === d1) {
      console.log("You won 5 points!");
  }     
  </script>

2 个答案:

答案 0 :(得分:4)

您的代码存在的问题是您在函数外部进行检查,并且条件不正确。首先,您需要确保骰子至少滚动了两次,然后比较最后两个值。正如@Bergi所说,你还需要调用该函数,虽然我猜你已经这样做了。以下是正确的解决方案:

var diceRolls = [];
var totalDiceRolls = 0;
// you set this to whatever you want the limit to be
var maxDiceRolls = 10;

function rollDice() {
       if (++totalDiceRolls > maxDiceRolls)
       {
           alert(maxDiceRolls + " dice rolls allowed at max!");
           return;
       }
       var die1 = document.getElementById("die1");
       var status = document.getElementById("status");               
       var d1 = Math.floor(Math.random()*6) +1;
       console.log("You rolled "+d1+".");
       diceRolls.push(d1);



       if(diceRolls.length > 1 && diceRolls[diceRolls.length - 2] == d1) {
           console.log("You won 5 points!");
       } 
}

答案 1 :(得分:2)

您永远不会循环结果,并为d1指定一个随机数,但不对其执行任何操作。

你需要掷骰子,每次循环数组以找出2个数字是否相同,在你不循环的那一刻,所以无法知道2个数字是否等于。