Игра «Камень, ножницы, бумага» FreeCodeCamp

Я пытаюсь решить игру «камень-ножницы-бумага» на 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 (player= = "Scissors" && computer= = "Scissors").

Scott Hunter 22.07.2024 21:43

Вы не можете указывать параметры в операторе else. Во-вторых, если вы хотите использовать if...else, вам понадобится еще 3 случая :)

Kafus 22.07.2024 21:49

Для сообщения Your hasPlayerWonTheRound function should return a boolean. Вам нужно посмотреть, где и как вы запускаете этот метод. Но сначала нужно исправить else утверждение

Kafus 22.07.2024 21:56
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Прежде всего, ваше последнее 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;

Kafus 22.07.2024 21:51

Это работает! Большое спасибо!

Cody Rutscher 23.07.2024 01:52

Другие вопросы по теме