将循环函数的值存储到变量javascript中

时间:2018-05-15 15:23:29

标签: javascript function loops variables store

嘿,我需要你的帮助。在这个摇滚纸剪刀游戏中,获胜者是第一个在用户和计算机之间获得五场胜利的人。虽然我还没有循环这个,但我需要帮助将每个胜利的计数存储到我的points()函数到var playerPoints = 0的变量中;要么 var compPoints = 0;取决于谁赢了一轮。如果您有循环建议,请随时为我提供建议!感谢

    //decalring an array with weapons of choice
    const weaponArray = ["rock", "paper", "scissors"];
    // selects a random index from array to represent computer choice
    const computerChoice = weaponArray[[Math.floor(Math.random() * weaponArray.length)]];
    //prompts user to make a choice of weapon
    const playerPrompt = prompt("Please enter Rock, Paper, or Scissors!");
    //lowers all alphabet input to lower case
    const playerChoice = playerPrompt.toLowerCase();
    
 

    
    //function runs player vs computer choices and determines winner of round
    const round = (computerChoice, playerChoice) => {
      if (playerChoice === "scissors" && computerChoice === "rock" || playerChoice === "rock" && computerChoice === "paper" || playerChoice ==="paper" && computerChoice === "scissors") {
      return "Just Give Up Now Looser!";
    }
      else if (playerChoice === "rock" && computerChoice === "scissors" || playerChoice === "paper" && computerChoice === "rock" || playerChoice==="scissors" && computerChoice === "paper")
      {
      return "You Won This Round!";
    }
    else {
      return "Its a Tie!";
    }
    };
    
    //stores round function value  into a variable 
    var state = round(computerChoice, playerChoice);
   
   
   // adds points to player or computer based on "state" value 
  const points = () => {
    if (state === "You Won This Round!"){
      return playerPoints + 1;
    }
    else if (state === "Just Give Up Now Looser!"){
      return compPoints + 1;
    }
    else{
      return null
    }
    
  };
   
   
    var playerPoints = points()  ;
    var compPoints = points()  ;
   
   
   
 console.log(state);
 console.log(points());
 //console.log(compPoints);
 //console.log(playerPoints);

2 个答案:

答案 0 :(得分:1)

也可以在这里添加我的答案。我不会使用快速方法,而是使用按钮。将分数存储在一个对象中,并使用条件来检查每个游戏后是否有人达到了五分:



const userScore = document.querySelector('.user .score')
const computerScore = document.querySelector('.computer .score')
const resultContainer = document.querySelector('.result')
const userThrowContainer = document.querySelector('.userThrow')
const opponentThrowContainer = document.querySelector('.opponentThrow')
const buttons = document.querySelectorAll('button')

const score = {
  user: 0,
  computer: 0
}

function rpsMatch(userThrow) {
  // Define possible throws
  const throwOptions = [
    'rock',
    'paper',
    'scissors'
  ]
  
  // Choose randomly from array of throws
  let opponentThrow = throwOptions[Math.floor(Math.random() * throwOptions.length)]
  
  // Print user and computer throws
  userThrowContainer.innerText = `You threw ${userThrow}`
  opponentThrowContainer.innerText = `Computer threw ${opponentThrow}`
  
  function userWins() {
    resultContainer.innerText = 'You win'
    score.user++
    updateScores()
  }
  
  function computerWins() {
    resultContainer.innerText = 'You lose'
    score.computer++
    updateScores()
  }
  
  function updateScores() {
    userScore.innerText = score.user
    computerScore.innerText = score.computer
  }
  
  function resetScore() {
    userScore.innerText = 0
    computerScore.innerText = 0
    score.user = 0
    score.computer = 0
  }
  
  // RPS logic
  if (userThrow == opponentThrow) {
    resultContainer.innerText = 'You tied'
  } else {
    if (userThrow == 'rock') {
      opponentThrow == 'scissors' ? userWins() : computerWins()
    } else if (userThrow == 'paper') {
      opponentThrow == 'rock' ? userWins() : computerWins()
    } else {
      opponentThrow == 'paper' ? userWins() : computerWins()
    }
  }
  
  if (score.user === 5) {
    alert('You won the first to 5!')
    resetScore()
  }
  
  if (score.computer === 5) {
    alert('You lost the first to 5!')
    resetScore()
  }
}

// Attach event handlers to each button
buttons.forEach(button => {
  button.addEventListener('click', e => {
    // Assign data attribute to variable
    let userThrow = e.target.dataset.type
    e.preventDefault()
    // Pass user selection to rpsMatch
    rpsMatch(userThrow)
  })
})

<div class="user">User Score: <span class="score">0</span></div>
<div class="computer">Computer Score: <span class="score">0</span></div>
<button data-type="rock">Rock</button>
<button data-type="paper">Paper</button>
<button data-type="scissors">Scissors</button>
<div class="userThrow"></div>
<div class="opponentThrow"></div>
<div class="result"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我不会使用prompt,而是使用HTML按钮来获取用户的输入。这样他们就不必打字,只需点击即可。

以下是如何做到这一点:

&#13;
&#13;
//declaring an array with weapon of choice
const weaponArray = ["rock", "paper", "scissors"];
const players = ["tie", "you", "computer"];
const points = [0, 0, 0]; // tie, player, computer
const human = document.querySelector('#human');
const computer = document.querySelector('#computer');
const winner = document.querySelector('#winner');
const humanScore = document.querySelector('#humanScore');
const computerScore = document.querySelector('#computerScore');

// Respond to input
document.querySelector("#buttons").onclick = function(e) {
    const playerChoice = +e.target.value; // 0, 1 or 2
    human.textContent = weaponArray[playerChoice];
    // selects a random index from array to represent computer choice
    const computerChoice = Math.floor(Math.random() * weaponArray.length); // 0, 1 or 2
    computer.textContent = weaponArray[computerChoice];
    // Determine result
    const result = (playerChoice + 3 - computerChoice) % 3; // 0 = tie, 1 = player win, 2 = computer win
    winner.textContent = players[result];
    // add point to the relevant winner. Winner 0 represents the ties - they don't really count
    points[result]++; 
    humanScore.textContent = points[1];
    computerScore.textContent = points[2];
    if (result && points[result] >= 5) {
        alert("Game over. " + players[result] + " won");
        location.reload();
    }
}
&#13;
Please make your choice:<br>
<div id="buttons">
    <button value="0">rock</button> <button value="1">paper</button> <button value="2">scissors</button><br>
</div>
Your weapon: <span id="human"></span><br>
Computer's weapon: <span id="computer"></span><br>
Winner: <span id="winner"></span><br>
Your score: <span id="humanScore"></span><br>
Computer's score: <span id="computerScore"></span><br>
&#13;
&#13;
&#13;