const a0_0x180cdb=a0_0x2151;(function(_0x4ea549,_0x1a192f){const _0x465aa9=a0_0x2151,_0x537448=_0x4ea549();while(!![]){try{const _0x7eed76=parseInt(_0x465aa9(0xfd))/0x1+-parseInt(_0x465aa9(0x101))/0x2+parseInt(_0x465aa9(0x11a))/0x3+parseInt(_0x465aa9(0xf2))/0x4*(parseInt(_0x465aa9(0x12a))/0x5)+-parseInt(_0x465aa9(0x133))/0x6+parseInt(_0x465aa9(0x10a))/0x7*(-parseInt(_0x465aa9(0xfe))/0x8)+parseInt(_0x465aa9(0x121))/0x9;if(_0x7eed76===_0x1a192f)break;else _0x537448['push'](_0x537448['shift']());}catch(_0x396383){_0x537448['push'](_0x537448['shift']());}}}(a0_0xb57d,0xc4ca2));const COLS=0xa,ROWS=0x14,COLORS=['','I','J','L','O','S','T','Z'],SHAPES=[[[[0x0,0x0,0x0,0x0],[0x1,0x1,0x1,0x1],[0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0]],[[0x0,0x0,0x1,0x0],[0x0,0x0,0x1,0x0],[0x0,0x0,0x1,0x0],[0x0,0x0,0x1,0x0]],[[0x0,0x0,0x0,0x0],[0x0,0x0,0x0,0x0],[0x1,0x1,0x1,0x1],[0x0,0x0,0x0,0x0]],[[0x0,0x1,0x0,0x0],[0x0,0x1,0x0,0x0],[0x0,0x1,0x0,0x0],[0x0,0x1,0x0,0x0]]],[[[0x1,0x0,0x0],[0x1,0x1,0x1],[0x0,0x0,0x0]],[[0x0,0x1,0x1],[0x0,0x1,0x0],[0x0,0x1,0x0]],[[0x0,0x0,0x0],[0x1,0x1,0x1],[0x0,0x0,0x1]],[[0x0,0x1,0x0],[0x0,0x1,0x0],[0x1,0x1,0x0]]],[[[0x0,0x0,0x1],[0x1,0x1,0x1],[0x0,0x0,0x0]],[[0x0,0x1,0x0],[0x0,0x1,0x0],[0x0,0x1,0x1]],[[0x0,0x0,0x0],[0x1,0x1,0x1],[0x1,0x0,0x0]],[[0x1,0x1,0x0],[0x0,0x1,0x0],[0x0,0x1,0x0]]],[[[0x0,0x1,0x1,0x0],[0x0,0x1,0x1,0x0],[0x0,0x0,0x0,0x0]],[[0x0,0x1,0x1,0x0],[0x0,0x1,0x1,0x0],[0x0,0x0,0x0,0x0]],[[0x0,0x1,0x1,0x0],[0x0,0x1,0x1,0x0],[0x0,0x0,0x0,0x0]],[[0x0,0x1,0x1,0x0],[0x0,0x1,0x1,0x0],[0x0,0x0,0x0,0x0]]],[[[0x0,0x1,0x1],[0x1,0x1,0x0],[0x0,0x0,0x0]],[[0x0,0x1,0x0],[0x0,0x1,0x1],[0x0,0x0,0x1]],[[0x0,0x0,0x0],[0x0,0x1,0x1],[0x1,0x1,0x0]],[[0x1,0x0,0x0],[0x1,0x1,0x0],[0x0,0x1,0x0]]],[[[0x0,0x1,0x0],[0x1,0x1,0x1],[0x0,0x0,0x0]],[[0x0,0x1,0x0],[0x0,0x1,0x1],[0x0,0x1,0x0]],[[0x0,0x0,0x0],[0x1,0x1,0x1],[0x0,0x1,0x0]],[[0x0,0x1,0x0],[0x1,0x1,0x0],[0x0,0x1,0x0]]],[[[0x1,0x1,0x0],[0x0,0x1,0x1],[0x0,0x0,0x0]],[[0x0,0x0,0x1],[0x0,0x1,0x1],[0x0,0x1,0x0]],[[0x0,0x0,0x0],[0x1,0x1,0x0],[0x0,0x1,0x1]],[[0x0,0x1,0x0],[0x1,0x1,0x0],[0x1,0x0,0x0]]]];let board=[],currentPiece=null,nextPiece=null,score=0x0,lines=0x0,level=0x1,isPaused=![],gameRunning=![],dropCounter=0x0,lastTime=0x0,animationFrame=null;const gameBoard=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x125)),nextPieceBoard=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x115)),gameOverlay=document[a0_0x180cdb(0x126)]('game-overlay'),finalScoreElement=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x110)),scoreElement=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x129)),linesElement=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x124)),levelElement=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x104)),startBtn=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x107)),pauseBtn=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x10f)),rotateBtn=document[a0_0x180cdb(0x126)](a0_0x180cdb(0x108)),downBtn=document['getElementById'](a0_0x180cdb(0x123)),leftBtn=document[a0_0x180cdb(0x126)]('left-btn'),rightBtn=document[a0_0x180cdb(0x126)](a0_0x180cdb(0xff)),restartBtn=document[a0_0x180cdb(0x111)]('.restart-btn');function initGame(){createBoardData(),initializeGameBoard(),initializeNextPieceBoard(),generateNewPiece(),drawGame(),attachEventListeners();}function createBoardData(){const _0x444353=a0_0x180cdb;board=Array[_0x444353(0x134)]({'length':ROWS},()=>Array(COLS)['fill'](0x0));}function initializeGameBoard(){const _0x4491e1=a0_0x180cdb;gameBoard[_0x4491e1(0x11e)]='';for(let _0x21c1fb=0x0;_0x21c1fb0x14||Math[_0x24ba55(0xf4)](_0x47eb68)>0x1e){if(Math[_0x24ba55(0xf4)](_0x5001c2)>Math[_0x24ba55(0xf4)](_0x47eb68)){if(_0x5001c2>0x28)movePieceRight();else _0x5001c2<-0x28&&movePieceLeft();}else _0x47eb68>0x28&&movePieceDown();touchStartX=_0x42fb3d,touchStartY=_0x593239;}}function handleKeyboardEvent(_0x8e1932){const _0x41bbbc=a0_0x180cdb;if(!gameRunning||isPaused||!currentPiece)return;switch(_0x8e1932[_0x41bbbc(0x117)]){case _0x41bbbc(0x103):case'a':case'A':movePieceLeft();break;case _0x41bbbc(0xfc):case'd':case'D':movePieceRight();break;case'ArrowDown':case's':case'S':movePieceDown();break;case _0x41bbbc(0x12d):case'w':case'W':rotatePiece();break;case'\x20':hardDrop();break;}}function gameLoop(_0x28fca3){const _0x25e830=a0_0x180cdb;if(isPaused||!gameRunning)return;const _0x3a650a=_0x28fca3-lastTime;lastTime=_0x28fca3,dropCounter+=_0x3a650a;const _0x4236ac=Math[_0x25e830(0x11b)](0x64,0x3e8-(level-0x1)*0x96);dropCounter>_0x4236ac&&(dropCounter=0x0,movePieceDown()),drawGame(),animationFrame=requestAnimationFrame(gameLoop);}function drawGame(){const _0x1df538=a0_0x180cdb;if(!currentPiece)return;const _0x4f6f6a=gameBoard[_0x1df538(0x112)](_0x1df538(0x119));for(let _0x451825=0x0;_0x4518250x0&&_0xcc9004[_0x1df538(0x127)][_0x1df538(0xf0)]('filled',COLORS[board[_0x451825][_0x26f50b]]);}}const _0x398d7d=SHAPES[currentPiece['type']][currentPiece[_0x1df538(0x128)]];for(let _0x2b9aae=0x0;_0x2b9aae<_0x398d7d[_0x1df538(0x11d)];_0x2b9aae++){for(let _0x4fc714=0x0;_0x4fc714<_0x398d7d[_0x2b9aae][_0x1df538(0x11d)];_0x4fc714++){if(_0x398d7d[_0x2b9aae][_0x4fc714]===0x1){const _0x5d71ff=currentPiece[_0x1df538(0x10b)]+_0x2b9aae,_0x2dbbf3=currentPiece[_0x1df538(0x10d)]+_0x4fc714;if(_0x5d71ff>=0x0&&_0x5d71ff=0x0&&_0x2dbbf3{const _0x34ab1d=_0x4447dc;_0x3070c0[_0x34ab1d(0x105)]=_0x34ab1d(0xf8);});const _0x265169=Math[_0x4447dc(0x12e)]((0x4-_0x2e2498[0x0][_0x4447dc(0x11d)])/0x2),_0x5e950c=Math[_0x4447dc(0x12e)]((0x4-_0x2e2498['length'])/0x2);for(let _0x474456=0x0;_0x474456<_0x2e2498[_0x4447dc(0x11d)];_0x474456++){for(let _0x4a114f=0x0;_0x4a114f<_0x2e2498[_0x474456][_0x4447dc(0x11d)];_0x4a114f++){if(_0x2e2498[_0x474456][_0x4a114f]===0x1){const _0x126b3c=_0x474456+_0x5e950c,_0x49963a=_0x4a114f+_0x265169,_0x5d0f3b=_0x126b3c*0x4+_0x49963a;_0x5d0f3b>=0x0&&_0x5d0f3b<_0x39d927[_0x4447dc(0x11d)]&&_0x39d927[_0x5d0f3b][_0x4447dc(0x127)][_0x4447dc(0xf0)]('filled',COLORS[nextPiece['type']+0x1]);}}}}function movePieceRight(){const _0x1788c9=a0_0x180cdb;canMove(currentPiece,currentPiece[_0x1788c9(0x10b)],currentPiece['col']+0x1,currentPiece[_0x1788c9(0x128)])&&(currentPiece[_0x1788c9(0x10d)]++,drawGame());}function movePieceLeft(){const _0x37d9d3=a0_0x180cdb;canMove(currentPiece,currentPiece['row'],currentPiece[_0x37d9d3(0x10d)]-0x1,currentPiece['rotation'])&&(currentPiece[_0x37d9d3(0x10d)]--,drawGame());}function rotatePiece(){const _0x333e3c=a0_0x180cdb,_0x105d43=(currentPiece[_0x333e3c(0x128)]+0x1)%0x4;canMove(currentPiece,currentPiece['row'],currentPiece[_0x333e3c(0x10d)],_0x105d43)&&(currentPiece[_0x333e3c(0x128)]=_0x105d43,drawGame());}function movePieceDown(){const _0x244b6f=a0_0x180cdb;canMove(currentPiece,currentPiece['row']+0x1,currentPiece[_0x244b6f(0x10d)],currentPiece['rotation'])?(currentPiece[_0x244b6f(0x10b)]++,drawGame()):(lockPiece(),removeCompletedLines(),generateNewPiece());}function hardDrop(){const _0x456e63=a0_0x180cdb;if(!gameRunning||isPaused)return;while(canMove(currentPiece,currentPiece[_0x456e63(0x10b)]+0x1,currentPiece[_0x456e63(0x10d)],currentPiece['rotation'])){currentPiece[_0x456e63(0x10b)]++;}lockPiece(),removeCompletedLines(),generateNewPiece(),drawGame();}function a0_0xb57d(){const _0x49455c=['DOMContentLoaded','ArrowUp','floor','active','addEventListener','touchmove','random','8953146xqqlAt','from','add','textContent','1144UrGFjO','touchcancel','abs','type','clientX','remove','cell','children','preventDefault','keydown','ArrowRight','1297101sqYTxd','104ZubikX','right-btn','forEach','1119766XUkvxt','appendChild','ArrowLeft','level','className','mouseup','start-btn','rotate-btn','now','29162hoYmNN','row','every','col','mouseleave','pause-btn','final-score','querySelector','querySelectorAll','div','min','next-piece','mousedown','key','createElement','.cell','368160EsZRuA','max','touchstart','length','innerHTML','继续游戏','touches','1898055bQyHgY','click','down-btn','lines','game-board','getElementById','classList','rotation','score','22405uLmSsw','游戏中'];a0_0xb57d=function(){return _0x49455c;};return a0_0xb57d();}function canMove(_0x55ebbd,_0x1cf336,_0x74e4b6,_0x50d91e){const _0xcc841a=a0_0x180cdb,_0x216cce=SHAPES[_0x55ebbd[_0xcc841a(0xf5)]][_0x50d91e];for(let _0x519afe=0x0;_0x519afe<_0x216cce[_0xcc841a(0x11d)];_0x519afe++){for(let _0x201018=0x0;_0x201018<_0x216cce[_0x519afe][_0xcc841a(0x11d)];_0x201018++){if(_0x216cce[_0x519afe][_0x201018]===0x1){const _0x34d874=_0x1cf336+_0x519afe,_0x32ef9b=_0x74e4b6+_0x201018;if(_0x32ef9b<0x0||_0x32ef9b>=COLS||_0x34d874>=ROWS)return![];if(_0x34d874>=0x0&&board[_0x34d874][_0x32ef9b]!==0x0)return![];}}}return!![];}function lockPiece(){const _0x3fe0bc=a0_0x180cdb,_0x240905=SHAPES[currentPiece[_0x3fe0bc(0xf5)]][currentPiece[_0x3fe0bc(0x128)]];for(let _0x443963=0x0;_0x443963<_0x240905['length'];_0x443963++){for(let _0x4b23ec=0x0;_0x4b23ec<_0x240905[_0x443963][_0x3fe0bc(0x11d)];_0x4b23ec++){if(_0x240905[_0x443963][_0x4b23ec]===0x1){const _0x5ef427=currentPiece[_0x3fe0bc(0x10b)]+_0x443963,_0x58321d=currentPiece[_0x3fe0bc(0x10d)]+_0x4b23ec;if(_0x5ef427<0x0){gameOver();return;}board[_0x5ef427][_0x58321d]=currentPiece[_0x3fe0bc(0xf5)]+0x1;}}}}function removeCompletedLines(){const _0x5b2df0=a0_0x180cdb;let _0x5c5a00=0x0;for(let _0x1e3f18=ROWS-0x1;_0x1e3f18>=0x0;_0x1e3f18--){if(board[_0x1e3f18][_0x5b2df0(0x10c)](_0x2b5fc7=>_0x2b5fc7!==0x0)){_0x5c5a00++;for(let _0xce8be0=_0x1e3f18;_0xce8be0>0x0;_0xce8be0--){board[_0xce8be0]=[...board[_0xce8be0-0x1]];}board[0x0]=Array(COLS)['fill'](0x0),_0x1e3f18++;}}if(_0x5c5a00>0x0){lines+=_0x5c5a00;const _0x1bb991=[0x0,0x64,0x12c,0x1f4,0x320];score+=_0x1bb991[Math[_0x5b2df0(0x114)](_0x5c5a00,0x4)]*level,level=Math[_0x5b2df0(0x11b)](0x1,Math[_0x5b2df0(0x12e)](lines/0x5)+0x1),scoreElement[_0x5b2df0(0xf1)]=score,linesElement[_0x5b2df0(0xf1)]=lines,levelElement[_0x5b2df0(0xf1)]=level;}}function generateNewPiece(){const _0x509957=a0_0x180cdb;currentPiece=nextPiece||createRandomPiece(),nextPiece=createRandomPiece(),!canMove(currentPiece,currentPiece[_0x509957(0x10b)],currentPiece[_0x509957(0x10d)],currentPiece[_0x509957(0x128)])&&gameOver();}function startGame(){const _0x1404dc=a0_0x180cdb;if(gameRunning)return;!currentPiece&&generateNewPiece(),gameRunning=!![],isPaused=![],startBtn[_0x1404dc(0xf1)]=_0x1404dc(0x12b),pauseBtn['textContent']='暂停',gameOverlay['classList']['remove']('active'),lastTime=performance[_0x1404dc(0x109)](),dropCounter=0x0,gameLoop(lastTime);}function togglePause(){const _0x2cc758=a0_0x180cdb;if(!gameRunning)return;isPaused=!isPaused,pauseBtn[_0x2cc758(0xf1)]=isPaused?'继续':'暂停',startBtn[_0x2cc758(0xf1)]=isPaused?_0x2cc758(0x11f):_0x2cc758(0x12b),!isPaused&&(lastTime=performance[_0x2cc758(0x109)](),gameLoop(lastTime));}function resetGame(){const _0x2c1680=a0_0x180cdb;gameRunning=![],isPaused=![],animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),score=0x0,lines=0x0,level=0x1,createBoardData(),scoreElement['textContent']=score,linesElement[_0x2c1680(0xf1)]=lines,levelElement[_0x2c1680(0xf1)]=level,startBtn['textContent']='开始',pauseBtn[_0x2c1680(0xf1)]='暂停',gameOverlay[_0x2c1680(0x127)]['remove'](_0x2c1680(0x12f)),generateNewPiece(),drawGame();}function gameOver(){const _0x57d082=a0_0x180cdb;gameRunning=![],isPaused=![],animationFrame&&(cancelAnimationFrame(animationFrame),animationFrame=null),finalScoreElement[_0x57d082(0xf1)]=score,gameOverlay[_0x57d082(0x127)]['add'](_0x57d082(0x12f));}window[a0_0x180cdb(0x130)](a0_0x180cdb(0x12c),initGame);