我正在用 C++ 编写平台游戏并使用平铺 map 构建世界。
map 包含分配给图 block 的值:
例如二维数组:
int map[4][4]={
{1, 1, 1, 1},
{1, 0, 0, 1},
{1, 0, 0, 1},
{1, 1, 1, 1}, };
我以类似的方式创建 Sprite :int sprite[1][1]={ {2} };
我的问题是,如何访问二维数组中的特定图 block 或元素?
我读了这个post(3rd post down)并想知道二维数组是否不是最好用的。
我的 sprite 始终保持在窗口的中心,按键时我的世界移动到他身后。
我想与某些图 block 发生碰撞,因此我的 sprite 二维数组图 block 和我的 Map 二维数组之间需要一些交互...
就目前而言,我可以走出 map ,因为我还没有对它进行其他编码。我将如何处理这个?理想情况下,我想阻止他离开 map ,然后我可以将碰撞与之整合。
下面是截图(但 map 比上面显示的要大):
最佳答案
如果我有:
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];
关于c++ - 访问二维数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15689370/