Snakes!

Snake lights

by jhalderm

HTML

<script src="http://141.212.120.173/client.js"></script>

JavaScript

// Snakes!

(new Blinken()).run(function (lights) {
    function Snake(position, size, speed, color) {
        this.start = position;
        this.end = (position+size) % lights.length;
        this.speed = speed;
        this.color = color;
        this.move = function() {
            this.start = (this.start + this.speed) % lights.length;
            if (this.start < 0) { this.start += lights.length; }
            this.end = (this.end + this.speed) % lights.length;
            if (this.end < 0) { this.end += lights.length; }
        };
        this.draw = function() {
            var x = this.start;
            while (x != this.end) {
                lights[x].rgb(lights[x].r+this.color.r,lights[x].g + this.color.g,lights[x].b + this.color.b);
                x = (x + 1) % lights.length;
            }
        };
    }
    var snakes = [new Snake(0, 20, 1, {r:1,g:0,b:0}),
                  new Snake(79, 20, -1, {r:0,g:1,b:0}),
                            new Snake(45, 10, 2, {r:0,g:0,b:1})];    
    return function () {
        for (var j=0; j < lights.length; j++) { lights[j].rgb(0,0,0); }
        for (var i=0; i < snakes.length; i++) {
            snakes[i].move();
            snakes[i].draw();
        }
        return 50;
    };
})