#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") {
, чтобы сравниваемый текст совпадал. Прямо сейчас он сравнивает «игрока» и «выигрыш игрока», затем «компьютер» и «выигрыш компьютера», поэтому условие » еще » выполняется независимо от фактического результата игры.