首页 > 解决方案 > 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}`);
  }
}

标签: javascript

解决方案


您可以按以下方式更新代码

  1. 删除所有不必要的全局变量声明。
  2. 删除 playRound 函数的不必要参数。
  3. 为其他玩家选择案例添加更多逻辑。
  4. 计算机选择案例的嵌套条件。
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}`);
  }
}

推荐阅读