西蒙游戏如何进行?

时间:2017-07-06 05:00:11

标签: javascript jquery arrays

所以我正在尝试建立一个西蒙游戏。 首先,我创建了一个随机数组,其中20个值在1到4之间变化(这将识别游戏的每种颜色)。 因此1将是红色,2将是蓝色,3将是绿色,4将是黄色。 所以我得到了这样的数组:

with Pool(processes=6) as p:
    p.starmap(func, list(dict_a.items()))

现在这是我的西蒙游戏的声音和颜色的顺序。但是,我现在需要像这样遍历阵列:

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.

到目前为止,我设法获得了我想要的所有数组。然而,我不知道如何继续,因为我需要缓慢地查看这些数字,显示颜色被选中并在循环时播放声音,并且for循环太快了。我想做这样的事情:

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 = [];
    }

但它不起作用。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

你说的循环跑得太快了。你使用间隔的想法是一个很好的步骤,但有一个问题。你使用了500的固定间隔。现在试着想象一下,循环运行得很快并且创建了一堆所有500的间隔,所以它们都将在500之后几乎同时运行。我们没有解决问题,我们只是将执行延迟了500。

解决方案是使用递增间隔。将其乘以索引(记得添加一个,因为它基于零)。类似的东西:

setInterval(..., 500 * (k+1));

您可能需要使用索引jkj的组合。我会留给你探索,但这个答案会让你开始。

答案 1 :(得分:0)

您可以使用setTimeout(),如here所述。那说:

  

setTimeout()方法在指定的毫秒数后调用函数或计算表达式。   setTimeout(function(){ alert("Hello"); }, 3000);


。(w3Schools引用不是最好的,在这里看不太好,但它不是一个更精细的东西,所以这个链接应该有帮助。)

答案 2 :(得分:0)

我自己正在尝试构建Simon游戏(我刚刚开始进行前端开发)。以下是我在开始之前做的一些指示。

  

我需要从一个着色瓷砖开始一次哔哔声,接着是两个着色瓷砖,每次都会发出一次哔哔声,然后等待您决定的水平。因此,我的方法是已经定义了4个彩色瓷砖,红色为1,黄色为2,蓝色为3,绿色瓷砖为4。现在,对于每个级别,我可以通过函数生成随机数(1到4)。因此,如果我使用的循环次数等于游戏等级的次数,我将为级别1生成一个随机数,为级别2生成2个随机数,依此类推。

     

对于每个随机数,您可以对相应的彩色瓷砖进行哔哔声。

     

现在,对于彩色图块的哔哔声之间的时间间隔,您可以使用setInterval函数在一定的毫秒数后运行,只有在所需的图块数量已经渗透时才会清除。例如。在级别4上,setInterval应运行4次,时间间隔为1000毫秒。

     

现在,随着水平的提升,你可以减少时间差距,使游戏更快,更具挑战性。

     

另外,请记下你将如何让用户知道,轮到他们现在玩,而且,一旦用户完成他们的关卡,你怎么告诉应用程序它不应该等待更多的用户输入和分析这个级别的结果,然后继续进行下一级别。

我知道,这就是所有的话,但请相信我,如果你有所有这些计划,你的努力将会越来越有成效。