什么'It’我的石头剪刀坏了

what's wrong with my rock paper scissors?

本文关键字:石头 坏了 我的 It 什么      更新时间:2023-09-26

我正在编写一个javascript石头剪刀应用程序,但我以前从未编写过应用程序。有人能帮我吗?对于Rock,它总是输出一个draw,对于Paper,它总是输出损耗,对于剪刀来说,它总是输出一个胜利。

<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>

RockPaperScissors都是undefined,所以它们总是相等的。把它们设置为任何值,它就会起作用。

var Rock = 'Rock';
var Paper = 'Paper';
var Scissors = 'Scissors';

您的game数组实际上是一个由3个相等值组成的数组:var Rockvar Papervar Scissors相同:它们都是未定义的,即没有值。

如果您只是为它们中的每一个分配了一个值,比如var Rock=1var Paper=2var 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 );
简而言之,这是因为您在应用程序中混合了字符串文字和未分配的变量。修复起来相当简单:在你的石头、纸和剪刀周围加上引号,就像这样:
var game = ['Rock', 'Paper', 'Scissors'];

完全去掉变量,因为它们是不需要的。)

现在的情况是:

1) 您声明了三个变量——Rock、Paper和Scissors,但没有为它们赋值,因此它们保持为undefined。然后根据它们的值生成一个数组——本质上是一个由三个相同元素组成的数组,未定义。

2) 然后您尝试生成一些随机值,但最终得到undefined,因为该数组中没有其他值。所以你的result总是undefined

3) 则第一个if检查成功,因为undefined(结果)严格等于undefined(Rock)。现在结果很明显:"纸"(一根绳子)赢了,"剪刀"(又是一根绳子,)输了,"摇滚"(我有没有提到那也是一根绳子?)抽成。

最后编辑:永远不要把undefined'undefined'(字符串)混淆。这些也不同:例如,前者是虚假的,而后者则不然。