【问题标题】:if statements not working如果语句不起作用
【发布时间】:2013-06-20 19:20:09
【问题描述】:

我是js新手,我只是根据石头剪刀布游戏写了下面的基本功能。由于某种原因,比较函数的结果总是显示为 “绘制”而不是其他结果。我在这里做错了什么?

var userChoice = prompt("Do you choose rock, paper or scissors?");
var computerChoice = Math.random();

if (computerChoice < 0.34) {
    computerChoice = "rock";
} else if (computerChoice <= 0.67) {
    computerChoice = "paper";
} else {
    computerChoice = "scissors";
}

choice1 = userChoice;
choice2 = computerChoice;

var compare = function (choice1, choice2) {
if (choice1 == choice2) {
        return "draw!";
}

if (choice1 == "rock") {
    if (choice2 == "scissors") {
        return "rock wins!";
    } else {
        return "paper wins!";
    }
}

if (choice1 == "paper") {
    if (choice2 == "scissors") {
        return "scissors wins!";
    } else {
        return "paper wins!";
    }
}

    if (choice1 == "scissors") {
        if (choice2 == "rock") {
            return "rock wins!";
        } else {
            return "scissors wins!";
        }
    }
};

compare();

谢谢,我们

【问题讨论】:

  • 你没有向compare传递任何参数。
  • 检查它每次给出的随机值和用户选择的返回值
  • 顺便说一下,最好写 var computerChoice = Math.random() * 3 并比较 computerChoice 在 [0, 1) 中的岩石,[1, 2) 中的纸和其余的剪刀:更精确。
  • 顺便说一句,我认为您应该使用矩阵来确定获胜者...假设您将游戏扩展到rock paper scissors lizard spock(TBBT 版权),您将不得不完全重写您的代码...
  • 要么从比较函数中删除参数,要么在调用时传递参数

标签: javascript if-statement return


【解决方案1】:

你已经用两个参数定义了函数:

var compare = function (choice1, choice2) 

但是你用 0 调用它。

尝试指定选项:

compare("rock", "paper");

【讨论】:

    【解决方案2】:

    您正在调用不带参数的比较:

    compare();
    

    因此choice1choice2 都等于undefined,您的游戏将始终以平局告终。 您应该尝试像这样调用比较函数:

    compare(userChoice, computerChoice);
    

    如果你定义一个函数,参数列表定义给定变量的名称​​在函数的范围内。这不是函数本身应该可用的变量的命名约定。

    【讨论】:

    • choice1choice2compare 的上下文中将等于undefined,而不是null
    【解决方案3】:

    您不能仅通过键入不带参数的 func_name() 来打开功能,就像“干炮”一样。阅读function declaring

    var userChoice = prompt("Do you choose rock, paper or scissors?");
    var computerChoice = Math.random();
    if (computerChoice < 0.34) {
      computerChoice = "rock";
    } else if (computerChoice <= 0.67) {
      computerChoice = "paper";
    } else {
      computerChoice = "scissors";
    }
    choice1 = userChoice;
    choice2 = computerChoice;
    function compare (choice1, choice2) {
      if (choice1 == choice2) {
        return "draw!";
      };
      if (choice1 == "rock") {
        if (choice2 == "scissors") {
          return "rock wins!";
        } else {
          return "paper wins!";
        }
      }
      if (choice1 == "paper") {
        if (choice2 == "scissors") {
          return "scissors wins!";
        } else {
          return "paper wins!";
        }
      }
      if (choice1 == "scissors") {
        if (choice2 == "rock") {
          return "rock wins!";
        } else {
          return "scissors wins!";
        }
      }
    };
    compare(choice1, choice2);
    

    【讨论】:

      猜你喜欢
      • 2012-12-26
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多