Conwys Game of life 2

by Shabeer Sheffa

HTML

<canvas id="background"></canvas>

JavaScript

var pixelSize = 4;
var numCells = 90;
var canvas = document.getElementById('background');
canvas.width = pixelSize*numCells;
canvas.height = pixelSize*numCells;
var context = canvas.getContext('2d');
var arr = buildArr();

function buildArr() {
        var arr = [];
        for(var i = 0; i<numCells; i++) {
                var innerArr = [];
                for(var j = 0; j<numCells; j++) {
                        innerArr.push(0);
                }
                arr.push(innerArr);
        }
        return arr;
}

function display(arr) {
        for(var x = 0; x < arr.length; x++) {
                for(var y = 0; y < arr[x].length; y++) {
                        drawCell(x,y,arr[x][y]);
                }
        }
}

function drawCell(x,y,alive) {
        context.beginPath();
        context.rect(x*pixelSize, y*pixelSize, pixelSize, pixelSize);
        context.fillStyle = alive ? 'black' : '#EEE';
        context.fill();
}

function randomlyPopulate(arr) {
        for(var x = 0; x < arr.length; x++) {
                for(y = 0; y < arr[x].length; y++) {
                        if(Math.log(Math.random()*10) < -0.6) {
                                arr[x][y]=1;
                        }
                }
        }
}

function manualSetup(arr) {
        arr[20][20] = 1;   
        arr[21][20] = 1; 
        arr[22][20] = 1;   
}

function aliveNeighbors(arr, x, y) {
        if(x > 0 && y > 0 && x < numCells-1 && y < numCells-1) {
                var totalAlive = 
                        arr[x-1][y-1]+
                        arr[x][y-1]+
                        arr[x+1][y-1]+
                        arr[x-1][y]+
                        //arr[x][y]+
                        arr[x+1][y]+
                        arr[x-1][y+1]+
                        arr[x][y+1]+
                        arr[x+1][y+1];
                return totalAlive;
        } else {
                return 0;
        }
}

function step(arr) {
        var newArr = buildArr();
        for(var x = 0;...