用開發(fā)實(shí)戰(zhàn):貓貓大作戰(zhàn)-reset 游戲重置)
前言在「貓貓大作戰(zhàn)」中游戲重置在「重新開始」和「返回主菜單」時(shí)觸發(fā)。重置需要清理棋盤、歸零得分、停止定時(shí)器、恢復(fù)初始狀態(tài)。一個(gè)干凈的重置實(shí)現(xiàn)能避免狀態(tài)殘留導(dǎo)致的 Bug。一、引擎重置exportclassGameEngine{reset():void{this.boardArray.from({length:GameConfig.BOARD_HEIGHT},()Array(GameConfig.BOARD_WIDTH).fill(null));this.score0;this.combo{count:0,multiplier:1,lastMergeTime:0};this.pendingMerges[];this.nextCatLevelCatLevel.SMALL;}}二、頁面重置restartGame(){// 1. 清理定時(shí)器this.clearTimers();// 2. 重置引擎this.gameEngine.reset();// 3. 重置 UI 狀態(tài)this.score0;this.combo{count:0,multiplier:1,lastMergeTime:0};this.cats[];this.gameTime0;this.isNewHighfalse;this.overlayOpacity0;// 4. 切換到游戲狀態(tài)this.gameStateGameState.PLAYING;// 5. 啟動(dòng)定時(shí)器this.startTimers();}backToMenu(){this.clearTimers();this.gameEngine.reset();this.gameStateGameState.IDLE;}三、重置檢查清單項(xiàng)操作驗(yàn)證棋盤全部填 null全空得分歸零score 0連擊重置count0, multiplier1定時(shí)器清除全部無殘留 setInterval貓咪列表清空cats.length 0游戲時(shí)間歸零gameTime 0四、防止雙重重置privateisResetting:booleanfalse;restartGame(){if(this.isResetting)return;// 防止重復(fù)點(diǎn)擊this.isResettingtrue;// ... 重置邏輯this.isResettingfalse;}五、最佳實(shí)踐引擎和 UI 分別重置引擎只重置數(shù)據(jù)UI 層額外清理狀態(tài)定時(shí)器清理優(yōu)先重置前先清理定時(shí)器防止重置過程中觸發(fā)回調(diào)防止重復(fù)重置用標(biāo)志位控制重置后驗(yàn)證可選調(diào)用isGameOver()驗(yàn)證已恢復(fù)總結(jié)游戲重置需要清理棋盤、歸零得分、停止定時(shí)器。核心要點(diǎn)reset()引擎重置、restartGame()完整重置流程、 定時(shí)器清理防殘留、 標(biāo)志位防重復(fù)。如果這篇文章對(duì)你有幫助歡迎點(diǎn)贊、收藏?、關(guān)注你的支持是我持續(xù)創(chuàng)作的動(dòng)力相關(guān)資源GameEngine 源碼第 132 篇game-over第 134 篇preferences第 135 篇rdb