我正在编写一个javascript石头剪刀应用程序,但我以前从未编写过应用程序。谁能帮我吗?对于Rock,它总是输出平局, 对于纸张,它总是输出一个损失, 对于剪刀,它总是输出一个胜利。
<script type="text/javascript">
var Rock;
var Paper;
var Scissors;
var choice = prompt("Specify your choice of 'Rock', 'Paper', or 'Scissors'.");
var game = [Rock, Paper, Scissors];
document.write("Rock.");
document.write("Paper..");
document.write("Scissors...");
var result = game[Math.floor(Math.random() * game.length)];
if (result === Rock) {
if (choice === "Rock") {
document.write("It's a draw! Try again.");
}
else if (choice === "Paper") {
document.write("You lose! Unlucky.");
}
else if (choice === "Scissors") {
document.write("You win! Nice.");
}}
else if (result === Paper) {
if (choice === "Rock") {
document.write("You win! Nice.");
}
else if (choice === "Paper") {
document.write("It's a draw! Try again.");
}
else if (choice === "Scissors") {
document.write("You lose! Unlucky.");
}}
else if (result === Scissors) {
if (choice === "Rock") {
document.write("You lose! Unlucky.");
}
else if (choice === "Paper") {
document.write("You win! Nice.");
}
else if (choice === "Scissors") {
document.write("It's a draw! Try again.");
}}
</script>
答案 0 :(得分:4)
Rock
,Paper
和Scissors
都是undefined
,因此它们始终相等。将它们设置为任何东西,它应该可以工作。
var Rock = 'Rock';
var Paper = 'Paper';
var Scissors = 'Scissors';
答案 1 :(得分:3)
您的game
数组实际上是一个包含3个相等值的数组:var Rock
与var Paper
和var Scissors
相同:它们都是未定义的,即没有值
如果你刚给每个人分配了一个值,比如说var Rock=1
,var Paper=2
和var Scissors=3
,那么你的程序应该可行。话虽如此,你可能只是在这里使用字符串,你的数组应该只是["Rock", "Paper", "Scissors"]
。然后,您将再次测试字符串,就像使用choice
变量一样。
编辑:
只是为了好玩,这就是我在下面的评论中所说的关于数字更容易的事情:
var words = ['rock', 'paper', 'scissors'];
var played = words.indexOf( choice );
// if played is -1 here, your player typed in something other than the 3 words you accept
var result = Math.floor(Math.random() * game.length);
var outcome = ( played - result + 2 ) % 3;
var message
if ( outcome == 2 ) {
message = "It's a draw! Try again.";
} else if ( outcome == 1 ) {
message = "You lose! Unlucky.";
} else {
message = "You win! Nice." );
}
document.write( message );
答案 2 :(得分:1)
简而言之,这是因为您在应用程序中混合了字符串文字和未分配的变量。修复起来相当简单:在Rock,Paper和Scissors周围加上引号,如下:
var game = ['Rock', 'Paper', 'Scissors'];
...完全摆脱变量,因为它们不需要。 )
发生了什么:
1)你声明了三个变量 - Rock,Paper和Scissors,但是没有为它们赋值,所以它们保持undefined
。然后从它们的值中创建一个数组 - 本质上是一个由三个相同元素组成的数组,未定义。
2)然后你尝试生成一些随机值,但最终得到undefined
,因为该数组中没有其他内容。因此,result
总是 undefined
。
3)然后第一次if
检查成功,因为undefined
(结果)严格等于undefined
(Rock)。现在结果很明显:“Paper”(一个字符串)获胜,“Scissors”(再次,一个字符串)输了,'Rock'(我还提到那是一个字符串吗?)绘制。
最终修改:不要将undefined
与'undefined'
混淆(字符串)。这些也是不同的:例如,前者是假的,而后者则不是。