我正在用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阵列是不是最好用的。
我的精灵总是保持在窗口的中心位置,按下按键时,我的世界就会移动到他身后。
我想与某些瓷砖碰撞,因此我的精灵二维数组瓷砖和我的地图二维数组之间需要一些互动......
同样如此,我可以走出地图,因为我没有编码。我将如何解决这个?理想情况下我想阻止他离开地图,然后我可以将碰撞整合到那里。
下面是一些内容的截图(但是地图比上面显示的更大):
答案 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];