Игра работает нормально после 1 раунда. Я пытаюсь сыграть 5 раундов. Я пробовал цикл for перед циклом while. Но он по-прежнему запрашивает у пользователя ввод только один раз.
let computerPlay = () => {
let compChoices = ["rock", "paper", "scissors"]; //array storing computer possible actions
let i = Math.floor(Math.random() * 3);
let choice = compChoices[i];
return choice;
};
//
let playerChoice = prompt("Select your action").toLowerCase();
let computerChoice = computerPlay();
let playRound = (playerSelection, computerSelection) => {
let winner = "";
if (playerSelection === computerSelection) {
winner = "tie";
} else if (playerSelection > computerSelection) {
winner = "player";
} else {
winner = "computer";
}
return console.info(winner);
};
let i = 0;
while (i < 5) {
playRound(playerChoice, computerChoice);
i++;
}
ОБНОВЛЕНО
В качестве требования автор просит сохранить параметры playerSelection
и computerSelection
для playRound
. Я бы предложил исправить это, поместив playerChoice
и computerChoice
в цикл while
let computerPlay = () => {
let compChoices = ["rock", "paper", "scissors"]; //array storing computer possible actions
let i = Math.floor(Math.random() * 3);
let choice = compChoices[i];
return choice;
};
let playRound = (playerSelection, computerSelection) => {
let winner = "";
if (playerSelection === computerSelection) {
winner = "tie";
} else if (playerSelection > computerSelection) {
winner = "player";
} else {
winner = "computer";
}
return console.info(winner);
};
let i = 0;
while (i < 5) {
//here is the change
let playerChoice = prompt("Select your action").toLowerCase();
let computerChoice = computerPlay();
playRound(playerChoice, computerChoice);
i++;
}
СТАРЫЙ ОТВЕТ
Твоя проблема в том, что ты пропускаешь prompt
за пределы своего playRound
. playerSelection
и computerSelection
тоже должны быть в playRound
, что поможет сбрасывать значения компьютера и ваш выбор в каждом раунде.
let computerPlay = () => {
let compChoices = ["rock", "paper", "scissors"]; //array storing computer possible actions
let i = Math.floor(Math.random() * 3);
let choice = compChoices[i];
return choice;
};
let playRound = () => {
let playerSelection = prompt("Select your action").toLowerCase();
let computerSelection = computerPlay();
let winner = "";
if (playerSelection === computerSelection) {
winner = "tie";
} else if (playerSelection > computerSelection) {
winner = "player";
} else {
winner = "computer";
}
return console.info(winner);
};
let i = 0;
while (i < 5) {
playRound();
i++;
}
Инструкции по назначению заключались в том, чтобы передать playerSelection и computerSelection в качестве параметров в playRound(). Как я могу сбрасывать после каждого раунда, делая это таким образом?
@medOnline5 вам просто нужно передать playerChoice
и computerChoice
в цикле while
. Кстати, я тоже обновил свой ответ.
В вашем ответе можно ли передать playerChoice и computerChoice в качестве параметров, даже если playRound не указал параметры?
Извините, не обращайте внимания на предыдущий вопрос. Я смотрел на старый ответ. Спасибо Ник!!
Если это сработает, не могли бы вы помочь мне отметить это как ответ? это помогло бы и другим людям :D
Да. Извините, все еще привыкаю к stackOverflow, ха-ха
После того, как вы сыграете раунд, снова вызовите
computerPlay
(переименуйте его во что-то другое, напримерround
). Это потому, что началоcomputerPlay
содержит логику, необходимую для перезапуска раунда.