为什么我的 rock/paper/scissors 游戏会为多个函数调用获得相同的随机数?
Why is my rock/paper/scissors game getting the same random number for multiple function calls?
我已经制作了一个 rock/paper/scissors.
的功能性游戏(如果可能非常冗长的话)
如果我 运行 通过一遍又一遍地调用该函数来玩游戏,“计算机”的选择是正确随机的,因此游戏的结果是预期的。但是,如果我一次调用该函数三次,我的猜测是“石头”、“布”和“剪刀”,计算机的选择是随机的,但相同的选择会应用于对函数的所有三次调用。
提前谢谢你。问题来了...
JS:
const choices = ["rock", "paper", "scissors"];
const randChoice = Math.floor(Math.random() * choices.length);
const compChoice = choices[randChoice];
const playGame = (you, comp) => {
if (you === "paper" && comp === "rock") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "rock" && comp === "paper") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "rock" && comp === "scissors") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "scissors" && comp === "rock") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "scissors" && comp === "paper") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "paper" && comp === "scissors") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === comp) {
console.log("You both chose " + you + ". That's a draw.")
}
};
如果我调用该函数一次,游戏就可以运行...
playGame("rock", compChoice);
如果我三次调用该函数,计算机对所有三场比赛的选择都是相同的,因此我每次都会赢、输和平,尽管顺序是随机的...
playGame("rock", compChoice);
playGame("paper", compChoice);
playGame("scissors", compChoice);
const randChoice = Math.floor(Math.random() * choices.length);
是常数,你想在每次播放之间重新计算randChoice和compChoice
randChoice
被调用一次,compChoice
被评估一次,因此当您 playGame
时,您每次都通过相同的计算机选择。
playGame
应修改为每次玩游戏时执行选择:
const choices = ["rock", "paper", "scissors"];
const playGame = (you, comp) => {
var randChoice = Math.floor(Math.random() * choices.length);
var compChoice = choices[randChoice];
if (you === "paper" && comp === "rock") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "rock" && comp === "paper") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "rock" && comp === "scissors") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "scissors" && comp === "rock") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "scissors" && comp === "paper") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "paper" && comp === "scissors") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === comp) {
console.log("You both chose " + you + ". That's a draw.")
}
};
我已经制作了一个 rock/paper/scissors.
的功能性游戏(如果可能非常冗长的话)如果我 运行 通过一遍又一遍地调用该函数来玩游戏,“计算机”的选择是正确随机的,因此游戏的结果是预期的。但是,如果我一次调用该函数三次,我的猜测是“石头”、“布”和“剪刀”,计算机的选择是随机的,但相同的选择会应用于对函数的所有三次调用。
提前谢谢你。问题来了...
JS:
const choices = ["rock", "paper", "scissors"];
const randChoice = Math.floor(Math.random() * choices.length);
const compChoice = choices[randChoice];
const playGame = (you, comp) => {
if (you === "paper" && comp === "rock") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "rock" && comp === "paper") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "rock" && comp === "scissors") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "scissors" && comp === "rock") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "scissors" && comp === "paper") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "paper" && comp === "scissors") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === comp) {
console.log("You both chose " + you + ". That's a draw.")
}
};
如果我调用该函数一次,游戏就可以运行...
playGame("rock", compChoice);
如果我三次调用该函数,计算机对所有三场比赛的选择都是相同的,因此我每次都会赢、输和平,尽管顺序是随机的...
playGame("rock", compChoice);
playGame("paper", compChoice);
playGame("scissors", compChoice);
const randChoice = Math.floor(Math.random() * choices.length);
是常数,你想在每次播放之间重新计算randChoice和compChoice
randChoice
被调用一次,compChoice
被评估一次,因此当您 playGame
时,您每次都通过相同的计算机选择。
playGame
应修改为每次玩游戏时执行选择:
const choices = ["rock", "paper", "scissors"];
const playGame = (you, comp) => {
var randChoice = Math.floor(Math.random() * choices.length);
var compChoice = choices[randChoice];
if (you === "paper" && comp === "rock") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "rock" && comp === "paper") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "rock" && comp === "scissors") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "scissors" && comp === "rock") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === "scissors" && comp === "paper") {
console.log(you + " beats " + comp + ". YOU WIN!")
} else if (you === "paper" && comp === "scissors") {
console.log(comp + " beats " + you + ". YOU LOSE!")
} else if (you === comp) {
console.log("You both chose " + you + ". That's a draw.")
}
};