HarmonyOS应用开发实战:猫猫大作战-reset 游戏重置
2026/7/29 0:54:19 网站建设 项目流程

前言

在「猫猫大作战」中,游戏重置在「重新开始」和「返回主菜单」时触发。重置需要清理棋盘、归零得分、停止定时器、恢复初始状态。一个干净的重置实现能避免状态残留导致的 Bug。

一、引擎重置

exportclassGameEngine{reset():void{this.board=Array.from({length:GameConfig.BOARD_HEIGHT},()=>Array(GameConfig.BOARD_WIDTH).fill(null));this.score=0;this.combo={count:0,multiplier:1,lastMergeTime:0};this.pendingMerges=[];this.nextCatLevel=CatLevel.SMALL;}}

二、页面重置

restartGame(){// 1. 清理定时器this.clearTimers();// 2. 重置引擎this.gameEngine.reset();// 3. 重置 UI 状态this.score=0;this.combo={count:0,multiplier:1,lastMergeTime:0};this.cats=[];this.gameTime=0;this.isNewHigh=false;this.overlayOpacity=0;// 4. 切换到游戏状态this.gameState=GameState.PLAYING;// 5. 启动定时器this.startTimers();}backToMenu(){this.clearTimers();this.gameEngine.reset();this.gameState=GameState.IDLE;}

三、重置检查清单

操作验证
棋盘全部填 null全空
得分归零score === 0
连击重置count=0, multiplier=1
定时器清除全部无残留 setInterval
猫咪列表清空cats.length === 0
游戏时间归零gameTime === 0

四、防止双重重置

privateisResetting:boolean=false;restartGame(){if(this.isResetting)return;// 防止重复点击this.isResetting=true;// ... 重置逻辑this.isResetting=false;}

五、最佳实践

  1. 引擎和 UI 分别重置:引擎只重置数据,UI 层额外清理状态
  2. 定时器清理优先:重置前先清理定时器,防止重置过程中触发回调
  3. 防止重复重置:用标志位控制
  4. 重置后验证:可选调用isGameOver()验证已恢复

总结

游戏重置需要清理棋盘、归零得分、停止定时器。核心要点:reset()引擎重置、restartGame()完整重置流程、 定时器清理防残留、 标志位防重复

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

  • GameEngine 源码
  • 第 132 篇:game-over
  • 第 134 篇:preferences
  • 第 135 篇:rdb

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询