【问题标题】:Javascript - Rock, Paper, Scissors (odinProject) HelppppJavascript - Rock, Paper, Scissors (odinProject) Helpppp
【发布时间】:2020-08-07 10:06:45
【问题描述】:

我在用 javascript 创建一个石头、剪纸、剪刀游戏的任务时遇到了麻烦(来自 odinproject.com 的任务)。每当我使用摇滚作为我的输入时,它似乎工作得很好。但是,当输入纸张或剪刀时,它不能正常工作。请任何帮助、建议和建议将不胜感激。我在这方面还很陌生,渴望了解更多!

谢谢!

这是我的代码:

function userChoice() {
  const userChoice = prompt("Do you choose Rock, Paper, or Scissors?").toLowerCase();
  return userChoice
}

function compChoice() {
  let compChoice = Math.random();
  if (compChoice < 0.34) {
    compChoice = "rock";
  } else if (compChoice <= 0.67) {
    compChoice = "paper";
  } else {
    compChoice = "scissors";
  }
  return compChoice
}

function playRound(userChoice, compChoice) {
  //Rock Choice
  if (userChoice == "rock" && compChoice == "scissors") {
    return "You Win! rock beats scissors!";
  } else if (userChoice == "rock" && compChoice == "paper") {
    return "Loser! paper Beats rock";
  } else if (userChoice == "rock" && compChoice == "rock") {
    return "It's a Draw";
  } else {
    return "Something Went Wrong";
  }
  //paper Choice
  if (userChoice == "paper" && compChoice == "rock") {
    return "You Win! paper beats rock";
  } else if (userChoice == "paper" && compChoice == "scissors") {
    return "You Lose! scissors beats paper";
  } else if (userChoice == "paper" && compChoice == "paper") {
    return "It's a Draw";
  } else {
    return "Something Went wrong";
  }
  //scissors Choice
  if (userChoice == "scissors" && compChoice == "paper") {
    return "You win! scissors beat paper";
  } else if (userChoice == "scissors" && compChoice == "rock") {
    return "You Lose! rock beats scissors";
  } else if (userChoice == "scissors" && compChoice == "scissors") {
    return "It's a Draw";
  } else {
    return "Something Went Wrong";
  }
}

console.log(playRound(userChoice(), compChoice()))

【问题讨论】:

  • 第一个 else{return...} 跳过其余的流程。

标签: javascript function if-statement


【解决方案1】:

如果您不输入rock,则将执行第一个else 语句,因为ifelse if 条件都不为真。它将返回Something went wrong,而不对paperscissors 执行任何测试。

所有其他组合都应该是附加的else if 语句,并且您应该在最后只有一个else

function userChoice() {
  const userChoice = prompt("Do you choose Rock, Paper, or Scissors?").toLowerCase();
  return userChoice
}

function compChoice() {
  let compChoice = Math.random();
  if (compChoice < 0.34) {
    compChoice = "rock";
  } else if (compChoice <= 0.67) {
    compChoice = "paper";
  } else {
    compChoice = "scissors";
  }
  return compChoice
}

function playRound(userChoice, compChoice) {
  //Rock Choice
  if (userChoice == "rock" && compChoice == "scissors") {
    return "You Win! rock beats scissors!";
  } else if (userChoice == "rock" && compChoice == "paper") {
    return "Loser! paper Beats rock";
  } else if (userChoice == "rock" && compChoice == "rock") {
    return "It's a Draw";
  }
  //paper Choice
  else if (userChoice == "paper" && compChoice == "rock") {
    return "You Win! paper beats rock";
  } else if (userChoice == "paper" && compChoice == "scissors") {
    return "You Lose! scissors beats paper";
  } else if (userChoice == "paper" && compChoice == "paper") {
    return "It's a Draw";
  }
  //scissors Choice
  else if (userChoice == "scissors" && compChoice == "paper") {
    return "You win! scissors beat paper";
  } else if (userChoice == "scissors" && compChoice == "rock") {
    return "You Lose! rock beats scissors";
  } else if (userChoice == "scissors" && compChoice == "scissors") {
    return "It's a Draw";
  } else {
    return "Something Went Wrong";
  }
}

console.log(playRound(userChoice(), compChoice()))

或者您可以使用嵌套的if 块。

function userChoice() {
  const userChoice = prompt("Do you choose Rock, Paper, or Scissors?").toLowerCase();
  return userChoice
}

function compChoice() {
  let compChoice = Math.random();
  if (compChoice < 0.34) {
    compChoice = "rock";
  } else if (compChoice <= 0.67) {
    compChoice = "paper";
  } else {
    compChoice = "scissors";
  }
  return compChoice
}

