Я пытаюсь решить игру «камень-ножницы-бумага» на freeCodeCamp. Вот вопрос:
В игре будет несколько раундов. Тот, кто первым наберет три очка, выигрывает игру.
На этом этапе вы сосредоточитесь на определении того, выиграл ли игрок раунд.
Завершите функцию hasPlayerWonTheRound. Эта функция имеет два параметра: плеер и компьютер. Функция должна возвращать true, если игрок выиграл раунд, и false, если игрок проиграл или сыграл вничью.
Вот критерии, по которым игрок может выиграть раунд:
Если игрок выбирает «Камень», а компьютер выбирает «Ножницы». Если игрок выбирает «Ножницы», а компьютер выбирает «Бумага» Если игрок выбирает «Бумага», а компьютер выбирает «Камень» Для проверки вашей функции было предоставлено несколько вызовов функций.
Вот что я пробовал
function hasPlayerWonTheRound(player, computer) {
if (player === "Rock" && computer === "Scissors") {
return true;
}
else if (player = = "Scissors" && computer = = "Paper") {
return true;
}
else if (player = = "Paper" && computer = = "Rock") {
return true;
}
else if (player= = "Rock" && computer= = "Rock") {
return false;
}
else if (player= = "Paper" && computer= = "Paper") {
return false;
}
else (player= = "Scissors" && computer= = "Scissors") {
return false;
}
Когда я отправляю этот ответ, он говорит: «Ваша функция hasPlayerWonTheRound должна возвращать логическое значение».
Вы не можете указывать параметры в операторе else. Во-вторых, если вы хотите использовать if...else, вам понадобится еще 3 случая :)
Для сообщения Your hasPlayerWonTheRound function should return a boolean. Вам нужно посмотреть, где и как вы запускаете этот метод. Но сначала нужно исправить else утверждение



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Прежде всего, ваше последнее else утверждение неверно, так и должно быть else if, поскольку у вас есть условие.
Во-вторых, ваш код не охватывает все возможные случаи, например, когда player == "Rock" && computer == "Paper", что означает, что в этом случае ваша функция вернет undefined, что не является boolean (о чем говорит ваша ошибка). Итак, чтобы решить эту проблему, вам следует либо охватить все оставшиеся случаи, либо просто поставить оператор return false в конце вашего кода после операторов if, else if. Это обеспечит возврат false в остальных случаях. Надеюсь, это проясняет ситуацию.
И вот более короткое решение, если вам интересно. Он вернет true, если какое-либо из этих трех условий соответствует true и false в противном случае.
function hasPlayerWonTheRound(player, computer) {
return (
(player === "Rock" && computer === "Scissors") ||
(player === "Scissors" && computer === "Paper") ||
(player === "Paper" && computer === "Rock")
);
}Попробуй это
function hasPlayerWonTheRound(player, computer) {
if (player == "Rock" && computer == "Scissors" ||
player = = "Scissors" && computer = = "Paper" ||
player = = "Paper" && computer = = "Rock") return true
else return false;
}Вам не нужно else if- просто else return false;
Это работает! Большое спасибо!
Объясните пожалуйста
else (player= = "Scissors" && computer= = "Scissors").