【发布时间】:2013-06-20 19:20:09
【问题描述】:
我是js新手,我只是根据石头剪刀布游戏写了下面的基本功能。由于某种原因,比较函数的结果总是显示为 “绘制”而不是其他结果。我在这里做错了什么?
var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();
if (computerChoice < 0.34) {
computerChoice = "rock";
} else if (computerChoice <= 0.67) {
computerChoice = "paper";
} else {
computerChoice = "scissors";
}
choice1 = userChoice;
choice2 = computerChoice;
var compare = function (choice1, choice2) {
if (choice1 == choice2) {
return "draw!";
}
if (choice1 == "rock") {
if (choice2 == "scissors") {
return "rock wins!";
} else {
return "paper wins!";
}
}
if (choice1 == "paper") {
if (choice2 == "scissors") {
return "scissors wins!";
} else {
return "paper wins!";
}
}
if (choice1 == "scissors") {
if (choice2 == "rock") {
return "rock wins!";
} else {
return "scissors wins!";
}
}
};
compare();
谢谢,我们
【问题讨论】:
-
你没有向
compare传递任何参数。 -
检查它每次给出的随机值和用户选择的返回值
-
顺便说一下,最好写 var computerChoice = Math.random() * 3 并比较 computerChoice 在 [0, 1) 中的岩石,[1, 2) 中的纸和其余的剪刀:更精确。
-
顺便说一句,我认为您应该使用矩阵来确定获胜者...假设您将游戏扩展到
rock paper scissors lizard spock(TBBT 版权),您将不得不完全重写您的代码... -
要么从比较函数中删除参数,要么在调用时传递参数
标签: javascript if-statement return