Доступ к элементу в двумерном массиве

Я пишу платформенную игру на с ++ и использую мозаичную карту для построения мира.

Карта содержит значения, которым назначены тайлы:

например, двумерного массива:

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-массивы.

Мой спрайт всегда остается в центре окна, и после нажатия клавиш мой мир движется за ним.

Я хочу столкнуться с определенными плитками, поэтому мне нужно взаимодействие между плиткой 2D-массива спрайта и массивом Map 2D …

Кроме того, как оно есть, я могу выйти из карты, потому что я не кодировал это иначе. Как бы я пошел по этому поводу ? В идеале я хочу помешать ему покинуть карту, тогда я смогу объединить столкновение с этим.

Ниже приведен скриншот того, как все выглядит (но с картой большего размера, чем показано выше):
реанимационный платформер

0

Решение

Если у меня есть:

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];
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]