Javascript 二维数组读取问题

Javascript 二维数组读取问题,javascript,arrays,multidimensional-array,conways-game-of-life,Javascript,Arrays,Multidimensional Array,Conways Game Of Life,我正试图用javascript编写康威的人生游戏 这些规则是: 如果一个死像素恰好被三个活像素包围,它将变为活像素 如果一个活动像素被少于两个或三个以上的活动像素包围,它将消亡 我已经将这些规则编程到一个2d数组中,但是,有时当一个死像素被不到三个活像素包围时,它将变为活像素,有时应该死的像素将保持活像素 规则中的镜像对象应输出相同但镜像的结果,并且与我的代码不一致。这让我相信检查探测的代码是错误的,而不是检查给定像素周围的活动像素数(计数器)的代码。然而,我在这里找不到错误。也许我太累了,错过

我正试图用javascript编写康威的人生游戏

这些规则是:

  • 如果一个死像素恰好被三个活像素包围,它将变为活像素
  • 如果一个活动像素被少于两个或三个以上的活动像素包围,它将消亡
  • 我已经将这些规则编程到一个2d数组中,但是,有时当一个死像素被不到三个活像素包围时,它将变为活像素,有时应该死的像素将保持活像素

    规则中的镜像对象应输出相同但镜像的结果,并且与我的代码不一致。这让我相信检查探测的代码是错误的,而不是检查给定像素周围的活动像素数(计数器)的代码。然而,我在这里找不到错误。也许我太累了,错过了一些很明显的事情。我相信有更好的方法,但这段代码应该可以工作,不是吗

    请原谅这种奇怪的格式,我只是想让自己尽可能清楚,以确保它能正确地检查自身周围的所有八个像素

    for (var x = 0; x < xPixels; x++) {
        for(var y = 0; y < yPixels; y++){
            counter = 0;
            if(y+1<yPixels){                                                //not below screen
                if(x-1>=0){         if(pixels[x-1][y+1])    {counter++;}}       //bottom left
                                    if(pixels[x+0][y+1])    {counter++;}        //bottom middle
                if(x+1<xPixels){    if(pixels[x+1][y+1])    {counter++;}}       //bottom right
            }                                                               //in-line
                if(x-1>=0){         if(pixels[x-1][y+0])    {counter++;}}       //left
                if(x+1<xPixels){    if(pixels[x+1][y+0])    {counter++;}}       //right
            if (y-1>=0){                                                    //not above screen
                if(x-1>=0){         if(pixels[x-1][y-1])    {counter++;}}       //top left
                                    if(pixels[x+0][y-1])    {counter++;}        //top middle
                if(x+1<xPixels){    if(pixels[x+1][y-1])    {counter++;}}       //top right
            }
    
            if (pixels[x][y]){                  //alive
                if(counter<2 || counter>3) {
                    newPixels[x][y]=false;      //dies
                } else {
                    newPixels[x][y]=true;       //stays alive
                }
            } else {                            //dead
                if(counter==3){ 
                    newPixels[x][y]=true;       //born
                } else {                        
                    newPixels[x][y]=false;      //stays dead
                }
            }
        }
    }
    
    for(var x=0;x=0){if(像素[x-1][y-1]){counter++;}}//左上角
    if(像素[x+0][y-1]){counter++;}//中上
    
    如果(x+1将(var x=0;x