Javascript 控制结构未按我希望的方式执行代码的小问题
制作一个游戏,根据谁先到达某个数字来选择胜利者。然而,当我实现一个if语句时,它会破坏我的游戏,因为这个if语句只是在选择了一个获胜者后立即停止游戏 当我删除if语句时,代码会工作并选择一个获胜者,但是,您仍然可以继续单击掷骰子按钮,这不是我希望在这里发生的事情。提前谢谢你Javascript 控制结构未按我希望的方式执行代码的小问题,javascript,if-statement,Javascript,If Statement,制作一个游戏,根据谁先到达某个数字来选择胜利者。然而,当我实现一个if语句时,它会破坏我的游戏,因为这个if语句只是在选择了一个获胜者后立即停止游戏 当我删除if语句时,代码会工作并选择一个获胜者,但是,您仍然可以继续单击掷骰子按钮,这不是我希望在这里发生的事情。提前谢谢你 var scores, roundScore, currentPlayer, playTime; game(); document.querySelector(".btn-roll").addEventListener("
var scores, roundScore, currentPlayer, playTime;
game();
document.querySelector(".btn-roll").addEventListener("click", function() {
if (playTime) {
// 1. random number generator
var dice = Math.floor(Math.random() * 6) + 1;
console.log(dice);
// 2. display the result
var diceDom = document.querySelector(".dice");
diceDom.style.display = "block";
diceDom.src = "/images/dice-" + dice + ".png";
// 3. update the round score if the rolled number was not a 1
if (dice !== 1) {
// i. add score
roundScore += dice;
document.querySelector(
"#current-" + currentPlayer
).textContent = roundScore;
} else {
// ii. next player
nextPlayer();
}
}
});
document.querySelector(".btn-hold").addEventListener("click", function() {
if (playTime) {
// 4. add current players score to global score
scores[currentPlayer] += roundScore;
// i. update UI
document.querySelector("#score-" + currentPlayer).textContent =
scores[currentPlayer];
// ii. check who one the game
if (scores[currentPlayer] >= 10) {
document.querySelector("#name-" + currentPlayer).textContent =
"You are the winner!";
document.querySelector(".dice").style.display = "none";
document
.querySelector(".player-" + currentPlayer + "-panel")
.classList.add("winner");
document
.querySelector(".player-" + currentPlayer + "-panel")
.classList.remove(".active");
playTime = false;
} else {
// iii. next player
nextPlayer();
}
}
});
function nextPlayer() {
currentPlayer === 0 ? (currentPlayer = 1) : (currentPlayer = 0);
roundScore = 0;
//iii. reset scores to 0
document.getElementById("current-0").textContent = "0";
document.getElementById("current-1").textContent = "0";
//iiii. toggle active class for selected player
document.querySelector(".player-0-panel").classList.toggle("active");
document.querySelector(".player-1-panel").classList.toggle("active");
//iiiii. remove dice image when new player is appointed
document.querySelector(".dice").style.display = "none";
}
document.querySelector(".btn-new").addEventListener("click", game);
function game() {
scores = [0, 0];
currentPlayer = 0;
roundScore = 0;
// hide dice on intital page load
document.querySelector(".dice").style.display = "none";
// reset scores to 0
document.getElementById("score-0").textContent = "0";
document.getElementById("score-1").textContent = "0";
document.getElementById("current-0").textContent = "0";
document.getElementById("current-1").textContent = "0";
document.getElementById("name-0").textContent = "Player 1";
document.getElementById("name-1").textContent = "Player 2";
// reset colour of player panels
document.querySelector(".player-0-panel").classList.remove("winner");
document.querySelector(".player-1-panel").classList.remove("winner");
document.querySelector(".player-0-panel").classList.remove("active");
document.querySelector(".player-1-panel").classList.remove("active");
// re adding the active class
document.querySelector(".player-1-panel").classList.add("active");
}
我希望位于queryselector“.btn roll”下方的If语句(播放时间)在宣布获胜者后立即停止游戏。但是,它只是不允许这部分代码运行我找不到一个地方,
游戏时间
变为真
每当游戏开始时,两名玩家的分数都被初始化,那么发薪时间应该变为真。当玩家达到10时,发薪时间将变回False,分数将重置。然后,只有游戏才能在上述代码中自动停止。根据代码,游戏只有在单击.btn hold
时才会停止。不再有playTime=false
。因此,游戏周期是这样的:首先单击.btn new
,欢迎第一个玩家按下。然后第二个玩家单击相同的按钮,依此类推。告诉我,当点击.btn hold
时?嗨,伊万-当分数[currentPlayer]确定胜利者时,游戏停止值大于10问题在于查询选择器下的第一个代码块“.btn roll”如果游戏时间结构似乎不允许游戏开始,但是如果我删除它,您可以玩游戏,但一旦宣布赢家(某人的分数为10或更多)游戏不会停止,你可以继续——毁掉gae,这就是问题所在