javascript - Rock, Paper, Scissors 游戏:输入正确的值返回错误的 console.log 消息
问题描述
有时,当我在提示符中输入“rock”并点击 OK 时,控制台会说“请输入 Rock、Paper 或 Scissors”,即使我确实这样做了。我相信这是由于 else 子句,我只是不确定我做错了什么。
此外,当我在提示符中输入“rock”并点击 OK 时,控制台中什么也没有发生(没有添加分数)。下面是截图
const playerSelection = ''
const computerSelection = computerPlay()
let computerScore = 0;
let playerScore = 0;
console.log(playRound(playerSelection, computerSelection))
function computerPlay(){
let values = ['rock', 'paper', 'scissors'],
valueToUse = values [Math.floor(Math.random()* values.length)];
return valueToUse;
};
function playRound(playerSelection, computerSelection) {
while(true){
playerSelection = prompt ('Pick your poison');
if (playerSelection.toLowerCase() === 'rock' && computerPlay() === 'paper'){
computerScore += 1
console.log('Sorry! Paper beats Rock')
}
else if (playerSelection.toLowerCase() === 'rock'.toLowerCase() && computerPlay() === 'scissors'){
playerScore += 1
console.log('Good job! Rock beats Scissors');
}
else
{
console.log('Please type Rock, Paper, or Scissors')
}
console.log (`User Selection: ${playerSelection.toUpperCase()} | Player Score: ${playerScore}
Computer Selection: ${computerSelection.toUpperCase()} | Computer Score: ${computerScore}`);
}
}
解决方案
您可以按以下方式更新代码
- 删除所有不必要的全局变量声明。
- 删除 playRound 函数的不必要参数。
- 为其他玩家选择案例添加更多逻辑。
- 计算机选择案例的嵌套条件。
playRound();
function computerPlay(){
let values = ['rock', 'paper', 'scissors'],
valueToUse = values [Math.floor(Math.random()* values.length)];
return valueToUse;
};
function playRound() {
let playerSelection;
let computerSelection;
let playerScore = 0;
let computerScore = 0;
while(true){
playerSelection = prompt('Pick your poison').toLowerCase();
computerSelection = computerPlay();
if (playerSelection === 'rock') {
if (computerSelection === 'paper') {
computerScore += 1;
} else if (computerSelection === 'scissors') {
playerScore += 1;
}
} else if (playerSelection === 'paper') {
if (computerSelection === 'scissors') {
computerScore += 1;
} else if (computerSelection === 'rock') {
playerScore += 1;
}
} else if (playerSelection === 'scissors') {
if (computerSelection === 'rock') {
computerScore += 1;
} else if (computerSelection === 'paper') {
playerScore += 1;
}
} else {
console.log('Please type Rock, Paper, or Scissors');
continue;
}
console.log (`User Selection: ${playerSelection.toUpperCase()} | Player Score: ${playerScore}
Computer Selection: ${computerSelection.toUpperCase()} | Computer Score: ${computerScore}`);
}
}
推荐阅读
- python - 如何覆盖 Odoo 11 中的 http.py 方法?
- css - 使用css的自定义/不规则边框半径
- symfony-2.8 - 如何使用 KnpPaginatorBundle 对搜索表单的结果进行分页?
- c# - 如果在引用的库中派生,WebAPI 无法找到到控制器的路由
- python-3.x - 操作次数随 tf.gradient 增加
- networking - DNS 查找“localhost”是否返回“127.0.0.1”以外的任何其他主机 IP 地址?
- react-native - React Native NFC 打开浏览器
- reactjs - 带有 React 的 HTML 5 可拖动属性
- jquery - Datatables - 如何实现点击每一行的列?
- python - 在 Jenkins slave 上运行 python 脚本