Как ссылаться на 2-й массив в структуре для использования функции - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь запрограммировать игровой клон, используя ЖК-экран платы разработки микроконтроллера.Я решил использовать мозаичный подход, поскольку утилиты ЖК-дисплея позволяют мне размещать отдельные пиксели.Мои плитки определены как двумерные массивы в отдельном заголовочном файле.Каждая запись в массиве представляет цвет этого пикселя с этим индексом [y] [x].

#define TILE_SIZE 4 \\ px

unsigned short TILE[TILE_SIZE][TILE_SIZE] = {
    { Green, Green, Green, Green },
    { Green, Green, Green, Green },
    { Green, Green, Green, Green },
    { Green, Green, Green, Green } 
};

В моем основном файле я определил структуру тайла следующим образом:

struct Tile {
    unsigned short width; // width of tile
    unsigned short height; // height of tile
    unsigned short pixels[][TILE_SIZE];
    unsigned short x; // x-coordinate to begin drawing
    unsigned short y; // y-coordinate to begin drawing
};

Я не совсем уверен, как сохранить данные из массива TILE в массив пикселов [] [] структуры sprite.Я полагаю, что по ссылке лучше избегать чрезмерного использования памяти, но я считаю, что вы не можете передавать 2d массивы по ссылке.Структура тайла передается функции render_sprite позже в коде, который проходит по массиву и отображает каждый пиксель.Мне бы хотелось, чтобы эта render_sprite функция была универсальной, поэтому я стараюсь избегать render_sprite(unsigned short pixels[][4])

. Любая помощь будет принята.

1 Ответ

0 голосов
/ 15 апреля 2019

Вы можете просто передать указатель на вашу Tile структуру, например render_sprite(Tile* tile). Структура имеет всю необходимую информацию (ширину и высоту), чтобы полностью описать размер основного пиксельного массива.

...