Код в функции не будет работать, пока в функции. Работает, если написано вне функции - PullRequest
0 голосов
/ 03 ноября 2018

Есть некоторые проблемы с моей текущей домашней работой.

Код внутри функции while (цикла цикла) startGame () не будет запускаться при записи внутри функции. Если я удаляю объявление функции, оно работает как задумано. Что я делаю неправильно?

let playerScore = 0;
let computerScore = 0;
let playerSelection;
let computerSelection;
let i = 0;

function startGame() {
  while (i < 5) { // This part wont run when used inside function (){}
    playRound();
    i += 1;
  }
}
/*
for (i = 0; i < 6; i++) {
  playRound();
}
*/

/* NOTE TO SELF:
Can't do call to function before declaring variables. 
Since they then would be undefined during runtime. */

function playRound() {
  playerSelection = prompt();
  computerSelection = computerPlay();
  if (playerSelection.trim() === computerSelection.trim()) {
    console.log("Round is Equal")

  } else if (playerSelection === "Scissor" && computerSelection === "Paper") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Paper" && computerSelection === "Scissor") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Rock" && computerSelection === "Scissor") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Scissor" && computerSelection === "Rock") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Paper" && computerSelection === "Rock") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Rock" && computerSelection === "Paper") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  }
}

function computerPlay() {
  let randomNumber = Math.floor(Math.random() * 3) + 1;
  switch (randomNumber) {
    case 1:
      randomNumber = "Rock";
      return randomNumber;
    case 2:
      randomNumber = "Scissor";
      return randomNumber;
    case 3:
      randomNumber = "Paper"
      return randomNumber;
  }

}

Ответы [ 3 ]

0 голосов
/ 03 ноября 2018

Вам необходимо сделать начальный вызов для startGame() функций, которые не запускаются сами по себе.

let playerScore = 0;
let computerScore = 0;
let playerSelection;
let computerSelection;
let i = 0;

function startGame() {
  while (i < 5) { // This part wont run when used inside function (){}
    playRound();
    i += 1;
  }
}

startGame();

/*
for (i = 0; i < 6; i++) {
  playRound();
}
*/

/* NOTE TO SELF:
Can't do call to function before declaring variables. 
Since they then would be undefined during runtime. */

function playRound() {
  playerSelection = prompt();
  computerSelection = computerPlay();
  if (playerSelection.trim() === computerSelection.trim()) {
    console.log("Round is Equal")

  } else if (playerSelection === "Scissor" && computerSelection === "Paper") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Paper" && computerSelection === "Scissor") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Rock" && computerSelection === "Scissor") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Scissor" && computerSelection === "Rock") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  } else if (playerSelection === "Paper" && computerSelection === "Rock") {
    playerScore += 1;
    console.log("Player score is:" + " " + playerScore + " " + "Player wins round");

  } else if (playerSelection === "Rock" && computerSelection === "Paper") {
    computerScore += 1;
    console.log("Computer score is:" + " " + computerScore + " " + "Computer win round");

  }
}

function computerPlay() {
  let randomNumber = Math.floor(Math.random() * 3) + 1;
  switch (randomNumber) {
    case 1:
      randomNumber = "Rock";
      return randomNumber;
    case 2:
      randomNumber = "Scissor";
      return randomNumber;
    case 3:
      randomNumber = "Paper"
      return randomNumber;
  }

}
0 голосов
/ 03 ноября 2018

Вы создали функцию startGame (), но вы ее нигде не вызываете, поэтому она не работает внутри функции.

Точно так же, как ваш метод playRound () внутри вашего цикла, вы также должны вызывать startGame () для запуска кода в нем.

0 голосов
/ 03 ноября 2018

Вы должны вызвать startGame функцию:

startGame()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...