HarmonyOS应用开发实战:猫猫大作战-mapCats 猫咪映射管理
前言在「猫猫大作战」的 GameEngine 中猫咪同时存储在**二维数组棋盘和一维数组列表**中。棋盘用于位置查询和碰撞检测列表用于遍历渲染。一、猫咪的两种存储export class GameEngine { // 棋盘 — 用于位置查询 O(1) private board: (Cat | null)[][]; // 列表 — 用于遍历渲染 private cats: Cat[]; // 同步操作 addCat(cat: Cat): void { this.board[cat.y][cat.x] cat; this.cats.push(cat); } removeCat(x: number, y: number): void { this.board[y][x] null; this.cats this.cats.filter(c !(c.x x c.y y)); } }二、两种存储的对比存储方式查询速度遍历速度用途二维数组 boardO(1)O(rows×cols)碰撞检测一维数组 catsO(n)O(n)UI 渲染三、同步更新// 更新猫咪位置时同时更新两种存储 updateCatPosition(cat: Cat, newX: number, newY: number): void { // 清除旧位置 this.board[cat.y][cat.x] null; // 更新坐标 cat.x newX; cat.y newY; // 设置新位置 this.board[newY][newX] cat; } // 重置时清空两者 reset(): void { this.board Array.from( { length: GameConfig.BOARD_HEIGHT }, () Array(GameConfig.BOARD_WIDTH).fill(null) ); this.cats []; }四、最佳实践棋盘用于逻辑碰撞检测、合并查找用 board列表用于渲染ForEach 遍历 cats 渲染 UI同步更新board 和 cats 同时修改board 是主数据源cats 基于 board 生成总结猫咪在 GameEngine 中同时使用二维数组棋盘和一维数组列表存储。核心要点board O(1) 位置查询、 cats 遍历渲染、 同步更新保持一致。如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源GameEngine 源码第 112 篇board-array第 114 篇enum-level第 115 篇record-config

相关新闻

最新新闻

日新闻

周新闻

月新闻