- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的游戏运行良好,除了当涉及蜥蜴或史波克时我赢了,我不明白为什么,因为当我输了时,它显示我输了,这是正确的。我试图查找拼写错误,但没有找到。如果有人能看出问题所在,我将不胜感激。
这是一个 fiddle ,以便您可以看到问题:http://jsfiddle.net/5RGwv/
这是我的 HTML:
<div id="center">
<button id="button" onclick="play()">Play</button>
<p>You rolled:</p><span id="myroll"></span>
<p>Your opponent rolled:</p><span id="opproll"></span>
<p id="outcome"></p>
</div>
Javascript:
function play() {
var ROCK = 0;
var PAPER = 1;
var SCISSORS = 2;
var LIZARD = 3;
var SPOCK = 4;
var choices = ['rock', 'paper', 'scissors', 'lizard', 'spock'];
var myRoll = Math.floor(Math.random()*choices.length);
var opponentRoll = Math.floor(Math.random()*choices.length);
document.getElementById("myroll").innerHTML=choices[myRoll];
document.getElementById("opproll").innerHTML=choices[opponentRoll];
if (myRoll == opponentRoll) {
document.getElementById("outcome").innerHTML="It's a draw.";
return;
} //end of if
switch(myRoll) {
case ROCK:
document.getElementById("outcome").innerHTML=(opponentRoll == SCISSORS ? 'You win!' : 'You lose!');
return;
case ROCK:
document.getElementById("outcome").innerHTML=(opponentRoll == LIZARD ? 'You win!' : 'You lose!');
return;
case PAPER:
document.getElementById("outcome").innerHTML=(opponentRoll == ROCK ? 'You win!' : 'You lose!');
return;
case PAPER:
document.getElementById("outcome").innerHTML=(opponentRoll == SPOCK ? 'You win!' : 'You lose!');
return;
case SCISSORS:
document.getElementById("outcome").innerHTML=(opponentRoll == PAPER ? 'You win!' : 'You lose!');
return;
case SCISSORS:
document.getElementById("outcome").innerHTML=(opponentRoll == LIZARD ? 'You win!' : 'You lose!');
return;
case LIZARD:
document.getElementById("outcome").innerHTML=(opponentRoll == SPOCK ? 'You win!' : 'You lose!');
return;
case LIZARD:
document.getElementById("outcome").innerHTML=(opponentRoll == PAPER ? 'You win!' : 'You lose!');
return;
case SPOCK:
document.getElementById("outcome").innerHTML=(opponentRoll == SCISSORS ? 'You win!' : 'You lose!');
return;
case SPOCK:
document.getElementById("outcome").innerHTML=(opponentRoll == ROCK ? 'You win!' : 'You lose!');
return;
} //end of switch(myRoll)
} //end of play()
最佳答案
将您的 switch
语句替换为:
var result = false;
switch(myRoll) {
case ROCK:
result = opponentRoll == SCISSORS || opponentRoll == LIZARD;
break;
case PAPER:
result = opponentRoll == ROCK || opponentRoll == SPOCK;
break;
case SCISSORS:
result = opponentRoll == PAPER || opponentRoll == LIZARD;
break;
case LIZARD:
result = opponentRoll == SPOCK || opponentRoll == PAPER;
break;
case SPOCK:
result = opponentRoll == SCISSORS || opponentRoll == ROCK;
break;
}
document.getElementById("outcome").innerHTML = result ? 'You win!' : 'You lose!';
这段代码使用开关
仅来检查您是否获胜。然后,最后设置该值。
既然如果你投“石头”而对手投“剪刀”或“蜥蜴”,你就赢了,所以我将这些陈述结合起来。
您可以通过仅检查 win
案例来进一步缩短代码,如下所示:
var result = myRoll == ROCK && (opponentRoll == SCISSORS || opponentRoll == LIZARD) ||
myRoll == PAPER && (opponentRoll == ROCK || opponentRoll == SPOCK) ||
myRoll == SCISSORS && (opponentRoll == PAPER || opponentRoll == LIZARD) ||
myRoll == LIZARD && (opponentRoll == PAPER || opponentRoll == SPOCK) ||
myRoll == SPOCK && (opponentRoll == ROCK || opponentRoll == SCISSORS);
document.getElementById("outcome").innerHTML = result ? 'You win!' : 'You lose!';
如果这 5 行中的任何一行为 true
,您就赢了。
关于javascript - 为什么我玩石头、剪子、布、蜥蜴、史波克时没有说我赢了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21849581/
这是我的问题 1)我有动态y数组数据,使用该数组如何连续绘制波浪。 如果Y数组数据完整,则使用相同的y数组数据继续。 2)声音自动播放在该数组值是143.if我停止不停止。 这是我的代码:
网络上有太多使用 WiFi 或蓝牙传输数据的对讲机应用程序(至少我见过的所有应用程序),但没有一个使用内置天线通过 radio 波传输数据真正的对讲机设备。 是否有任何安全原因?还是限制作为发送器/接
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve this
我正在尝试着手研究 boost wave,但到目前为止,我的运气并不好。 我尝试了网站上的示例代码。如下: #include #include #include #include #inclu
我正在尝试使用 svg 编写一个 javascript 加载器。想法是,它是一个从下到上两侧均匀填充的圆圈,加载器的顶线是一个从左到右不断移动的正弦波。 我能够根据百分比为加载程序创建弧线,如下所示:
这个问题在这里已经有了答案: Is there a one-line function that generates a triangle wave? (8 个答案) 关闭 9 年前。 我试图用 A
当我在论坛中搜索时,我了解到要定位 GPS,我必须通过互联网连接或短信发送坐标。但据我所知,我们可以通过 radio 波进行通信,发送语音、图片、数据。我可以用它来获取数据吗? GPS 设备?因为业余
我是一名优秀的程序员,十分优秀!