提问人:user40414 提问时间:10/6/2023 最后编辑:epascarellouser40414 更新时间:10/6/2023 访问量:35
为什么掷骰子的函数不执行语句来检查我的猪游戏中的获胜者?
Why won't the function to roll dice also execute the statement to check for the winner in my Pig Game?
问:
我正在尝试编写掷骰子游戏“猪游戏”。游戏的目的是重复放置骰子,并将每次掷骰子的累积价值添加到每个玩家的当前分数中。如果玩家持有当前分数的最终值,则该分数将添加到他们的总分中。第一个达到 10 分(10 分用于测试目的,100 分用于决赛)的玩家将获胜。如果骰子的值为 1,则玩家将失去该回合的当前分数(但不是他们的总分)。 我有 4 个主要功能。其中之一是掷骰子。此函数使用事件执行 listener.it 该事件还会在每次掷骰子时更新当前分数,如果掷出 1,它会切换玩家。我目前有一个 if 语句,它将在保持按钮的函数中检查获胜者,但我更喜欢它在掷骰子按钮中,这样您掷出的值超过 10,您就赢了,而不必按按。
问题出在第二个用箭头表示的 if 语句上。没有一行代码起作用。我试过把它作为上面的if(diceValue!==1)作为else。我试过让它在函数之外执行。我无法弄清楚为什么它不起作用。最初它在我的 holdBtn 函数中并且有效。但在我的rollBtn函数中不起作用,我实际上希望它起作用。
'use strict';
const score0El = document.getElementById('score--0');
const score1El = document.getElementById('score--1');
const diceEl = document.querySelector('.dice');
const btnNew = document.querySelector('.btn--new');
const btnHold = document.querySelector('.btn--hold');
const btnRoll = document.querySelector('.btn--roll');
const player0El = document.querySelector('.player--0');
const player1El = document.querySelector('.player--1');
let scores = [0, 0];
let currentScore = 0;
let activePlayer = 0;
score0El.textContent = '0';
score1El.textContent = '0';
diceEl.classList.add('hidden');
const diceOptions = [
'dice-1.png',
'dice-2.png',
'dice-3.png',
'dice-4.png',
'dice-5.png',
'dice-6.png',
];
const rollBtn = function() {
const randomIndex = Math.floor(Math.random() * diceOptions.length);
diceEl.src = diceOptions[randomIndex];
diceEl.classList.remove('hidden');
const diceValue = randomIndex + 1;
let currentPlayer = document.getElementById(`current--${activePlayer}`);
if (diceValue !== 1) {
currentScore += diceValue;
currentPlayer.textContent = currentScore;
if (scores[activePlayer] >= 10) { ** < -- -- -- -- -- -- -- -- **
console.log('You have won');
document
.querySelector(`.player--${activePlayer}`)
.classList.add('player--winner');
document
.querySelector(`.player--${activePlayer}`)
.classList.remove('player--active');
diceEl.classList.add('hidden');
btnHold.removeEventListener('click', holdBtn);
btnRoll.removeEventListener('click', rollBtn);
}
} else {
switchPlayer();
}
};
答: 暂无答案
评论
scores[activePlayer]
0,0]
scores[activePlayer] += currentScore
console.log(diceValue, currentScore, activePlayer, scores[activePlayer], scores[activePlayer] >= 10);
score--${activePlayer}