JS1K

#2: the original

Source for demo by razorwolf. See also description.

var bod=document.body;
bod.style.margin="0";
bod.style.overflow="hidden";
var w=window.innerWidth,h=window.innerHeight;
function r(m){return Math.ceil(m*Math.random());
}function p(n){var t=this;t.n=n;t.x=new Array(n);
t.y=new Array(n);t.vx=new Array(n);t.vy=new Array(n);
for(i=0;i!=n;i++){t.x[i]=r(w);t.y[i]=r(h);
t.vx[i]=r(5);t.vy[i]=r(5);}t.n=function(){
for(var i=0;i!=n;i++){
t.x[i]+=t.vx[i];t.y[i]+=t.vy[i];
if(t.x[i]>w||t.x[i]<0)t.vx[i]*=-1;
if(t.y[i]>h||t.y[i]<0)t.vy[i]*=-1;
}}}
function bx(color,n){
var t=this;t.n=n;t.color=color;
t.c=new p(4);t.d=function(){
C.strokeStyle=color;
C.beginPath();for(i=0;i!=4;i++)t.plot(i);C.stroke();t.c.n();
}
t.plot=function(s){for(var i=0;i!=5;i++){d=i%4;
C.lineTo(t.c.x[d]+(2+t.c.vx[d]*s),t.c.y[d]+(2+t.c.vy[d]*s));
}}} var c=document.getElementById("c");c.height=h;c.width=w;
var B=new bx("red");var B2=new bx("green");var C=c.getContext("2d");
function D(){C.fillStyle="black";C.rect(0,0,w,h);C.fill();B.d();B2.d();}setInterval("D()",25);