我正在使用 Code::Blocks 和 SDL 库来创建一个简单的电脑游戏。我一直在关注一些教程,并创建了一个功能性的井字游戏。虽然该项目没有任何具体说明,但我创建了一个可以与其他游戏一起使用的模板。使用该模板,我创建了一个新项目,其中有一张 Yoshi 正在运行的图像。但是,在这个新项目中,当我使用需要打开文件的功能时,它永远不会起作用。例如:
if ( (Surf_Anim = CSurface::OnLoad("yoshi.bmp")) == NULL)
return false;
即使 yoshi.bmp 存在,也总是返回 false,并且 OnLoad 函数与井字游戏项目中的完全相同。
我已将 yoshi.bmp 映像的副本放在可执行文件旁边,但它仍然无法正常工作。(在功能性井字游戏项目中,图像与项目位于同一目录中)
我究竟做错了什么?
编辑:确认文本文件的操作正常后,我编辑了 CSurface::OnLoad 函数,如下所示:
SDL_Surface* CSurface::OnLoad(char* File)
{
SDL_Surface* Surf_Temp = NULL;
SDL_Surface* Surf_Return = NULL;
if((Surf_Temp = SDL_LoadBMP(File)) == NULL)
{
return NULL;
}
printf ("Loafing worked\n");
Surf_Return = SDL_DisplayFormat (Surf_Temp);
SDL_FreeSurface(Surf_Temp);
if (Surf_Return == NULL)
printf ("SDL_DisplayFormat didn't\n");
return Surf_Return;
}
两个 printf 函数都已执行。我想这个问题与我使用 SDL 函数的方式有关。无论如何,在一个完美运行的项目中,一切都是以同样的方式完成的。yoshi.bmp 图像,就像上述工作项目中的图像一样,是一个 24 位颜色的位图......