Я нахожусь в начале игры типа разбивания кирпичей и застрял на шаге SDL_Flip
. Мой компилятор CodeBlocks ничего не говорит, и консоль не падает, но все же закрытие окна SDL и процесс консоли вернул код 3. Когда я запустил отладчик, он говорит:
SDL_Flip()
Display(Bricks=0x28f69c, screen=0x0)
и было сказано, что ошибка типа отображения находится в строке моего SDL_Flip(screen);
Вот проблеск моего кода. Мои структуры Brick_Coordinates
и Brick_Surface
уже инициализированы (мои координаты для Brick_Coordinates
и NULL для Brick_Surface
) другой функцией перед этой:
void Display(BrickStruct Bricks[12][10],SDL_Surface *screen)
{
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, screen, &Bricks[i][j].Brick_Coordinates);
SDL_Flip(screen);
}
}
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 *screen= NULL;
BrickStruct Bricks[12][10]; // I create my 2D array of struct named Bricks
Display(Bricks,screen);
Я уже проверил с помощью fprintf
инициализированные значения моих координат. Это хорошо. И судя по всему мой SDL_Blit
работает. Но Флип - нет. Поверхность моего экрана достаточно велика для всех моих изображений (480x540, а мои изображения 40x20). Мне было интересно, связана ли эта проблема с невозможностью для Blit
поместить изображение поверх другого, но Flip
даже не работает, когда я пытаюсь использовать только одно изображение (без моих циклов). Может ли кто-нибудь указать мне, где находится моя проблема? заранее спасибо