我正处于破砖游戏的开始阶段,但我陷入了困境SDL_Flip
。我的 CodeBlocks 编译器什么也没说,控制台也没有崩溃,但是 SDL 窗口关闭并且控制台进程返回了代码 3。当我运行调试器时,它说:
SDL_Flip()
Display(Bricks=0x28f69c, screen=0x0)
并且说显示类型错误位于我的行SDL_Flip(screen);
这是我的代码的一瞥。MyBrick_Coordinates
和Brick_Surface
struct 已经被之前的另一个函数初始化(我的坐标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
但当我只尝试一个图像(没有我的循环)时甚至不起作用。有人可以告诉我我的问题在哪里吗?提前致谢