HarmonyOS应用开发实战:猫猫大作战-棋盘状态的增删管理

发布时间:2026/7/28 1:40:44
HarmonyOS应用开发实战:猫猫大作战-棋盘状态的增删管理 前言在「猫猫大作战」中放置和移除是棋盘管理的基础操作——猫咪下落到底部时放置到棋盘格子上合并时移除被合并的猫咪。这两个方法维护board[][]和Map的一致性。本文以GameEngine.placeCatOnBoard()和removeCat()为锚点讲解棋盘状态的增删管理。提示本系列不讲 ArkTS 基础语法与环境搭建假设你已跟完第 1–130 篇。本篇是阶段四第 131 篇。一、放置与移除1.1 放置猫咪private placeCatOnBoard(cat: Cat) { if (cat.y 0 cat.y GameConfig.BOARD_HEIGHT cat.x 0 cat.x GameConfig.BOARD_WIDTH) { this.board[cat.y][cat.x] cat; } }1.2 移除猫咪private removeCat(cat: Cat) { this.cats.delete(cat.id); if (cat.y 0 cat.y GameConfig.BOARD_HEIGHT cat.x 0 cat.x GameConfig.BOARD_WIDTH this.board[cat.y][cat.x]?.id cat.id) { this.board[cat.y][cat.x] null; } }二、双重维护操作board[][]Map放置board[y][x] cat已在 Map 中dropCat 时已 add移除board[y][x] nullcats.delete(cat.id)查询board[y][x]碰撞检测cats.get(id)按 ID 查找三、总结棋盘使用 board 和 Map 双重数据结构board 用于位置查询Map 用于 ID 查找。核心要点placeCatOnBoard将猫咪写入棋盘格子removeCat同时清空 board 和 Mapboard[y][x]?.id cat.id防止误删下一篇预告第 132 篇将深入游戏结束判定——GAME_OVER_ROW 检测。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源GameEngine 完整源码开源鸿蒙跨平台社区第 130 篇循环合并链第 132 篇游戏结束判定