多人问答游戏如何修改JS代码实现按答题先后顺序梯度计分
多人问答游戏计分规则修改方案
核心逻辑:新增每道题的答对人数计数变量,根据答对顺序赋值分值,删除答错扣分逻辑,调整跳题触发时机
修改要点
- 新增全局变量
currentQuestionCorrectCount,用于记录当前题目已答对的玩家数量,每次加载新题目时将该变量重置为0 - 答对题目时根据当前计数判断应加分值:
- 首次答对(计数为0)加2分
- 第二次答对(计数为1)加1分
- 第三次及以后答对不加分
- 删除答错时的扣分逻辑,仅保留答错样式标记和音效
- 调整原逻辑中答对即跳题的设置,改为累计2人答对后再触发下一题加载,避免第二个答对的玩家无法完成作答
修改后完整代码
// 新增全局变量,初始化值为0 let currentQuestionCorrectCount = 0; function enableAnswering() { // 启用答案按钮点击功能 document.querySelectorAll("#answers .optionblock").forEach((answer) => { answer.onclick = (e) => { const answerButton = answer; const playerAnswer = answer.dataset.answer; const playerNumber = Number(answerButton.dataset.player); const correctAnswer = options[thiskey]; if (playerAnswer.toLowerCase() == correctAnswer.toLowerCase()) { answerButton.classList.add("correctAnswer"); // 根据答对顺序加分 if (currentQuestionCorrectCount === 0) { scores[playerNumber] += 2; } else if (currentQuestionCorrectCount === 1) { scores[playerNumber] += 1; } // 答对计数+1 currentQuestionCorrectCount++; var plusAudio = new Audio("../audio/correct.mp3"); plusAudio.play(); // 满2人答对后再触发下一题 if (currentQuestionCorrectCount >= 2) { clearQuestionTimerManually(); setTimeout(() => { // 加载新题之前重置答对计数 currentQuestionCorrectCount = 0; loadNextQuestionInHTML(); }, 2000); } } else { answerButton.classList.add("wrongAnswer"); var minusAudio = new Audio("../audio/Wrong.mp3"); minusAudio.play(); } finishGameAndShowResults(); answer.onclick = () => {}; }; }); }
适配说明
如果你的游戏逻辑中存在答题倒计时结束自动跳题的场景,需要在倒计时结束触发下一题的逻辑里,同样加上currentQuestionCorrectCount = 0的重置代码,避免计数累计到下一道题。
内容的提问来源于stack exchange,提问作者Muhammad Shahzaib
相关产品推荐
相关产品推荐

