Я делаю игру для RockPaperScissors. У меня есть функция, которая генерирует выбор компьютеров, затем есть функция, которая реагирует на нажатие кнопки, а затем функция для игры, объединяющая обе функции.
Я пытался получить доступ к нему через функции и проводил исследования, но не могу найти способ заставить переменную добраться до последней функции. Нужно ли объединять их все в одну функцию, чтобы получить переменную.
/*This function generates the computer's choice and then presents a rock image, removing it after 2 seconds.*/
function computerChoice() {
let compChoice = Math.random();
if (compChoice < 0.33) {
compChoice = "rock";
cpuChoice.classList.add(rockImage, rockImage2);
setTimeout(function () {
cpuChoice.classList.remove(rockImage, rockImage2);
}, 2000);
} else if (compChoice < 0.66 && compChoice > 0.33) {
compChoice = "paper";
cpuChoice.classList.add(paperImage, paperImage2);
setTimeout(function () {
cpuChoice.classList.remove(paperImage, paperImage2);
}, 2000);
} else {
compChoice = "scissors";
cpuChoice.classList.add(scissorImage, scissorImage2);
setTimeout(function () {
cpuChoice.classList.remove(scissorImage, scissorImage2);
}, 2000);
}
}
/*Here is the function thats having issues, I cant seem to get the gameResults innerHTML to change since it wont gather the compChoice.*/
function playGame(humanChoice, compChoice) {
if (humanChoice === compChoice) {
gameResults.innerHTML = "tie";
} else if (humanChoice === "rock" && compChoice === "scissor") {
gameResults.innerHTML = "You won!";
} else if (humanChoice === "rock" && compChoice === "paper") {
gameResults.innerHTML = "The computer won!";
} else if (humanChoice === "paper" && compChoice === "rock") {
gameResults.innerHTML = "You won!";
} else if (humanChoice === "paper" && compChoice === "scissor") {
gameResults.innerHTML = "The computer won!";
} else if (humanChoice === "scissor" && compChoice === "rock") {
gameResults.innerHTML = "The computer won!";
} else if (humanChoice === "scissor" && compChoice === "paper") {
gameResults.innerHTML = "You won!";
} else {
gameResults.innerHTML = "Not Possible";
}
}
/*This function generates the human's choice from a click and then presents an image of the choice, removing it after 2 seconds. Then calls for computerChoice(), and attempts to call the playGame functions.*/
allButtons.forEach(function (e) {
e.addEventListener("click", function () {
const choice = e.dataset.play;
if (choice === "rock") {
humanChoice = "rock";
computerChoice();
yourChoice.classList.add(rockImage, rockImage2);
setTimeout(function () {
yourChoice.classList.remove(rockImage, rockImage2);
}, 2000);
playGame(humanChoice, compChoice);
} else if (choice === "paper") {
humanChoice = "paper";
computerChoice();
yourChoice.classList.add(paperImage, paperImage2);
setTimeout(function () {
yourChoice.classList.remove(paperImage, paperImage2);
}, 2000);
playGame(humanChoice, compChoice);
} else if (choice === "scissors") {
humanChoice = "scissors";
computerChoice();
yourChoice.classList.add(scissorImage, scissorImage2);
setTimeout(function () {
yourChoice.classList.remove(scissorImage, scissorImage2);
}, 2000);
playGame(humanChoice, compChoice);
}
});
});
Я ожидаю, что gameResults.innerHTML изменится, но это не произойдет, потому что он не соберет переменную CompChoice для сравнения с HumanChoices.