访问2D数组中的元素

时间:2013-03-28 18:21:12

标签: c++ multidimensional-array tile

我正在用c ++编写平台游戏并使用平铺地图来构建世界。

地图包含分配了切片的值:

例如2D阵列:

int map[4][4]={
    {1, 1, 1, 1},
    {1, 0, 0, 1},
    {1, 0, 0, 1},
    {1, 1, 1, 1}, };

我以类似的方式创建一个精灵:int sprite[1][1]={ {2} };

我的问题是,您如何访问2D阵列中的特定图块或元素

我读了这个post(3rd post down)并想知道2D阵列是不是最好用的。

我的精灵总是保持在窗口的中心位置,按下按键时,我的世界就会移动到他身后。

我想与某些瓷砖碰撞,因此我的精灵二维数组瓷砖和我的地图二维数组之间需要一些互动......

同样如此,我可以走出地图,因为我没有编码。我将如何解决这个理想情况下我想阻止他离开地图,然后我可以将碰撞整合到那里。

下面是一些内容的截图(但是地图比上面显示的更大): reanimation platformer

1 个答案:

答案 0 :(得分:1)

如果我有:

int array[4][4];

我可以通过以下方式访问元素:

array[a_num][also_a_num]

其中i和j是有效索引。

通常当我想要这样的东西时,我只使用1d数组和一些数学。

int height = a_num;
int width = also_a_num;
int amap[height * width];
int x_pos,y_pos;
int value = amap[y_pos*width + x_pos];

您可以非常轻松地检查x_pos和y_pos上的边界。

关于碰撞,你可以尝试一组结构。

struct tile{
  bool walkable;
  int type;
};

tile amap[height*width];