приложение «камень, бумага, ножницы», использующее javascript, не может правильно отображаться

#javascript

Вопрос:

я изучаю javascript и в настоящее время создаю игру «камень, бумага, ножницы», используя только javascript. в игре будет режим 1 раунда и режим 3 раунда, но когда я закончил кодировать режим 1 раунда, я обнаружил, что у меня возникли проблемы с отображением результата, кто бы ни выиграл в игре, он показывает «игра вничью» и не может найти, где ошибка, кто-нибудь может мне помочь?

     // Player choice 

var getPlayerChoice = function() {
  var playerChoice = prompt("Choose rock, paper, or scissors");
  while (playerChoice !== 'rock' amp;amp; playerChoice !== 'paper' amp;amp; playerChoice !== 'scissors') {
    if (playerChoice === null) {
      break;
    }
    playerChoice = prompt("Invalid ! you have to choose rock, paper, or scissors");
  }
  return playerChoice;
}

// Computer Choice 

var getComputerChoice = function () {
  var randomNum = Math.random();
  if ( randomNum < 0.3333 ) {
    return "rock";
  } else if ( randomNum > 0.3333 amp;amp; randomNum < 0.6666 ) {
    return "scissors";
  } else {
    return "paper";
  }
}

// Winner Function 

var getWinner = function (playerChoice, computerChoice) {
  if (computerChoice === playerChoice) {
    return "The Game is Tie";
  } else if (computerChoice === "paper") {
    if (playerChoice === "scissors") {
      return "player win";
    } else if (playerChoice === "rock") {
      return "computer win";
    }
  } else if (computerChoice === "rock") {
    if (playerChoice === "scissors") {
      return "computer win";
    } else if (playerChoice === "paper") {
      return "player win";
    }
  } else if (computerChoice === "scissors") {
    if (playerChoice === "rock") {
      return "player win";
    } else if (playerChoice === "paper") {
      return "computer win";
    }
  }
}

// Single game mode 

var singleRound = function() {
  var playerChoice = getPlayerChoice();
  if (playerChoice === null) {
    return;
  }
  
  var computerChoice = getComputerChoice();
  
  var winner = getWinner(playerChoice, computerChoice);
  var message = " You chose: "   playerChoice   "n Computer chose: "   computerChoice;
  if (winner === "player") {
    alert(message   "nYou won!");
  } else if (winner === "computer") {
    alert(message   "nYou lost!");
  } else {
    alert(message   "nThe Game is Tie");
  }
  return winner;
}

var mode = prompt("Welcome!n nplease insert 1 for single round moden2 for 3 rounds mode");
if (mode === '1') {
  singleRound();
} else if (mode === '2') {
  threeRoundsMode();
}
 

Ответ №1:

Ваша getWinner() функция возвращает player win or computer win , но ваш код, который ее вызывает, ищет возвращаемые значения player or computer .

Поскольку код никогда не получает то, что он ищет, по умолчанию используется значение `Игра окончена».

Комментарии:

1. Нужно меняться if (winner === "player") if (winner === "player win") и меняться if (winner === "computer") if (winner === "computer win") .

Ответ №2:

Это происходит из-за ошибки в функции singleRound (). if (winner === "player") { должно быть if (winner === "player win") { и аналогично if (winner === "computer") { должно быть сказано if (winner === "computer win") { , чтобы сравниваемый текст совпадал. Прямо сейчас он сравнивает «игрока» и «выигрыш игрока», затем «компьютер» и «выигрыш компьютера», поэтому условие » еще » выполняется независимо от фактического результата игры.