代码之家  ›  专栏  ›  技术社区  ›  Ryan Printup

如何在struct中引用二维数组以供函数使用

  •  0
  • Ryan Printup  · 技术社区  · 5 年前

    我正试图用一个微控制器开发板的液晶屏编程一个游戏克隆。我决定使用平铺的方法,因为LCD实用程序允许我放置单个像素。我有我的瓷砖定义为二维数组在一个单独的头文件。数组中的每个条目表示该索引处像素的颜色[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 } 
    };
    

    在我的主文件中,我定义了一个tile结构,如下所示

    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结构的pixels[][]数组中。我相信通过引用来避免过多的内存使用是最好的,但是我相信不能通过引用来传递2d数组。将tile结构传递给 render_sprite 函数,该函数在代码中循环遍历数组并显示每个像素。我想要这个 渲染精灵 render_sprite(unsigned short pixels[][4])

    0 回复  |  直到 5 年前
        1
  •  0
  •   mactro    5 年前

    只需将指针传递给 Tile 结构,比如 render_sprite(Tile* tile) . 这个结构包含了所有需要的信息(宽度和高度),以充分描述底层像素数组的大小。