Shadowy Wadoey

HTML

<canvas id="canv" width="400" height="300" />
<p>Use arrows to move</p>

JavaScript

var canv = document.getElementById('canv');
var ctx = canv.getContext('2d');

var config = {};
var blocks = Array();
var light = new Light();
var keysDown = {};
init();

function init() {
    
    for(var i = 0; i < 5; i++) {
        var b1 = new Block();
        blocks.push(b1);
        b1.x = Math.random() * 400;
        b1.y = Math.random() * 300;
    }

    
    document.onkeydown = keypress;
    document.onkeyup = keyup;
    window.addEventListener('keypress', keypress, false);
    window.addEventListener('keyup', keyup, false);
    
  setInterval(onE, 75);          
}

function keypress(e) {
    
    keysDown[e.keyCode] = true;
}

function keyup(e) {
    
    keysDown[e.keyCode] = false;
}

function onE() {
    
    
    if(keysDown[40]) light.y += 5;
    if(keysDown[37]) light.x-= 5;
    if(keysDown[38]) light.y -= 5;
    if(keysDown[39]) light.x += 5;
    
    ctx.fillStyle="#000000";
    ctx.fillRect(0,0,400,400);
    
    ctx.fillStyle="#FF0000";
    ctx.beginPath();
    ctx.arc(light.x,light.y,150,0,Math.PI*2,true);
    ctx.closePath();
    ctx.fill();
    
    ctx.fillStyle="#000000";
    ctx.strokeStyle = '#00f';
    ctx.lineWidth   = 4;
    for(var i = 0; i < blocks.length; i++) {
        
        var cb = blocks[i];
        
        //draw block
        ctx.beginPath();
        ctx.moveTo(cb.x, cb.y);
        ctx.lineTo(cb.x + cb.width, cb.y);
        ctx.lineTo(cb.x + cb.width, cb.y + cb.height);
        ctx.lineTo(cb.x, cb.y + cb.height);
        ctx.closePath();
        ctx.stroke();
        
        //draw shadow
         drawShadow(cb.x, cb.y, cb.x + cb.width, cb.y);
        drawShadow(cb.x+cb.width,cb.y, cb.x + cb.width, cb.y + cb.height);
        drawShadow(cb.x+cb.width,cb.y+cb.height, cb.x, cb.y+cb.height);
        drawShadow(cb.x,cb.y+cb.height, cb.x, cb.y);
    }

    ctx.fillStyle = "#FFFFFF";
    ctx.beginPath();
    ctx.arc(light.x,light.y,5,0,Math.PI*2,true);
    ctx.closePath();
    ctx.fill();
    
}

function...