-
Notifications
You must be signed in to change notification settings - Fork 0
/
Tetris-min.html
5 lines (5 loc) · 1.49 KB
/
Tetris-min.html
1
2
3
4
5
<canvas id="myCanvas" width="300" height="600" style="border:1px solid #000000;margin-left: auto;margin-right: auto;margin-top: auto;margin-bottom: auto;display: block;" />
<script>var a=document.getElementById("myCanvas").getContext("2d"),b=a.canvas,c=[[3840,17476],[26112],[17984,19968,19520,3648],[3712,25120,11776,35008],[3616,17600,36352,51328],[1728,35904],[3168,19584]],d="0000000000",e=[d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d],f=b.width,g=f/10,h=b.height/20,x=3,y=-1,k=0,l,m,n=e,o=0,p=215,q=5,r,z;
function s(v,w,B,C){function A(w){for(var A=0,D=(v[C+w]||"").split("");4>A;A++)0!=E.substring(4*w,4*(w+1))[A]&&(0==D[B+A]?D[B+A]=m+1:v=(A=4)-4);return(v[C+w]=D.join(""))||v}var E=(d+"000000"+w.toString(2)).slice(-16);return A(0)&&A(1)&&A(2)&&A(3)&&v}
function t(v){l=l||c[m=Math.floor(Math.random()*c.length)].slice(0);k=++k%((z=p-Math.floor(o/q))&&15>z?15:z);v=v&&v.keyCode;var w=x,B=y,C,A=l.slice(0);(!k||40==v)&&B++||37==v&&w--||39==v&&w++||38==v&&A.push(A.shift());if(C=s(e.slice(0),A[0],w,B))(y=B,x=w,l=A)&&u(n=C);else if(!k||40==v){1>y&&window.removeEventListener(clearInterval(r)||alert("game over, score: "+o)||"keydown",t);v=1;for(w=0;21>v;v++)0>n[v].indexOf(0)&&n.splice(v,++w/w)&&n.splice(1,0,d);l=0;y=-1;x=3;e=n;o+=Math.pow(2,w)}}
function u(v){var w=1;for(b.width=f;21>w;w++)for(var B=0;10>B;B++)(z=35E5*v[w][B])&&(a.fillRect((a.fillStyle="#"+("000000"+z.toString(16)).slice(-6))&&g*B,h*(w-1),g,h)||a.rect(g*B,h*(w-1),g,h)||a.stroke())}r=setInterval(window.addEventListener("keydown",t)||t,3);</script>