Распознавание переменной из другой функции - PullRequest
0 голосов
/ 05 июля 2019

Я делаю игру для 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.

...