-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtron.min.js
1 lines (1 loc) · 1022 Bytes
/
tron.min.js
1
var s=c.width=c.height=256;var m=s/2;var l=64;a.fillRect(0,0,c.width,c.height);var d,px={};var p=[new P(l,m,1,0,0),new P(s-l,m,-1,0,1),new P(s-m,l,0,1,2),new P(s-m,s-l,0,-1,3)];setInterval(function(){d=a.getImageData(0,0,s,s);for(var e=0;e<p.length;e++){var b=p[e];b.u(d);if(e>0){if(Math.random()<0.01||b.a()){if(Math.random()<0.5){b.r()}else{b.l()}}}}a.putImageData(d,0,0)},33);function gp(b,e){if(!px[b]){px[b]=[]}if(e==0||e==s||b==0||b==s){return 1}return px[b][e]}function P(b,i,h,f,g){var e=this;e.x=b;e.y=i;e.sx=h;e.sy=f;e.c=g;e.u=function(k){if(!px[e.x]){px[e.x]=[]}px[e.x][e.y]=1;g=[[0,128,255],[255,0,0],[0,255,0],[255,255,0]][e.c];e.x+=e.sx;e.y+=e.sy;if(gp(e.x,e.y)){e.sx=0;e.sy=0}if(e.sx+e.sy){var j=(e.x+e.y*s)*4;k.data[j]=g[0];k.data[j+1]=g[1];k.data[j+2]=g[2]}};e.r=function(){nx=-e.sy;ny=e.sx;e.sx=nx;e.sy=ny};e.l=function(){nx=e.sy;ny=-e.sx;e.sx=nx;e.sy=ny};e.a=function(){ax=e.x+e.sx*8;ay=e.y+e.sy*8;return gp(ax,ay)}}document.onkeydown=function(b){if(b.keyCode==39){p[0].r()}if(b.keyCode==37){p[0].l()}};