0

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

地图包含分配瓦片的值:

例如二维数组:

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 数组中的特定图块或元素

我读了这篇文章(第 3 篇文章),想知道二维数组是否不是最好用的。

我的精灵总是以窗口为中心,在按键时我的世界在他身后移动。

我想与某些图块发生碰撞,因此需要在我的精灵 2D 数组图块和我的 Map 2D 数组之间进行一些交互...

就目前而言,我可以走出地图,因为我没有以其他方式对其进行编码。我该怎么办?理想情况下,我想阻止他离开地图,然后我可以将碰撞与之整合。

下面是一些东西的截图(但地图比上面显示的要大): 复活平台游戏

4

1 回答 1

1

如果我有:

int array[4][4];

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

array[a_num][also_a_num]

其中 i 和 j 是有效索引。

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

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];
于 2013-03-28T20:06:51.960 回答