Hot patch for speedtest
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5395],{86373:(e,r,t)=>{Promise.resolve().then(t.bind(t,55049))},55049:(e,r,t)=>{"use strict";t.r(r),t.d(r,{default:()=>s});var l=t(20475),n=t(20107);let a=[[[1,1,1,1]],[[1,1],[1,1]],[[1,1,1],[0,1,0]],[[1,1,1],[1,0,0]],[[1,1,1],[0,0,1]],[[1,1,0],[0,1,1]],[[0,1,1],[1,1,0]]],c=["#00f0f0","#f0f000","#a000f0","#f0a000","#0000f0","#00f000","#f00000"],s=()=>{let[e,r]=(0,n.useState)(()=>Array.from({length:20},()=>Array(10).fill(null))),[t,s]=(0,n.useState)([]),[u,f]=(0,n.useState)({x:0,y:0}),[i,o]=(0,n.useState)(""),[x,d]=(0,n.useState)(0),[h,y]=(0,n.useState)(0),[m,g]=(0,n.useState)(!1),[p,v]=(0,n.useState)(!1),b=(0,n.useRef)(u),k=(0,n.useRef)(t),w=(0,n.useRef)(e),C=(0,n.useRef)(i),S=(0,n.useRef)(p),j=(0,n.useCallback)(()=>Math.max(1e3-100*Math.floor(x/2e3),100),[x]);(0,n.useEffect)(()=>{b.current=u},[u]),(0,n.useEffect)(()=>{k.current=t},[t]),(0,n.useEffect)(()=>{w.current=e},[e]),(0,n.useEffect)(()=>{C.current=i},[i]),(0,n.useEffect)(()=>{S.current=p},[p]),(0,n.useEffect)(()=>{let e=localStorage.getItem("tetrisHighScore");e&&y(parseInt(e))},[]),(0,n.useEffect)(()=>{m&&x>h&&(y(x),localStorage.setItem("tetrisHighScore",x.toString()))},[m,x,h]);let E=(0,n.useCallback)(()=>{let e=Math.floor(Math.random()*a.length),r=a[e];s(r),o(c[e]),f({x:Math.floor(5-r[0].length/2),y:0}),v(!1)},[]),N=(0,n.useCallback)((e,r)=>{for(let t=0;t<r.length;t++)for(let l=0;l<r[t].length;l++)if(r[t][l]){let r=e.x+l,n=e.y+t;if(r<0||r>=10||n>=20||n>=0&&w.current[n][r])return!0}return!1},[]),R=(0,n.useCallback)(e=>{let r=e.filter(e=>e.some(e=>!e)),t=20-r.length;return t>0?(d(x+100*t),[...Array(t).fill(null).map(()=>Array(10).fill(null)),...r]):e},[x]),A=(0,n.useCallback)(()=>{if(S.current)return;let e=w.current.map(e=>[...e]),t=!1;if(b.current.y<=0&&N(b.current,k.current)){g(!0);return}for(let r=0;r<k.current.length;r++)for(let l=0;l<k.current[r].length;l++)if(k.current[r][l]){let n=b.current.y+r;if(n<0){t=!0;break}e[n][b.current.x+l]=C.current}if(t){g(!0);return}r(R(e)),v(!0),E()},[R,E]),M=(0,n.useCallback)(()=>{if(m||S.current)return;let e={x:b.current.x,y:b.current.y+1};if(N(e,k.current)){A();return}f(e)},[m,N,A]),_=(0,n.useCallback)(()=>{if(S.current)return;let e=k.current[0].map((e,r)=>k.current.map(e=>e[e.length-1-r]));for(let r of[{x:0,y:0},{x:-1,y:0},{x:1,y:0},{x:-2,y:0},{x:2,y:0}]){let t={x:b.current.x+r.x,y:b.current.y+r.y};if(!N(t,e)){f(t),s(e);return}}},[N]),D=(0,n.useCallback)(()=>{if(S.current)return;let e=b.current.y;for(;e<20&&!N({x:b.current.x,y:e+1},k.current);)e++;f({x:b.current.x,y:e}),setTimeout(()=>A(),0)},[N,A]),I=(0,n.useCallback)(()=>{r(Array.from({length:20},()=>Array(10).fill(null))),d(0),g(!1),v(!1),E()},[E]),H=(0,n.useCallback)(e=>{if("r"===e.key.toLowerCase()&&e.ctrlKey){e.preventDefault(),I();return}if(!m&&!S.current)switch(e.key){case"ArrowLeft":{let e={x:b.current.x-1,y:b.current.y};N(e,k.current)||f(e);break}case"ArrowRight":{let e={x:b.current.x+1,y:b.current.y};N(e,k.current)||f(e);break}case"ArrowDown":M();break;case"ArrowUp":_();break;case" ":e.preventDefault(),D()}},[m,N,M,_,D,I]);return(0,n.useEffect)(()=>{E()},[E]),(0,n.useEffect)(()=>{if(m)return;let e=setInterval(M,j());return()=>clearInterval(e)},[M,m,j]),(0,n.useEffect)(()=>(window.addEventListener("keydown",H),()=>window.removeEventListener("keydown",H)),[H]),(0,l.jsxs)("div",{className:"min-h-screen bg-gray-900 flex flex-col items-center justify-center p-4",children:[(0,l.jsxs)("div",{className:"mb-4 space-y-2 text-center",children:[(0,l.jsxs)("div",{className:"text-2xl font-bold text-white",children:["Score: ",x]}),(0,l.jsxs)("div",{className:"text-xl font-bold text-yellow-500",children:["High Score: ",h]}),(0,l.jsxs)("div",{className:"text-sm text-gray-400",children:["Speed: ",Math.round(1e3/j()),"x"]})]}),(0,l.jsx)("div",{className:"bg-gray-800 p-2 rounded-lg shadow-lg",children:(0,l.jsx)("div",{className:"grid gap-px bg-gray-700",style:{gridTemplateRows:"repeat(".concat(20,", minmax(0, 1fr))"),gridTemplateColumns:"repeat(".concat(10,", minmax(0, 1fr))"),width:"".concat(240,"px"),height:"".concat(480,"px")},children:e.map((e,r)=>e.map((e,n)=>{var a,c;let s=r>=u.y&&r<u.y+t.length&&n>=u.x&&n<u.x+(null===(a=t[0])||void 0===a?void 0:a.length)&&(null===(c=t[r-u.y])||void 0===c?void 0:c[n-u.x]);return(0,l.jsx)("div",{className:"transition-colors duration-100",style:{backgroundColor:s?i:e||"#1F2937"}},"".concat(r,"-").concat(n))}))})}),m&&(0,l.jsx)("div",{className:"mt-4 text-xl font-bold text-red-500",children:"Game Over! Press Ctrl+R to play again."}),(0,l.jsxs)("div",{className:"mt-4 text-white text-center",children:[(0,l.jsx)("p",{children:"Controls:"}),(0,l.jsx)("p",{children:"← → : Move"}),(0,l.jsx)("p",{children:"↑ : Rotate"}),(0,l.jsx)("p",{children:"↓ : Soft Drop"}),(0,l.jsx)("p",{children:"Space : Hard Drop"}),(0,l.jsx)("p",{children:"Ctrl+R : Restart"})]})]})}}},e=>{var r=r=>e(e.s=r);e.O(0,[191,6035,7358],()=>r(86373)),_N_E=e.O()}]);
|
||||
Reference in New Issue
Block a user