//初学者在一个程序中学习Js我被要求开始研究Rock,Paper,Scissors游戏这是我制作的代码,但计算机总是选择剪刀!?任何想法为什么?任何帮助都是极好的!
如果computerChoice介于0和0.33之间,则使computerChoice等于"rock".
如果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");
}
Run Code Online (Sandbox Code Playgroud)
首先,你不能只是编写语法 - 它只是不起作用.编程是关于现有规则的应用,其中大多数规则不是您自己的规则.
在JavaScript中,由于逗号运算符,x === (a, b)在语义上等效于x === b(当a表达式没有副作用时),因此显然不起作用.在原始代码中,这确保了前两个条件(例如choice === 0.33)中没有一个匹配 - 因此始终选择默认/"剪刀".
虽然检查包容性范围的一般方法是x >= a && x <= b,我们可以通过依赖if条件评估的顺序和通过扩大范围的"英寸驱动"来做得比这更好.
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");
}
Run Code Online (Sandbox Code Playgroud)
或者,我们也可以得到一个谨慎的随机整数,
/* get a random number 1, 2, or 3 */
var choice = Math.floor(Math.random() * 3 + 1);
Run Code Online (Sandbox Code Playgroud)
然后可以使用没有范围检查的直接相等
if (choice === 1) {
console.log("rock");
} else if (choice === 2) {
console.log("paper");
} else { /* choice === 3 */
console.log("scissors");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4194 次 |
| 最近记录: |