javascript - Rock Paper Scissors -> 输出与结果不一致
问题描述
背景:
我是一名编码新手,大约一周前开始学习 JS。我用简单的 HTML/CSS UI 和带有一点 DOM 操作的 Javascript 创建了一个石头剪刀布游戏(处于早期阶段)。我一直在试图弄清楚为什么代码在一段时间内不能在这里工作,但我真的很感激任何反馈,即使很小。谢谢你。
问题:
- 当我单击 Rock、Paper 或 Scissors 时,如下所示,如果我反复按相同的选项,我会随机得到三个响应中的任何一个:
- “这一局你赢了!……”
- “这一局你输了!……”
- “这是一个平局!...”
发布在<h3 class=".message">
元素下。
computerChose = computerPlay();
即使我反复按下选项,变量也不会改变初始选择的输出。我似乎无法弄清楚如何“重置”计算机选择。
但是为用户和计算机添加的分数很好,尽管它对应于<h3 class=".message">
元素中显示的输出。
//Counts the scores for player and computer
let playerScoreCounter = 0;
let computerScoreCounter = 0;
//3 Btn event listeners for each round, each choice
const rockBtn = document.querySelector(".rock");
rockBtn.addEventListener('click', function() {
let result = playRound("Rock");
if (result == "win") {
playerScoreCounter++;
document.querySelector(".message").textContent = `You win this round! Rock beats ${computerChose}`;
} else if (result == "loss") {
computerScoreCounter++;
document.querySelector(".message").textContent = `You lost this round! ${computerChose} beats Rock`;
} else if (result == "tie") {
document.querySelector(".message").textContent = `It's a tie! You both selected Rock`;
}
document.querySelector(".your-score").textContent = `Your Score: ${playerScoreCounter}`;
document.querySelector(".computer-score").textContent = `Computer Score: ${computerScoreCounter}`;
console.log(computerChose);
});
const paperBtn = document.querySelector(".paper");
paperBtn.addEventListener('click', function() {
let result = playRound("Paper");
if (result == "win") {
playerScoreCounter++;
document.querySelector(".message").textContent = `You win this round! Paper beats ${computerChose}`;
} else if (result == "loss") {
computerScoreCounter++;
document.querySelector(".message").textContent = `You lost this round! ${computerChose} beats Paper`;
} else if (result == "tie") {
document.querySelector(".message").textContent = `It's a tie! You both selected Paper`;
}
document.querySelector(".your-score").textContent = `Your Score: ${playerScoreCounter}`;
document.querySelector(".computer-score").textContent = `Computer Score: ${computerScoreCounter}`;
});
const scissorsBtn = document.querySelector(".scissors");
scissorsBtn.addEventListener('click', function() {
let result = playRound("Scissors");
if (result == "win") {
playerScoreCounter++;
document.querySelector(".message").textContent = `You win this round! Scissors beats ${computerChose}`;
} else if (result == "loss") {
computerScoreCounter++;
document.querySelector(".message").textContent = `You lost this round! ${computerChose} beats Scissors`;
} else if (result == "tie") {
document.querySelector(".message").textContent = `It's a tie! You both selected Scissors`;
}
document.querySelector(".your-score").textContent = `Your Score: ${playerScoreCounter}`;
document.querySelector(".computer-score").textContent = `Computer Score: ${computerScoreCounter}`;
})
//Functions for play
const computerChose = computerPlay();
function computerPlay() {
const computerChoice = ["Rock", "Paper", "Scissors"];
const computerChooses =
computerChoice[Math.floor(Math.random() * computerChoice.length)];
return computerChooses;
}
function playRound(playerSelection) {
const computerSelection = computerPlay();
if (playerSelection == computerSelection) {
return "tie";
} else if (
(playerSelection == "Rock" && computerSelection == "Scissors") ||
(playerSelection == "Paper" && computerSelection == "Rock") ||
(playerSelection == "Scissors" && computerSelection == "Paper")
) {
return "win";
} else if (
(playerSelection == "Rock" && computerSelection == "Paper") ||
(playerSelection == "Paper" && computerSelection == "Scissors") ||
(playerSelection == "Scissors" && computerSelection == "Rock")
) {
return "loss";
}
}
<body>
<div class="container-1">
<header>
<h1>Let's play Rock, Paper, Scissors!</h1>
<h2>Play against the Computer</h2>
</header>
</div>
<div class="container-2">
<div class="choices-block rock-choice-block">
<i class="fas fa-hand-rock fa-10x"></i>
<button class="btn rock">Rock</button>
</div>
<div class="choices-block paper-choice-block">
<i class="fas fa-hand-paper fa-10x"></i>
<button class="btn paper">Paper</button>
</div>
<div class="choices-block scissors-choice-block">
<i class="fas fa-hand-scissors fa-10x"></i>
<button class="btn scissors">Scissors</button>
</div>
</div>
<div class="container-3">
<div class="message-box">
<h3 class="message"></h3>
</div>
<div class="score">
<h3 class="your-score">Your Score: 0</h3>
<h3 class="computer-score">Computer Score: 0</h3>
</div>
<div class="results-box">
<h1 class="results"></h1>
</div>
</div>
<script src="index.js"></script>
</body>
解决方案
推荐阅读
- javascript - 使用 PHP/JS 将 API 作为对象返回
- html - 如何将此滑块调整到特定的高度/宽度
- c++ - gsoap:为可选元素指定模式类型 xsd:anyType
- python - 如何在 Python 中将嵌套列表转换为嵌套元组
- asp.net - 如何在 Azure 应用程序网关中启用 HttpOnly 到 ApplicationGatewayAffinityCORS 和 ApplicationGatewayAffinity cookie?
- r - 在 r 中使用 dplyr groupwise 替换列中的多个特定行
- php - 使用教义插入查询
- sql - 百分比 SQL Oracle
- mysql - 选择平均值,在具有范围的行之间求和
- python - 在 Bash 或 Python 中减小 TIFF 文件大小