计算机输出切换,但在我单击其中一个选项后计分板返回到原始分数
我的目标是在用户按回车键后重置分数并再次正常播放。也可以在其中一项分数达到 3 分后禁用选项。
const choices = ['Rock', 'Paper', 'Scissors']
let userScore = document.querySelector('.result-score-user')
let computerScore = document.querySelector('.result-score-computer')
const computerOutput = document.querySelector('.computer-output')
const outcome = document.querySelector('.outcome')
const rockPaperScissors = document.querySelectorAll('li')
const scores = document.querySelector('.scores')
let userPoints = 0
let computerPoints = 0
userScore.innerHTML = userPoints
computerScore.innerHTML = computerPoints
rockPaperScissors.forEach(choice => {
choice.addEventListener('click', () => {
userChoice = choice.innerHTML
let arr = [...choices]
const random = arr[Math.floor(Math.random() * arr.length)]
computerOutput.innerHTML = random
isWinner()
userScore.innerHTML = userPoints
computerScore.innerHTML = computerPoints
reset()
})
})
function isWinner() {
switch (computerOutput.innerHTML + userChoice) {
case 'RockScissors':
case 'ScissorsPaper':
case 'PaperRock':
outcome.innerHTML = 'You Lose'
computerPoints++
break
case 'ScissorsRock':
case 'PaperScissors':
case 'RockPaper':
outcome.innerHTML = 'You Win!'
userPoints++
break
case 'RockRock':
case 'ScissorsScissors':
case 'PaperPaper':
outcome.innerHTML = 'Draw'
break
}
}
function reset() {
if (userPoints === 3) {
outcome.innerHTML = 'You Win the game! <br> Press Enter to reset'
endGame()
}
if (computerPoints === 3) {
outcome.innerHTML = 'You Lost the game. <br> Press Enter to reset'
endGame()
}
}
function endGame() {
document.body.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
computerOutput.innerHTML = 'Computer chose...'
outcome.innerHTML = ''
userPoints.textContent = 0
computerPoints.textContent = 0
}
})
}
function reset() {
if (userPoints === 3) {
outcome.innerHTML = 'You Win the game! <br> Press Enter to reset'
endGame()
}
if (computerPoints === 3) {
outcome.innerHTML = 'You Lost the game. <br> Press Enter to reset'
endGame()
}
}
function endGame() {
document.body.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
computerOutput.innerHTML = 'Computer chose...'
outcome.innerHTML = ''
userPoints.textContent = 0
computerPoints.textContent = 0
}
})
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Lato&family=Roboto&family=Staatliches&display=swap" rel="stylesheet">
<title>Rock Paper Scissors</title>
</head>
<body>
<main class="container">
<div class="scoreboard">
<div class="score-heading">Score</div>
<div class="scores">
<div class="user-score score">You: <span class="result-score-user"></span></div>
<div class="computer-score score">Computer: <span class="result-score-computer"></span></div>
</div>
</div>
<div class="user-choice">
<ul class="choices">
<li>Rock</li>
<li>Paper</li>
<li>Scissors</li>
</ul>
</div>
<div class="computer-choice">
<div class="computer-output">Computer chose...</div>
</div>
<div class="outcome"></div>
</main>
<script src="script.js"></script>
<script src="https://kit.fontawesome.com/f439b384ed.js" crossorigin="anonymous"></script>
</body>
</html>
我尝试将 userPoints 和 ComputerPoints 重置回 0,但按 Enter 并再次播放后,点数重置为原始值。
在上面的例子中,userPoints和computerPoints不是DOM元素,而是保存值的变量。 将分数重置为 0,然后
innerHTML
该值。
const choices = ['Rock', 'Paper', 'Scissors']
let userScore = document.querySelector('.result-score-user')
let computerScore = document.querySelector('.result-score-computer')
const computerOutput = document.querySelector('.computer-output')
const outcome = document.querySelector('.outcome')
const rockPaperScissors = document.querySelectorAll('li')
const scores = document.querySelector('.scores')
let userPoints = 0
let computerPoints = 0
userScore.innerHTML = userPoints
computerScore.innerHTML = computerPoints
rockPaperScissors.forEach(choice => {
choice.addEventListener('click', () => {
userChoice = choice.innerHTML
let arr = [...choices]
const random = arr[Math.floor(Math.random() * arr.length)]
computerOutput.innerHTML = random
isWinner()
userScore.innerHTML = userPoints
computerScore.innerHTML = computerPoints
reset()
})
})
function isWinner() {
switch (computerOutput.innerHTML + userChoice) {
case 'RockScissors':
case 'ScissorsPaper':
case 'PaperRock':
outcome.innerHTML = 'You Lose'
computerPoints++
break
case 'ScissorsRock':
case 'PaperScissors':
case 'RockPaper':
outcome.innerHTML = 'You Win!'
userPoints++
break
case 'RockRock':
case 'ScissorsScissors':
case 'PaperPaper':
outcome.innerHTML = 'Draw'
break
}
}
function reset() {
if (userPoints === 3) {
outcome.innerHTML = 'You Win the game! <br> Press Enter to reset'
endGame()
}
if (computerPoints === 3) {
outcome.innerHTML = 'You Lost the game. <br> Press Enter to reset'
endGame()
}
}
function endGame() {
document.addEventListener('keydown', (e) => {
if (e.key === 'Enter') {
computerOutput.innerHTML = 'Computer chose...'
outcome.innerHTML = '';
userPoints = 0;
computerPoints = 0;
userScore.innerHTML = userPoints
computerScore.innerHTML = computerPoints
}
})
}
<main class="container">
<div class="scoreboard">
<div class="score-heading">Score</div>
<div class="scores">
<div class="user-score score">You: <span class="result-score-user"></span></div>
<div class="computer-score score">Computer: <span class="result-score-computer"></span></div>
</div>
</div>
<div class="user-choice">
<ul class="choices">
<li>Rock</li>
<li>Paper</li>
<li>Scissors</li>
</ul>
</div>
<div class="computer-choice">
<div class="computer-output">Computer chose...</div>
</div>
<div class="outcome"></div>
</main>