我正在尝试制作一个简单的程序,其中有 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