条件问题,因为结果总是其他如果



我正在尝试制作一个简单的程序,其中有 5 个掷骰子,最后哪个数字最大就赢了,问题是 if/else if,因为显示的唯一结果是 else if 一个,即使它应该是随机的

我尝试在开始时不将变量设置为 0,而是切换位置。

function RollDie() {
  Math.floor(Math.random() * 6);
  var diceRoll = Math.floor(Math.random() * 6) + 1;
}
var player1 = 0;
var player2 = 0;
player1 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();
player2 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();
if (player2 > player1) {
  text("player 2 has won", 180, 100);
} else if (player2 < player1) {
  text("player 1 has won", 180, 100);
}

我希望最终结果是随机的,但事实并非如此。它总是 if 选项

你需要一点调整。只需返回掷骰子值。它有效,我检查了它。

function RollDie() {
  Math.floor(Math.random() * 6);
  var diceRoll = Math.floor(Math.random() * 6) + 1;
  return diceRoll;
}
var player1 = 0;
var player2 = 0;
player1 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();
player2 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();
if (player2 > player1) {
  alert('player 2 has won', 180, 100);
} else if (player2 < player1) {
  alert('player 1 has won', 180, 100);
}

您需要返回随机值。

如果采用不带语句return函数,则默认情况下该函数返回undefined

这个值被加法,通过加undefined,这个值被转换成一个数字,但这失败了,你得到的值NaN,这意味着,你得到一个不是数字的数字。将任何数字与NaN相加都会返回NaN,即您为两个玩家获得的值。

在这种情况下,与NaN和值的比较总是false因此您永远不会收到获胜的消息。

function RollDie() {
    return Math.floor(Math.random() * 6) + 1;
    // ^^^
}
var player1 = 0;
var player2 = 0;
player1 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();
player2 = RollDie() + RollDie() + RollDie() + RollDie() + RollDie();
console.log(player1);
console.log(player2);
if (player2 > player1) {
    console.log("player 2 has won");
} else if (player2 < player1) {
    console.log("player 1 has won");
}
console.log(undefined + undefined); // NaN

最新更新