HarmonyOS应用开发实战:猫猫大作战-二维数组的创建、填充和操作
·


前言
在「猫猫大作战」中,棋盘是一个 5×8 的二维网格,使用二维数组 (Cat | null)[][] 表示。理解二维数组的初始化和管理,是构建棋盘类游戏的基础。
本文以 GameEngine.initializeBoard() 为锚点,讲解二维数组的创建、填充和操作。
提示:本系列不讲 ArkTS 基础语法与环境搭建,假设你已跟完第 1–111 篇。本篇是阶段四第 112 篇。
一、棋盘数据结构
1.1 初始化棋盘
private initializeBoard() {
this.board = Array(GameConfig.BOARD_HEIGHT)
.fill(null)
.map(() => Array(GameConfig.BOARD_WIDTH).fill(null));
}
1.2 结构说明
5 列(x: 0-4)
┌────┬────┬────┬────┬────┐
│ 0,0│ 1,0│ 2,0│ 3,0│ 4,0│ ← row 0(顶部)
├────┼────┼────┼────┼────┤
│ 0,1│ 1,1│ 2,1│ 3,1│ 4,1│
├────┼────┼────┼────┼────┤
│... │ │ │ │ │
├────┼────┼────┼────┼────┤
│ 0,7│ 1,7│ 2,7│ 3,7│ 4,7│ ← row 7(底部)
└────┴────┴────┴────┴────┘
8 行(y: 0-7)
二、常见踩坑
// 🚫 错误:fill 引用同一数组
this.board = Array(8).fill(Array(5).fill(null));
// → 所有行引用同一个数组,改一行全改
// ✅ 正确:map 创建独立数组
this.board = Array(8).fill(null).map(() => Array(5).fill(null));
三、总结
二维数组使用 Array.fill + map 初始化,注意避免引用共享问题。
核心要点:
board[y][x]表示第 y 行第 x 列fill+map创建独立行的二维数组null表示空位
下一篇预告:第 113 篇将深入 Map 猫咪集合——id→Cat 的高效映射。
如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!
相关资源:
更多推荐


所有评论(0)