You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

游戏开发:三维数组(tridimensional arrays)初始化方法求助

三维数组[3][3][2]的正确初始化方法

首先要注意:多数游戏开发常用编程语言(比如C/C++、JavaScript)的数组索引是0-based(从0开始),你原来的代码里用[1][1]、[3][3]这类索引,对于[3][3][2]的数组来说会触发越界——这个数组的有效索引范围是房间0-2、区域0-2、坐标0(x)/1(y)。

你之前尝试的写法错误在于多嵌套了一层大括号,且结构混乱,下面是对应你需求的正确初始化方式,以C/C++为例(其他语言语法逻辑类似,仅声明细节略有差异):

// 声明并初始化三维数组,结构对应:[房间][区域][x/y]
int zonasDeInteraccion[3][3][2] = {
    // 第1个房间(对应你原代码的房间1)
    {
        {10, 5},   // 区域1:x=10, y=5
        {20, 5},   // 区域2:x=20, y=5
        {30, 5}    // 区域3:x=30, y=5
    },
    // 第2个房间(对应你原代码的房间2)
    {
        {30, 7},   // 区域1:x=30, y=7
        {4, 23},   // 区域2:x=4, y=23
        {45, 5}    // 区域3:x=45, y=5
    },
    // 第3个房间(对应你原代码的房间3)
    {
        {35, 0},   // 区域1:x=35, y=0
        {1, 11},   // 区域2:x=1, y=11
        {4, 44}    // 区域3:x=4, y=44
    }
};

写法说明:

  • 最外层大括号包含3个元素,对应3个房间
  • 每个房间的大括号包含3个元素,对应该房间的3个区域
  • 每个区域的大括号包含2个元素,对应x和y坐标
  • 这种结构和你逐个赋值的数据完全匹配,可读性和维护性更强

如果业务逻辑里必须用1-based索引(比如用1、2、3标识房间/区域),可以声明一个更大的数组(比如[4][4][2]),把索引0的位置留空不用,示例如下:

int zonasDeInteraccion[4][4][2] = {
    {}, // 索引0的房间留空
    {
        {}, // 索引0的区域留空
        {10, 5}, {20, 5}, {30, 5}
    },
    {
        {},
        {30, 7}, {4, 23}, {45, 5}
    },
    {
        {},
        {35, 0}, {1, 11}, {4, 44}
    }
};

不过更推荐用0-based索引,这是多数编程语言的标准习惯,能有效避免数组越界风险。

内容的提问来源于stack exchange,提问作者JaviMar113

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 02:22:48