簡體   English   中英

將循環函數的值存儲到變量中,javascript

[英]storing value of a looped function into a variable , javascript

嘿,我需要您的幫助。 在這款剪刀石頭布游戲中,獲勝者是第一個在用戶和計算機之間贏得五次勝利的人。 盡管我還沒有循環執行此操作,但是我需要幫助將每次勝利的計數存儲到我的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); 

最好在這里添加我的答案。 我不會使用提示方法,而是使用按鈕。 將比分存儲在一個對象中,並使用條件檢查某人在每局游戲后是否已達到5分:

 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> 

我不會使用prompt而是使用HTML按鈕來獲取用戶的輸入。 這樣,他們不必鍵入,只需單擊即可。

這是您可以執行的操作:

 //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(); } } 
 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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM