如果您不得不猜测计算机会选择哪个数字,我尝试制作一个小游戏。接近数字的选秀权将获胜。现在,我不知道如何编写一个if / switch来比较这些值并选择一个更接近secretNumber
的值。
这是我当前用于评估谁获胜的代码。如您所见,我只能与编号与秘密编号完全相同的获胜者合作。
if (user1Guess == user2Guess && user1Guess == secretGuess) {
console.log(`TIE!`)
} else if (user1Guess == secretNumber && user2Guess !== secretNumber){
console.log(`Player 1 wins!`)
} else if (user1Guess !== secretNumber && user2Guess == secretNumber)
{
console.log(`Player 2 wins!`)
};
答案 0 :(得分:1)
取每个猜测与secretNumber
之间的差的绝对值。最接近的猜测将是差异较小的猜测:
const user1Diff = Math.abs(user1Guess - secretGuess);
const user2Diff = Math.abs(user2Guess - secretGuess);
if (user1Diff === user2Diff) {
console.log('Tie');
} else if (user1Diff > user2Diff) {
console.log('Player 2 wins');
} else {
console.log('Player 1 wins');
}
答案 1 :(得分:0)
您可以使用Math.abs()
来获得用户猜测之间的差异,而可以使用secretNumber
来比较并确定谁获胜。
希望此摘要有帮助:
const user1Guess = Math.floor(Math.random() * 100) + 1, // Random number between 1-100 to mock user input
user2Guess = Math.floor(Math.random() * 100) + 1, // Random number between 1-100 to mock user input
secretNumber = Math.floor(Math.random() * 100) + 1, // Random number between 1-100 to mock computer pick
user1Diff = Math.abs(user1Guess - secretNumber),
user2Diff = Math.abs(user2Guess - secretNumber);
if (user1Diff === user2Diff) {
console.log(`TIE!`)
} else if (user1Diff < user2Diff) {
console.log(`Player 1 wins!`)
} else if (user1Diff > user2Diff) {
console.log(`Player 2 wins!`)
} else {
console.log(`You broke the game, congrats!`)
}
顺便说一句,您在第一个if
语句中输入错误:secretGuess
必须为secretNumber
答案 2 :(得分:0)
让我们考虑一下猜猜更接近意味着什么。
如果x
比n
更靠近y
。那么从x
到n
的距离必须小于从y
到n
的距离。
对于数字,从x
到n
的距离为abs(n - x)
,即差的绝对值。绝对值始终为非负数。例如,-3
的绝对值为3
。
因此,如果x
比n
更接近y
,那必须表示以下情况也成立:
Math.abs(n - x) < Math.abs(n - y)
然后可以在if语句条件中使用它们。
const user1Distance = Math.abs(secretNumber - user1Guess);
const user2Distance = Math.abs(secretNumber - user2Guess);
if (user1Distance === user2Distance) {
console.log("TIE!");
} else if (user1Distance < user2Distance) {
console.log("Player 1 wins!");
} else {
console.log("Player 2 wins!");
}