Javascript西蒙游戏,如何检查答案

Javascript西蒙游戏,如何检查答案,javascript,arrays,Javascript,Arrays,我正在尝试用Javascript为学校制作一个simon游戏。我目前已经设置了代码,以便自己创建一个颜色数组序列,并且已经成功地将用户的答案保存到自己的数组中,在新的序列中会被清除。我现在正试图看看所说的颜色序列是否与用户的颜色序列相匹配,但我不确定如何在没有任何漏洞的情况下检查这一点。我得到的最好结果是能够测试userClicks数组长度到gamePattern数组长度,并确保最后一次单击确实是正确的,但无法找到一个好方法来测试整个userClicks数组是否与gamePattern数组相等。

我正在尝试用Javascript为学校制作一个simon游戏。我目前已经设置了代码,以便自己创建一个颜色数组序列,并且已经成功地将用户的答案保存到自己的数组中,在新的序列中会被清除。我现在正试图看看所说的颜色序列是否与用户的颜色序列相匹配,但我不确定如何在没有任何漏洞的情况下检查这一点。我得到的最好结果是能够测试userClicks数组长度到gamePattern数组长度,并确保最后一次单击确实是正确的,但无法找到一个好方法来测试整个userClicks数组是否与gamePattern数组相等。我还将遇到数组必须在分配的时间内填充的问题,我可能会使用setTimout()函数来实现这一点。必须有一种更简单的方法来测试给定数组是否等于另一个数组

/*************VARIABLES*************/
//store colors
var buttonColors = [
    "green", //0
    "red", //1
    "yellow", //2
    "blue" //3
]
//Game Pattern Storage
var gamePattern = [ /*Added From nextSequence*/ ];
var userClicks = [ /* Added from userClickHistory*/ ];

var level = 0;
var gameOn = false;

/******************BASIC FUNCTIONS*********************/

/*AWAIT KEYPRESS TO BEGIN GAME*/
//some document listener to look for keypress changing gameOn to `true`
//display the level to user
//activate nextSequence();

//log user clicks after nextSequence has executed, check the userClicks vs gamePattern
$(`.btn`).click(function () {
    var buttonClicked = $(this).attr(`id`);
    userClicks.push(buttonClicked);
    animate(buttonClicked);
    playSound(buttonClicked);

    checkAnswer(userClicks);
});

function checkAnswer(userClicksArray) {
    //display the current level to user
    //NOT SURE WHAT TO DO ANYMORE
}

/************* NEXT SEQUENCE TO PROGRESS GAME *********/
function nextSequence() {
    userClickPattern = [];
    level++;
    console.log(level);

    randomNumber = Math.floor(Math.random() * 4)
    randomChosenColor = buttonColors[randomNumber];
    gamePattern.push(randomChosenColor);
    animate(randomChosenColor);
    playSound(randomChosenColor);
}


/******************** SOUNDS AND ANIMATIONS*************************************/

//buttons animations
function animate(clickedButton) {
    $(`#` + clickedButton).fadeOut(100).fadeIn(100);
};

//Play a sound in corellation to randomChosenColor
function playSound(color) {
    var sound = new Audio('sounds/' + color + '.mp3');
    sound.play();
};

您应该从比较长度开始,如果长度相同,只需在数组中循环,并检查每个索引处的值是否相同

如果数组是“平面”(没有嵌套的数组或对象),则效果很好。如果您有嵌套对象,则需要以下内容:

功能检查应答(游戏模式、用户点击){
const len=gamePattern.length;
if(len!==userClicks.length){
//数组的长度不匹配
返回false;
}
for(设i=0;ilog(检查答案(['red','blue','green'],['red','yellow','green'])哦,我想我已经明白为什么这在最后一个小时里对我不起作用了。我一直让它返回false并破坏我的程序(如果它是我所期望的,它应该是这样的)。我现在意识到我的userClicks是由一个函数添加的,即:
function addUserClicks(){(`.btn`)。click(function(){//somecode})使其在执行nextSequence()的同时(几乎)执行,并将userClicks.length返回为空。这个答案来得正是时候,谢谢!