我正在尝试向控制台登录一条消息: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>
答案 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个数字是否等于。