//初学者在一个程序中学习Js我被要求开始研究Rock,Paper,Scissors游戏 这是我制作的代码,但电脑总是选剪刀!?任何想法为什么? 任何帮助都会很棒!
如果computerChoice介于0和0.33之间,则使computerChoice等于"摇滚"。
如果computerChoice介于0.34和0.66之间,则使computerChoice等于" paper"。
如果computerChoice介于0.67和1之间,则使computerChoice等于"剪刀"。
var userChoice = prompt ("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice === (0 , 0.33)) {
console.log("rock");
} else if (computerChoice === (0.34 , 0.66)) {
console.log("paper");
} else {
console.log("scissors");
}
答案 0 :(得分:7)
首先,你不能只是编写语法 - 它只是不起作用。编程是关于existing rules的应用,其中大多数规则不是你自己的。
在JavaScript中,由于comma-operator,x === (a, b)
在语义上等同于x === b
(当a
表达式没有副作用时),因此显然赢了&# 39;工作。在原始代码中,这确保了前两个条件中没有一个(例如choice === 0.33
)匹配 - 所以默认/否则"剪刀"总是被选中。
在the general way to check an inclusive range is x >= a && x <= b
期间,我们可以依靠if
条件评估和"inchworming"的排序来扩大范围,从而做得更好。
if (choice <= 1/3) {
console.log("rock");
} else if (choice <= 2/3) { /* choice > 1/3, per above */
console.log("paper");
} else { /* choice > 2/3, per above */
console.log("scissors");
}
或者,我们也可以得到一个谨慎的随机整数,
/* get a random number 1, 2, or 3 */
var choice = Math.floor(Math.random() * 3 + 1);
然后可以使用没有范围检查的直接相等
if (choice === 1) {
console.log("rock");
} else if (choice === 2) {
console.log("paper");
} else { /* choice === 3 */
console.log("scissors");
}
答案 1 :(得分:1)
您没有使用有效的JavaScript语法进行数字比较。 JavaScript中没有允许您执行此操作的结构:
if(computerChoice===(0, 0.33)){
//...
}
请改为尝试:
if(computerChoice > 0 && computerChoice <= 0.33){
//...
}