所以我试图建立一个Simon游戏。 首先,我创建了一个随机数组,其中有20个值在1和4之间变化(这将标识游戏的每种颜色)。 所以1将是红色,2将是蓝色,3将是绿色,4将是黄色。 所以我得到的数组是这样的:西蒙游戏如何进行?
var arrayRandomColors = [1, 3, 1, 2, 4, 3, 2, 1, 3, 2, 1, 2, 4, 1, 2, 3, 4, 1, 3, 2]
现在,这声音和我的西蒙游戏色彩的德秩序。不过,我现在需要去那边数组是这样的:
Level 1 - [1] -> Level 2 - [1, 3] -> Level 3 - [1, 3, 1] -> Level 4 - [1, 3, 1, 2]... etc. And then each time it loops over these arrays it plays a sequence o sounds that corresponds to the current level.
所以这就是我所做的:
var j=2;
var arrayPlay = [];
for (var j=2; j<22; j++){
for(var i=1; i<j; i++){
arrayPlay.push(arrayRandomColors[i-1]);
}
console.log(arrayPlay); //[1] -> [1,3] -> [1,3,1]...etc
arrayPlay = [];
}
到目前为止,我设法让所有我想要的阵列。然而,由于我需要慢慢浏览这些数字,显示选中的颜色并在循环播放时播放声音,而且for循环速度太快,所以我停滞不前。我想过这样做:
for (var j=2; j<22; j++){
for(var i=1; i<j; i++){
arrayPlay.push(arrayRandomColors[i-1]);
}
//console.log(arrayPlay);
for (var k=0; k<arrayPlay.length; k++){
var id = setInterval(function(){
console.log("entrou");
if (arrayPlay[k] == 1){
$red.css("background-color", "#ffc1c1");
$red.delay(500);
$red.css("background-color", "red");
}
else if (arrayPlay[k] == 2){
$blue.css("background-color", "#a5b0f7");
$blue.delay(500);
$blue.css("background-color", "blue");
}
else if (arrayPlay[k] == 3){
$green.css("background-color", "#aff7a5");
$green.delay(500)
$green.css("background-color", "green");
}
else if (arrayPlay[k] == 4){
$yellow.css("background-color", "#fffb91");
$yellow.delay(500);
$yellow.css("background-color", "yellow");
}
}, 500);
}
arrayPlay = [];
console.log("\n");
}
但它不起作用。谁能帮我吗?