重复出现问题(JS/HTML)

trouble repeating (JS/HTML)

本文关键字:JS HTML 问题      更新时间:2023-09-26

我试图组装一个简单的Rock、paper、剪刀模拟器来给我姐姐留下深刻印象,所以我做到了,但代码的随机化部分并不是每次都有效。这是:

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