javascript - 如何让我的 JS 石头剪刀布游戏正常运行?

标签 javascript html debugging

我需要你的帮助才能完成学校作业中的石头、剪刀、布游戏。我需要您的建议来帮助我使这个 JS 游戏应用程序正常工作。

为了让这个应用程序正常工作,其他人的输入越多越好!!

该作业需要三个主要内容: * getchoices函数用于获取 用户的输入 * 下面的条件语句 变量computer_choice和 测试随机性的player_choice 计算机生成的值和 进行比较,然后打印出 正确值 * 游戏正常运行

感谢您提前提供的所有帮助!

肖恩

var $ = function (id) {
    return document.getElementById(id);
}

window.onload = function () {
    $("show").onclick = getChoices;
}

compare(player_choice,computer_choice); 

function getChoices() {
    computer_choice = Math.random();
    player_choice = $("player_choice").onclick.value
}    

if(computer_choice <= 0.33 ){
    computer_choice = "Rock";
} else if(computer_choice <= 0.66){
    computer_choice= "Paper";
} else {
    computer_choice = "Scissors";
}

var compare = function(choice1, choice2){
    if(choice1 == choice2){
        return "The result is a tie!";
    } else if(choice1 == "Rock"){
        if(choice2 == "Scissors"){
            return "Rock wins";
        } else {
            return "Paper wins";
        }
    
        if(choice1 == "Paper"){
            if(choice2 == "Rock"){
                return "Paper wins";
            }
        } else{
            return "Scissors wins";
        }
    } else if(choice1 == "Scissors"){
        if(choice2 == "Paper"){
            return "Scissors wins";
        } else{
            return "Rock wins";
        }
    }
};
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Shipping Order Form</title>
<link rel="stylesheet" href="assets/bootstrap.min.css">
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<script src="assets/game.js"></script>
</head>
<body>
<p>&nbsp;</p>
<div class="container">
<div class="row">
  <div class="col-md-4 col-md-offset-4">
  
    <div class="form-group">
      <label for="player_choice">Select either rock, paper or scissors:</label>
      <select name="player_choice" id="player_choice" class="form-control">
        <option value=""></option>
        <option value="rock">rock</option>
        <option value="paper">paper</option>
        <option value="scissors">scissors</option>
      </select>
    </div>
 
    <div class="form-group">
      <input type="button" class="btn btn-default" value="Show" name="show" id="show" />
    </div>
  </div>
</div>
</div>
</body>
</html>

最佳答案

您的格式使代码有点难以阅读,但我可以发现一些内容:

compare(player_choice,computer_choice);

这似乎是在 .js 文件中全局调用的,并且会在加载 .js 文件时调用一次,不应该在用户做出选择后调用,例如在 getChoices() 的末尾?:

function getChoices() {
  computer_choice = Math.random();
  player_choice = $("player_choice").onclick.value
  compare(player_choice,computer_choice);
}

另一个明显的错误是compare()函数的第二部分。格式设置使得这种情况很难被发现:

var compare = function(choice1, choice2)
{
   if(choice1 == choice2)
   {
       return "The result is a tie!";
   }
   else if(choice1 == "Rock")
   {
       if(choice2 == "Scissors")
       {
           return "Rock wins";
       }
       else 
       {
           return "Paper wins";
       }
      if(choice1 == "Paper")
      {
          if(choice2 == "Rock")
          {
             return "Paper wins";
          }
       }
       else
       {
          return "Scissors wins";
       }
    }
    else if(choice1 == "Scissors")
    {
        if(choice2 == "Paper")
        {
            return "Scissors wins";
        }
        else
        {
            return "Rock wins";
         }
     }
};

正如你所看到的,你的括号似乎有点困惑。 “if(choice1 == "Paper")”应该是一个 else if,位于其所在级别之上:

else if(choice1 == "Rock")
{
   if(choice2 == "Scissors")
   {
       return "Rock wins";
   }
   else 
   {
       return "Paper wins";
   }
}
else if (choice1 == "Paper")
{
  ....
}
else if (choice1 == "Scissors") // this could be an else
{
   ...
}

除此之外,我会牢记 Wolfies 的建议,如果您学会格式化代码并提出一个具体问题并解释为什么/什么不起作用,您更有可能得到一个好的答案。

祝你的学校项目顺利。

PS。 Compare() 函数返回一个结果字符串,您可能希望将其打印在某处或将某个元素的文本设置为其,因为现在您将返回该字符串,但不对返回值执行任何操作。 DS

PSS。 player_choice = $("player_choice").onclick.value 可能不是您想要做的,自从我使用 JQuery 以来已经有一段时间了,但我认为 .onclick.value 甚至无效?您可能想要 $("player_choice").value 或 .selectedValue 之类的东西。您还应该小心使用您的选项,因为在您的比较函数中,您与“Rock”等进行比较,但选择元素中的值称为“rock”等。DSS。

关于javascript - 如何让我的 JS 石头剪刀布游戏正常运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42087255/

相关文章:

javascript - PhantomJS 更新资源文件路径

c++ - 自动将子进程附加到调试器

java - Java进程的dump文件分析?

html - 即使有动态父级也保持 div 固定

html - 如何修改 Bootstrap 下拉按钮的设计

javascript - margin-left 和 width 属性在 mozilla firefox 中不起作用

android - 将 Android 调试器附加到使用我不拥有的 Eclipse 项目构建的进程

JavaScript 模块层次结构?

javascript - 在 JavaScript 中哪里执行参数验证?

javascript - Jquery - 使用窗口滚动时抖动滚动