Simon游戏按钮点击无响应问题排查及代码求助
问题排查与修复:Simon游戏按钮无响应
核心错误点:
- 变量名拼写错误:按钮点击事件里的
userCLickedPattern应为userClickedPattern(字母L误写为大写),导致用户点击的颜色无法存入对应数组,后续答案校验逻辑完全失效。 - 函数名拼写错误:
checkAnswer函数中的setTimeOut应为setTimeout(字母t误写为大写),导致答对后无法触发下一关的序列生成。
修正后的完整代码:
var buttonColors = ["red", "blue", "green", "yellow"]; var gamePattern = []; var userClickedPattern = []; var started = false; var level = 0; $(document).keypress(function() { if (!started) { $("#level-title").text("Level " + level); nextSequence(); started = true; } }); $(".btn").click(function() { var userChosenColor = $(this).attr("id"); userClickedPattern.push(userChosenColor); // 修正变量名拼写 playSound(userChosenColor); animatePress(userChosenColor); checkAnswer(userClickedPattern.length-1); }); function checkAnswer(currentLevel) { if (gamePattern[currentLevel] === userClickedPattern[currentLevel]) { if (userClickedPattern.length === gamePattern.length) { setTimeout(function () { // 修正函数名拼写 nextSequence(); }, 1000); } } else { playSound("wrong"); $("body").addClass("game-over"); $("#level-title").text("Game over, Press Any Key To Restart"); setTimeout(function () { $("body").removeClass("game-over"); }, 200); startOver(); } } function nextSequence() { userClickedPattern = []; level++; $("#level-title").text("Level " + level); var randomNumber = Math.floor(Math.random() * 4); var randomChosenColor = buttonColors[randomNumber]; gamePattern.push(randomChosenColor); $("#" + randomChosenColor).fadeIn(100).fadeOut(100).fadeIn(100); playSound(randomChosenColor); } function playSound(name) { var audio = new Audio("sounds/" + name + ".mp3"); audio.play(); } function animatePress(currentColor) { $("#" + currentColor).addClass("pressed"); setTimeout(function () { $("#" + currentColor).removeClass("pressed"); }, 100); } function startOver() { level = 0; gamePattern = []; started = false; }
内容的提问来源于stack exchange,提问作者Kate
相关产品推荐
相关产品推荐

