什么'It’我的石头剪刀坏了
what's wrong with my rock paper scissors?
我正在编写一个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>
Rock
、Paper
和Scissors
都是undefined
,所以它们总是相等的。把它们设置为任何值,它就会起作用。
var Rock = 'Rock';
var Paper = 'Paper';
var Scissors = 'Scissors';
您的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 );
var game = ['Rock', 'Paper', 'Scissors'];
完全去掉变量,因为它们是不需要的。)
现在的情况是:
1) 您声明了三个变量——Rock、Paper和Scissors,但没有为它们赋值,因此它们保持为undefined
。然后根据它们的值生成一个数组——本质上是一个由三个相同元素组成的数组,未定义。
2) 然后您尝试生成一些随机值,但最终得到undefined
,因为该数组中没有其他值。所以你的result
总是undefined
。
3) 则第一个if
检查成功,因为undefined
(结果)严格等于undefined
(Rock)。现在结果很明显:"纸"(一根绳子)赢了,"剪刀"(又是一根绳子,)输了,"摇滚"(我有没有提到那也是一根绳子?)抽成。
最后编辑:永远不要把undefined
和'undefined'
(字符串)混淆。这些也不同:例如,前者是虚假的,而后者则不然。
- "工具提示"jQuery插件坏了
- 我的按钮坏了
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- HTML/JavaScript:为什么不'我的纽扣坏了
- 我的素数函数坏了,但我没有;我不知道为什么
- Uglifier是不是弄坏了我的睡衣
- 我升级了Knockout.js,现在我的模板坏了
- 为什么范围$手表坏了
- 所有的javascript都 ajax.aspnetcdn.com/ajax/ 坏了?打破所有外部引用?自周五以来
- 角度控制器功能坏了
- 谷歌可视化图表API示例坏了,如何修复它们
- 将Facebook应用程序移动到新服务器,现在它坏了
- 为什么我的代码坏了
- 野生动物园浏览器中的后退按钮坏了
- 砌体坏了(可能是经典)
- 旋转相机后,Three.js的skybox似乎坏了
- 验证不是't工作,现在我的网站也坏了
- 什么'It’我的石头剪刀坏了
- JasperServer CE输入控制坏了
- 猫头鹰旋转木马弄坏了我的菜单