2013-02-11 31 views
0

我使用Code :: Blocks和SDL庫創建一個簡單的計算機遊戲。 我一直在關注一些教程,並且創建了一個tic tac toe的功能性遊戲。 雖然該項目沒有任何具體說明,但我創建了可用於其他遊戲的模板。 使用該模板,我創建了一個新項目,在那裏我會有一個Yoshi運行的圖像。 但是,在這個新項目中,當我使用需要打開文件的函數時,它永遠不會工作。例如:在C++中,使用Code :: Blocks無法打開文件,儘管它存在且路徑應該正確

if ((Surf_Anim = CSurface::OnLoad("yoshi.bmp")) == NULL) 
    return false; 

總是返回false,即使yoshi.bmp存在,並且在onload功能exactely一樣井字項目。

我已經放在yoshi.bmp圖像的副本旁邊的可執行文件,它仍然無法正常工作。 (在功能井字遊戲項目,這些照片是在同一目錄下的項目)

我在做什麼錯?

編輯:確認的文本文件,操作後工作正常,我編輯的C表面::的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位顏色的位圖...

+0

嘗試使用文件的完整路徑。 – 2013-02-11 12:48:56

+0

不使用code :: blocks。這太可怕了。 – 2013-02-11 12:55:37

+0

@TonyTheLion有什麼選擇? – 2013-02-11 12:57:31

回答

0

DisplayFormat函數無法工作,因爲視頻幀緩衝區的像素格式和顏色沒有之前使用函數SDL_SetVideoMode設置。

嘗試加載圖像之前調用此函數,解決了這個問題。

相關問題