function playRound(userChoice, compChoice) {
  //Rock Choice
  if (userChoice == "rock") {
    if (compChoice == "scissors") {
      return "You Win! rock beats scissors!";
    } else if (compChoice == "paper") {
      return "Loser! paper Beats rock";
    } else if (compChoice == "rock") {
      return "It's a Draw";
    } else {
      return "Something Went Wrong";
    }
  }
  //paper Choice
  else if (userChoice == "paper") {
    if (compChoice == "rock") {
      return "You Win! paper beats rock";
    } else if (compChoice == "scissors") {
      return "You Lose! scissors beats paper";
    } else if (compChoice == "paper") {
      return "It's a Draw";
    } else {
      return "Something Went Wrong";
    }
  }
  //scissors Choice
  else if (userChoice == "scissors") {
    if (compChoice == "paper") {
      return "You win! scissors beat paper";
    } else if (userChoice == "scissors" && compChoice == "rock") {
      return "You Lose! rock beats scissors";
    } else if (userChoice == "scissors" && compChoice == "scissors") {
      return "It's a Draw";
    } else {
      return "Something Went Wrong";
    }
  } else {
    return "That's not a valid choice";
  }
}

console.log(playRound(userChoice(), compChoice()))

【讨论】:

  • 哦哦,说得有道理!如此简单,但我看不到它。非常感谢,我已经花了好几个小时了!
【解决方案2】:

试试这个:您需要删除每个 if 语句末尾的返回,因为它们会无条件地发生。如果没有运行其他返回,您可以在最后返回以获得该结果。

function playRound(userChoice, compChoice) {
  //Rock Choice
  if (userChoice == "rock" && compChoice == "scissors") {
    return "You Win! rock beats scissors!";
  } else if (userChoice == "rock" && compChoice == "paper") {
    return "Loser! paper Beats rock";
  } else if (userChoice == "rock" && compChoice == "rock") {
    return "It's a Draw";
  }
  //paper Choice
  if (userChoice == "paper" && compChoice == "rock") {
    return "You Win! paper beats rock";
  } else if (userChoice == "paper" && compChoice == "scissors") {
    return "You Lose! scissors beats paper";
  } else if (userChoice == "paper" && compChoice == "paper") {
    return "It's a Draw";
  }
  //scissors Choice
  if (userChoice == "scissors" && compChoice == "paper") {
    return "You win! scissors beat paper";
  } else if (userChoice == "scissors" && compChoice == "rock") {
    return "You Lose! rock beats scissors";
  } else if (userChoice == "scissors" && compChoice == "scissors") {
    return "It's a Draw";
  }
  return "Something Went Wrong";
}

【讨论】:

    【解决方案3】:

    这是因为你的 playRound() 函数永远不会超过这个:

    if (userChoice == "rock" && compChoice == "scissors") {
        return "You Win! rock beats scissors!";
    } else if (userChoice == "rock" && compChoice == "paper") {
        return "Loser! paper Beats rock";
    } else if (userChoice == "rock" && compChoice == "rock") {
        return "It's a Draw";
    } else {
        return "Something Went Wrong";
    }
    

    这是由于您在该代码块末尾的 else 。由于userChoice 设置为纸或剪刀,因此它属于else 并且不会前进到函数的其余部分。您可以像这样链接 ifs 来修复:

    if (userChoice == "rock" && compChoice == "scissors") {
        return "You Win! rock beats scissors!";
    } else if (userChoice == "rock" && compChoice == "paper") {
        return "Loser! paper Beats rock";
    } else if (userChoice == "rock" && compChoice == "rock") {
        return "It's a Draw";
    } else if (userChoice == "paper" && compChoice == "rock") {
        return "You Win! paper beats rock";
    } else if (userChoice == "paper" && compChoice == "scissors") {
        return "You Lose! scissors beats paper";
    } else if (userChoice == "paper" && compChoice == "paper") {
        return "It's a Draw";
    } .... 
    rest of ifs 
    ....
    else {
        return "Something Went wrong";
    }
    

    【讨论】:

    • 谢谢!!你不知道我在这上面花了多少时间,很高兴它很容易解决!
    【解决方案4】:

    不要因提前返回而中断流程。

    function userChoice() {
      const userChoice = prompt("Do you choose Rock, Paper, or Scissors?").toLowerCase();
      return userChoice
    }
    
    function compChoice() {
      let compChoice = Math.random();
      if (compChoice < 0.34) {
        compChoice = "rock";
      } else if (compChoice <= 0.67) {
        compChoice = "paper";
      } else {
        compChoice = "scissors";
      }
      return compChoice
    }
    
    function playRound(userChoice, compChoice) {
      //Rock Choice
      if (userChoice == "rock" && compChoice == "scissors") {
        return "You Win! rock beats scissors!";
      } else if (userChoice == "rock" && compChoice == "paper") {
        return "Loser! paper Beats rock";
      } else if (userChoice == "rock" && compChoice == "rock") {
        return "It's a Draw";
      } else
      //paper Choice
      if (userChoice == "paper" && compChoice == "rock") {
        return "You Win! paper beats rock";
      } else if (userChoice == "paper" && compChoice == "scissors") {
        return "You Lose! scissors beats paper";
      } else if (userChoice == "paper" && compChoice == "paper") {
        return "It's a Draw";
      } else
      //scissors Choice
      if (userChoice == "scissors" && compChoice == "paper") {
        return "You win! scissors beat paper";
      } else if (userChoice == "scissors" && compChoice == "rock") {
        return "You Lose! rock beats scissors";
      } else if (userChoice == "scissors" && compChoice == "scissors") {
        return "It's a Draw";
      } else {
        return "Something Went Wrong";
      }
    }
    
    console.log(playRound(userChoice(), compChoice()))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多