重复问题 (JS/HTML)
trouble repeating (JS/HTML)
我试图拼凑一个简单的石头剪刀布模拟器来打动我妹妹,所以我做到了,但代码的随机化部分并非每次都有效。这是:
<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="rps(1)">Rock</button>
<button type="button" onclick="rps(2)">Paper</button>
<button type="button" onclick="rps(3)">Scissors</button>
<script>
var ai= null;
var rps=function(type){
ai= Math.floor(Math.random()+1*3);
switch(ai){
case 1:
switch(type){
case 1:
alert("Tie");
break;
case 2:
alert("Win");
break;
case 3:
alert("Loose");
break;
}
break;
case 2:
switch(type){
case 1:
alert("Loose");
break;
case 2:
alert("Tie");
break;
case 3:
alert("Win");
break;
}
break;
case 3:
switch(type){
case 1:
alert("Loose");
break;
case 2:
alert("Tie");
break;
case 3:
alert("Win");
break;
}
break;
default:
alert("Error");
break;}
};
</script>
</body>
</html>
请让我知道我做错了什么,以后我该如何改进,以及可以做些什么来挽救它。
谢谢。
您 Math.random
的语义错误。试试这个:
ai = Math.floor(Math.random() * 3 + 1);
现在您随机获得赢、输或平
行中:
ai= Math.floor(Math.random()+1*3);
你必须记住,数学运算符有一定的顺序。乘法发生在加法之前,所以它的写法意味着取 1 * 3
(或 3),然后加上它或 Math.random()
。我猜你总是得到 3。最好和最清晰的解决方案通常是使用括号。应该这样写:
ai = (Math.floor(Math.random()*3)+1);
<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="rps(1)">Rock</button>
<button type="button" onclick="rps(2)">Paper</button>
<button type="button" onclick="rps(3)">Scissors</button>
<script>
var ai= null;
var rps=function(type){
var typeArray= ['','Rock', 'Paper', 'Scissors'];
ai= Math.floor(Math.random()*3+1);
alert(typeArray[type]);
if(type ===1)
{
if(ai ===1)
{
alert("draws with rock");
}
else if(ai ===2)
{
alert("loss to paper");
}
else if(ai ===3)
{
alert("win vs scissors");
}
}
else if(type ===2)
{
if(ai ===1)
{
alert("win vs rock");
}
else if(ai ===2)
{
alert("draw paper");
}
else if(ai ===3)
{
alert("loss vs scissors");
}
}
else
{
if(ai ===1)
{
alert("loss vs rock");
}
else if(ai ===2)
{
alert("win vs paper");
}
else if(ai ===3)
{
alert("draw with scissors");
}
}
};
</script>
</body>
</html>
我试图拼凑一个简单的石头剪刀布模拟器来打动我妹妹,所以我做到了,但代码的随机化部分并非每次都有效。这是:
<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="rps(1)">Rock</button>
<button type="button" onclick="rps(2)">Paper</button>
<button type="button" onclick="rps(3)">Scissors</button>
<script>
var ai= null;
var rps=function(type){
ai= Math.floor(Math.random()+1*3);
switch(ai){
case 1:
switch(type){
case 1:
alert("Tie");
break;
case 2:
alert("Win");
break;
case 3:
alert("Loose");
break;
}
break;
case 2:
switch(type){
case 1:
alert("Loose");
break;
case 2:
alert("Tie");
break;
case 3:
alert("Win");
break;
}
break;
case 3:
switch(type){
case 1:
alert("Loose");
break;
case 2:
alert("Tie");
break;
case 3:
alert("Win");
break;
}
break;
default:
alert("Error");
break;}
};
</script>
</body>
</html>
请让我知道我做错了什么,以后我该如何改进,以及可以做些什么来挽救它。
谢谢。
您 Math.random
的语义错误。试试这个:
ai = Math.floor(Math.random() * 3 + 1);
现在您随机获得赢、输或平
行中:
ai= Math.floor(Math.random()+1*3);
你必须记住,数学运算符有一定的顺序。乘法发生在加法之前,所以它的写法意味着取 1 * 3
(或 3),然后加上它或 Math.random()
。我猜你总是得到 3。最好和最清晰的解决方案通常是使用括号。应该这样写:
ai = (Math.floor(Math.random()*3)+1);
<!DOCTYPE html>
<html>
<body>
<button type="button" onclick="rps(1)">Rock</button>
<button type="button" onclick="rps(2)">Paper</button>
<button type="button" onclick="rps(3)">Scissors</button>
<script>
var ai= null;
var rps=function(type){
var typeArray= ['','Rock', 'Paper', 'Scissors'];
ai= Math.floor(Math.random()*3+1);
alert(typeArray[type]);
if(type ===1)
{
if(ai ===1)
{
alert("draws with rock");
}
else if(ai ===2)
{
alert("loss to paper");
}
else if(ai ===3)
{
alert("win vs scissors");
}
}
else if(type ===2)
{
if(ai ===1)
{
alert("win vs rock");
}
else if(ai ===2)
{
alert("draw paper");
}
else if(ai ===3)
{
alert("loss vs scissors");
}
}
else
{
if(ai ===1)
{
alert("loss vs rock");
}
else if(ai ===2)
{
alert("win vs paper");
}
else if(ai ===3)
{
alert("draw with scissors");
}
}
};
</script>
</body>
</html>