Я сочинил программу rockpaperscissors (код ниже), которая регистрирует ввод пользователя, выбор cmoputer, а затем сравнивает, чтобы получить результат. часть сравнения не работает по какой-то причине, она всегда пишет «Это ничья», может кто-нибудь помочь.
код:
let playerSelection = choice();
function choice(){
let input = prompt("pick either rock,paper or scissors");
console.info(input.toLowerCase());
}
let computerChoice = computerPlay();
function computerPlay(){
let picks =["rock","paper","scissors"];
let pick = picks[Math.floor(Math.random(picks)*picks.length)];
console.info (pick);
}
function compare(playerSelection, computerChoice){
if (playerSelection === computerChoice){
console.info("It's a tie!")
}
else if ((playerSelection == "rock" && computerChoice == "scissors")||
(playerSelection == "paper" && computerChoice == "rock")||
(playerSelection == "scissors" && computerChoice == "paper")){
console.info("you win! computer lose.");
}
else{
console.info("computer win! you lose.");
}
}
compare();
}
function game(){
console.info(playRound());
}
game();```
Ваши функции ничего не возвращают



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


Вы должны передать playerSelection и computerChoice функции compare в качестве параметров при вызове функции:
compare(playerSelection, computerChoice);
Также вы должны возвращать значения из функций choice() и computerPlay(), чтобы значения были назначены игроку и компьютеру. Пример для ComputerPlay:
function computerPlay(){
let picks =["rock","paper","scissors"];
let pick = picks[Math.floor(Math.random(picks)*picks.length)];
return pick;
}
Вот полный фрагмент:
let playerSelection = choice();
function choice(){
let input = prompt("pick either rock,paper or scissors");
return input;
}
let computerChoice = computerPlay();
function computerPlay(){
let picks =["rock","paper","scissors"];
let pick = picks[Math.floor(Math.random(picks)*picks.length)];
return pick;
}
function compare(playerSelection, computerChoice){
if (playerSelection === computerChoice){
console.info("It's a tie!")
}
else if ((playerSelection == "rock" && computerChoice == "scissors")||
(playerSelection == "paper" && computerChoice == "rock")||
(playerSelection == "scissors" && computerChoice == "paper")){
console.info("you win! computer lose.");
}
else{
console.info("computer win! you lose. ");
}
}
compare(playerSelection, computerChoice);
Если вы всегда вызываете
compareбез аргументов (например, сразу после определения функции), вы сравниваете неопределенное с неопределенным, то естьtrue