(function() {
 var DEBUG, before, c, clamp, collides, ctx, delta, draw, elapsed, keysDown, keysPressed, load, loading, now, ogre, setDelta, tick, update;

 c = document.getElementById('draw');

 ctx = c.getContext('2d');

 delta = 0;

 now = 0;

 before = Date.now();

 elapsed = 0;

 loading = 0;

 DEBUG = true;

 c.width = 800;

 c.height = 600;

 keysDown = {};

 keysPressed = {};

 window.addEventListener("keydown", function(e) {
         keysDown[e.keyCode] = true;
         return keysPressed[e.keyCode] = true;
         }, false);

 window.addEventListener("keyup", function(e) {
         return delete keysDown[e.keyCode];
         }, false);

 setDelta = function() {
     now = Date.now();
     delta = (now - before) / 1000;
     return before = now;
 };

 if (!DEBUG) {
     console.log = function() {
         return null;
     };
 }

 ogre = false;

 clamp = function(v, min, max) {
     if (v < min) {
         return min;
     } else if (v > max) {
         return max;
     } else {
         return v;
     }
 };

 collides = function(a, b, as, bs) {
     return a.x + as > b.x && a.x < b.x + bs && a.y + as > b.y && a.y < b.y + bs;
 };

 player = {
x: 100,
   y: 100,
 }

 tick = function() {
     setDelta();
     elapsed += delta;
     update(delta);
     draw(delta);
     keysPressed = {};
     if (!ogre) {
         return window.requestAnimationFrame(tick);
     }
 };

 update = function(delta) {
     if(keysDown[65]) {
         player.x -= delta * 100;
     }

     if(keysDown[68]) {
         player.x += delta * 100;
     }
 };

 draw = function(delta) {
     ctx.clearRect(0, 0, c.width, c.height);
     ctx.fillStyle = "#FFFFFF";
     ctx.fillRect(player.x, player.y, 32, 32);
     ctx.save();
     return ctx.restore();
 };

 (function() {
  var targetTime, vendor, w, _i, _len, _ref;
  w = window;
  _ref = ['ms', 'moz', 'webkit', 'o'];
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
  vendor = _ref[_i];
  if (w.requestAnimationFrame) {
  break;
  }
  w.requestAnimationFrame = w["" + vendor + "RequestAnimationFrame"];
  }
  if (!w.requestAnimationFrame) {
  targetTime = 0;
  return w.requestAnimationFrame = function(callback) {
  var currentTime;
  targetTime = Math.max(targetTime + 16, currentTime = +(new Date));
  return w.setTimeout((function() {
          return callback(+(new Date));
          }), targetTime - currentTime);
  };
  }
 })();

 load = function() {
     return window.requestAnimationFrame(tick);
 };

 load();

}).call(this);

@@ -1584,131 +1584,979 @@
 ) %7B%0A
+%0A
      
-ctx.clearRect(0, 0, c.width, c.height);%0A     ctx.fillStyle = %22#FFFFFF%22;%0A     ctx.fillRect(player.x, player.y, 32, 32);
+var imageData = ctx.getImageData(0, 0, c.width, c.height);%0A     var data = imageData.data;%0A%0A     var newImageData = ctx.createImageData(c.width, c.height)%0A     var newData = newImageData.data;%0A%0A     for(var i = 0; i %3C data.length; i += 4) %7B%0A         var x = (i / 4) %25 c.width;%0A         var y = parseInt((i / 4) / c.width);%0A%0A         if(data%5Bi%5D !== 0) %7B%0A             if(elapsed %3C= 10) %7B%0A                 // WONSZ%0A                 y += parseInt(Math.sin(x / 20 + elapsed * 5) * elapsed);%0A             %7D else %7B%0A                 // JEB%0A                 y += parseInt(Math.random() * 24);%0A                 x += parseInt(Math.random() * 10 - 5);%0A             %7D%0A%0A             newData%5B4 * (y * c.width + x) + 0%5D = data%5Bi + 0%5D%0A             newData%5B4 * (y * c.width + x) + 1%5D = data%5Bi + 1%5D%0A             newData%5B4 * (y * c.width + x) + 2%5D = data%5Bi + 2%5D%0A             newData%5B4 * (y * c.width + x) + 3%5D = data%5Bi + 3%5D%0A         %7D%0A     %7D%0A%0A     ctx.putImageData(newImageData, 0, 0)%0A
 %0A   
@@ -3239,16 +3239,16 @@
  %7D)();%0A%0A
-
  load = 
@@ -3256,24 +3256,139 @@
 unction() %7B%0A
+     ctx.clearRect(0, 0, c.width, c.height);%0A     ctx.fillStyle = %22#FFFFFF%22;%0A     ctx.fillRect(300, 200, 400, 20);%0A
      return 

Add solid snake