JS1K

#2: the original

Source for demo by Malte Ubl.

var f=document,i=Math,j=parseInt,k=f.body,d=window.innerWidth,c=f.getElementById("c");c.focus();var g=c.getContext("2d");c.width=d;k.style.margin=0;g.fillText("Arrow up",10,10);c=new Image;c.src="data:;base64,R0lGODlhDAAYAJEAAP///617AP85AP+lQiH/C05FVFNDQVBFMi4wAwEAAAAh+QQICwAAACwAAAAADAAYAAACTIQtKXeaw5AaMIYwcD246+1RInSJ12mUJsqNVKRcCwDKF12dQaIC+i7YYXw6XvAHHAgyOIojYRg9Z6LpIsB5soQOpJHnjXCw4nHZUAAAIfkECA8AAAAsAAAAAAwAGAAAAkeEj6lr4urigLGKE/IIY6LOdaIRhqJnblmGpF3rjImQ0UpAr8JL5quM85kOkVWIWMTNLBeAjnl5OmpRKi1CYmG02m2AdDMWAAAh+QQECwAAACwAAAAADAAYAAACRYSPacKizcaDDYUwsLQ56315QzcC4Xilx+ddSFM+l+BaKRMkaVDZabz6ARe0D+PQMDqION4R2axBdwpAtKrK6VTYnRZQAAA7";
var b=c.style;b.position="absolute";k.appendChild(c);var h=0;b.left=b.top="120px";g.fillRect(0,145,d,5);var l={},m=0;setInterval(function(){if(m++%500==0){var a=i.round(i.random()*d)+200;g.fillRect(a,50,5,100);l[a]=b}a=j(b.top)+h;var e=j(b.left)+1;h+=0.06;if(a>=10&&a<120)b.top=a+"px";if(e==d-12||l[e+12]&&a>50)e=0;b.left=e+"px"},9);f.onkeydown=function(a){if(a.keyCode==38)h=-3}