window.onload = function() {
    var game = {
        play: function() {
            vgrid = [];
            for (var i = 0; i <= 79; i++) {
                vgrid[i] = grid[i].slice();
            };

            for (var i = 0; i <= 79; i++) {
                for (var j = 0; j <= 79; j++) {
                    var count = 0;

                    if(typeof grid[i+1] !== 'undefined') {
                        if(grid[i+1][j-1] === 1) { count++; }
                        if(grid[i+1][j] === 1) { count++; }
                        if(grid[i+1][j+1] === 1) { count++; }
                    }

                    if(typeof grid[i] !== 'undefined') {
                        if(grid[i][j-1] === 1) { count++; }
                        if(grid[i][j+1] === 1) { count++; }
                    }

                    if(typeof grid[i-1] !== 'undefined') {
                        if(grid[i-1][j-1] === 1) { count++; }
                        if(grid[i-1][j] === 1) { count++; }
                        if(grid[i-1][j+1] === 1) { count++; }
                    }

                    if(grid[i][j] === 0) {
                        if(count === 3) { vgrid[i][j] = 1; }
                    } else {
                        if(count !== 2 && count !== 3) { vgrid[i][j] = 0; }
                    }
                };
            };

            if(JSON.stringify(grid) == JSON.stringify(vgrid)) {
                game.playstop();
                return;
            }

            grid = [];
            for (var i = 0; i <= 79; i++) {
                grid[i] = vgrid[i].slice();
            };

            game.refresh();
        },

        playstop: function() {
            if(p) {
                clearInterval(t);

                p = false;
                playIco.innerHTML = '';

                grid = [];
                for (var i = 0; i <= 79; i++) {
                    grid[i] = [];
                    for (var j = 0; j <= 79; j++) { grid[i].push(0); };
                };

                game.refresh();
            } else {
                p = true;
                playIco.innerHTML = '';

                t = setInterval(function() {
                    game.play();
                }, 300);
            }
        },

        refresh: function() {
            gol.clearRect(0, 0, canvas.width, canvas.height);

            for (var i = 0; i <= 79; i++) {
                for (var j = 0; j <= 79; j++) {
                    gol.strokeStyle = "rgb(0,0,0)";
                    gol.strokeRect (i*5, j*5, 5, 5);
                    if(grid[i][j] === 1) {
                        gol.fillStyle = "rgb(200,0,0)";
                        gol.fillRect (i*5, j*5, 5, 5);
                        gol.strokeStyle = "rgb(0,0,0)";
                        gol.strokeRect (i*5, j*5, 5, 5);
                    }
                };
            };
        },
    };

    var t;
    var p = false;

    var canvas = document.querySelector('#gol');
    var gol = canvas.getContext("2d");

    var playIco = document.querySelector('.play');

    var grid = [];
    for (var i = 0; i <= 79; i++) {
        grid[i] = [];
        for (var j = 0; j <= 79; j++) { grid[i].push(0); };
    };

    canvas.addEventListener('click', function(e) {
        var x = Math.floor(e.layerX / 5);
        var y = Math.floor(e.layerY / 5);

        if(grid[x][y] === 0) { grid[x][y] = 1; }
        else { grid[x][y] = 0; }

        game.refresh();
    }, false);

    playIco.addEventListener('click', function() {
        game.playstop();
    }, false);

    for (var i = 0; i <= 7; i++) { grid[36+i][40] = 1; };
    game.refresh();
    game.playstop();
};
Passionné par le développement, le webmarketing et la sécurité web, j’évolue dans ces domaines depuis des années. Freelance depuis 2010, j'ai géré plusieurs activités parallèles : Une activité de développeur web, la gestion marketing d’une activité de coiffure à domicile en association avec une prestataire beauté et une activité centrée sur la sécurité web via la mise en place d’un partenariat en marque blanche avec une société d’infogérance. J’ai mené des recherches dans le domaine de l’ingénierie sociale et je suis intervenu auprès d'acteurs du Web comme Google, la fondation Mozilla ou encore OVH dans la sécurisation de leurs services.
Des questions ? N'hésitez-pas à m'envoyer un message :