Code::Blocks と SDL ライブラリを使用して、単純なコンピューター ゲームを作成しています。私はいくつかのチュートリアルに従っており、三目並べの機能的なゲームを作成しました。プロジェクトには具体的な指示はありませんでしたが、他のゲームで使用できるテンプレートを作成しました。そのテンプレートを使用して、ヨッシーが走っているイメージの新しいプロジェクトを作成しました。ただし、この新しいプロジェクトでは、ファイルを開く必要がある関数を使用すると、まったく機能しません。例えば:
if ( (Surf_Anim = CSurface::OnLoad("yoshi.bmp")) == NULL)
return false;
yoshi.bmp が存在する場合でも常に false を返し、OnLoad 関数は Tic Tac Toe プロジェクトとまったく同じです。
実行可能ファイルの横に yoshi.bmp イメージのコピーを配置しましたが、それでも動作しません。(機能的な TicTacToe プロジェクトでは、画像はプロジェクトと同じディレクトリにありました)
私は何を間違っていますか?
編集: テキスト ファイルの操作が正しく機能することを確認した後、次のように 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 ビットカラーのビットマップです...