包含SDL_Rect的结构的2D数组的SDL_BlitSurface参数指针

时间:2014-03-07 14:49:27

标签: c pointers sdl multidimensional-array

我正处于游戏开始阶段,我陷入了Blit_Surface步骤。我的CodeBlocks编译器在编译时说->(有BrickStruct)“的无效类型参数。看起来它想要一个指向我的2D数组的指针,但我记得2D数组是指向第一个数组的第一个成员,其中每个成员是指向第二个数组的第一个成员的指针?在这种情况下,它看起来不需要参数中的指针,不是吗?我找不到哪里类型问题是。

void Display(BrickStruct Bricks[12][10],SDL_Surface *ecran)
{
    int i=0,j=0;

    for(j=0;j<10;j++)
    {
        if( (j+1)%2==0 )  // If we are on even lines, display only 11 bricks
        {
            for(i=0;i<11;i++)
            {
                Bricks[i][j].Brick_Surface = IMG_Load("BrickTest1.png");
                SDL_BlitSurface(Bricks[i][j].Brick_Surface, NULL, ecran, Bricks[i][j]->Brick_Coordinates);
            }
        }
        else   // If we are on odd lines, display the 12 bricks
        {
            for(i=0;i<12;i++)
            {

            }
        }
    }
}

我的结构看起来像这样:

typedef struct BrickStruct
{
    int type;
    SDL_Rect Brick_Coordinates;   
    SDL_Surface *Brick_Surface;  
}BrickStruct;

在我的主要内容中,我的代码是这样的:

SDL_Surface *ecran = NULL; 

BrickStruct Bricks[12][10];  // I create my 2D array of struct named Bricks

Display(Bricks,&ecran);

请有人能够表示我的问题在哪里? 提前致谢

1 个答案:

答案 0 :(得分:2)

编译器当然是对的。

SDL_BlitSurface(Bricks[i][j].Brick_Surface, NULL, ecran, &Bricks[i][j].Brick_Coordinates);

但每次抽奖重新加载图像120次?真?更糟糕的是,不要摧毁它。