【问题标题】:JavaScript: rock paper scissors. Function errorJavaScript:石头剪刀布。函数错误
【发布时间】:2021-02-28 12:17:54
【问题描述】:

我试图在 JavaScript 中创建游戏“石头、剪纸或剪刀”,但我卡在最后一个函数“game()”上,它应该重复函数 playRound() 5 次,并分别抛出这 5 个结果次。但是没用。

function computerPlay(){
    let optionsList = ["rock", "paper", "scissors"];
    let option = optionsList[Math.floor(Math.random() * optionsList.length)];
    return option
}

function playRound(playerSelection, computerSelection){
    var playerSelection = prompt("Choose: rock, paper or scissors").toLowerCase();
    var computerSelection = computerPlay();

    if (playerSelection = "rock"){
        switch(computerSelection){
            case "rock":
                return "T";
            case "paper":
                return "M";
            case "scissors":
                return "Y";
        }
    }else if (playerSelection = "paper"){
        switch(computerSelection){
            case "rock":
                return "Y";
            case "paper":
                return "T";
            case "scissors":
                return "M";
        }
    }else if (playerSelection = "scissors"){
        switch(computerSelection){
            case "rock":
                return "M";
            case "paper":
                return "Y";
            case "scissors":
                return "T";
        }
    }
}

function game(){
    let i = 0
    for(i=1; i<=5; i++){
        playRound()
        if (playRound()= "M") {
            console.log("Machine Wins");
        }else if (playRound() = "Y"){
            console.log("You Win")
        }else if (playRound() = "T"){
            console.log("You Win!")
        }
    }
}

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你有几个错误:

    • 首先是您尝试使用= 运算符来比较值。您需要使用=====
    • 其次,你需要得到playRound()的返回值,然后检查它的值来确定游戏的结果。但是,您最初是在循环的每次迭代中调用 playRound(),然后在每次尝试确定结果时再次调用。

    试试:

    function computerPlay() {
      let optionsList = ["rock", "paper", "scissors"];
      let option = optionsList[Math.floor(Math.random() * optionsList.length)];
      return option
    }
    
    function playRound(playerSelection, computerSelection) {
      var playerSelection = prompt("Choose: rock, paper or scissors").toLowerCase();
      var computerSelection = computerPlay();
    
      if (playerSelection === "rock") {
        switch (computerSelection) {
          case "rock":
            return "T";
          case "paper":
            return "M";
          case "scissors":
            return "Y";
        }
      } else if (playerSelection === "paper") {
        switch (computerSelection) {
          case "rock":
            return "Y";
          case "paper":
            return "T";
          case "scissors":
            return "M";
        }
      } else if (playerSelection === "scissors") {
        switch (computerSelection) {
          case "rock":
            return "M";
          case "paper":
            return "Y";
          case "scissors":
            return "T";
        }
      }
    }
    
    function game() {
      let i = 0
      for (i = 1; i <= 5; i++) {
        let outcome = playRound()
        if (outcome === "M") {
          console.log("Machine Wins");
        } else if (outcome === "Y") {
          console.log("You Win")
        } else if (outcome === "T") {
          console.log("You Win!")
        }
      }
    }
    
    game();

    【讨论】:

      【解决方案2】:

      不确定这是否能解决问题,但这里有一个语法错误:= 而不是 ==。此外,您不应在每个else 中调用playRound()。只需将结果存储在变量中即可。

       let result = playRound()
       if (result== "M") {                              
              console.log("Machine Wins");
       }else if (result == "Y"){
              console.log("You Win")             
       }else if (result == "T"){
              console.log("You Win!")
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-10
        • 2018-04-06
        • 1970-01-01
        相关资源
        最近更新 更多