SDLでボン○ーマンを作ってみる4
今回は、爆弾を置いた後の爆発する処理と、BGMの再生、効果音の再生する処理を追加。
サンプル画像
ソースコードはこちら
http://www.geocities.jp/finnissy/data/090726.zip
snd.c
#include "snd.h" static const char *se_path[] = { PATH_SE_SOUND01, PATH_SE_SOUND02, }; static const char *bgm_path[] = { PATH_SOUND01, }; static boolean flg_initialize = FALSE; boolean init_snd(void) { int i; if( flg_initialize ) return TRUE; // initialize lib if(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 2048) < 0) { fprintf(stderr, "Error \"snd.c\" : %s\n",Mix_GetError()); return FALSE; } // sound effect loading for(i = 0;i < PATH_SE_MAX;i++) { if( !effect.arr[i] ) { effect.arr[i] = Mix_LoadWAV( se_path[i] ); if(effect.arr[i] == NULL) return FALSE; } } // sound BGM loading for(i = 0;i < PATH_SOUND_MAX;i++) { if( !sounds.arr[i] ) { sounds.arr[i] = Mix_LoadMUS( bgm_path[i] ); if(effect.arr[i] == NULL) return FALSE; } } flg_initialize = TRUE; return TRUE; } void quit_snd(void) { int i; stop_bgm(); //BGM再生停止 for(i = 0;i < PATH_SE_MAX;i++) { if(effect.arr[i] != NULL) Mix_FreeChunk( effect.arr[i] ); } for(i = 0;i < PATH_SE_MAX;i++) { if(effect.arr[i] != NULL) Mix_FreeChunk( effect.arr[i] ); } Mix_CloseAudio(); //destroy lib flg_initialize = FALSE; } void play_se(Mix_Chunk *se) { if(se != NULL) { if(Mix_PlayChannel(-1,se,0) == -1) printf("error playing sound effect \n"); } else printf("error playing sound effect \n"); } void play_bgm(Mix_Music *music) { if(music != NULL) { if(Mix_PlayMusic(music,-1) < 0) printf("error playing sound BGM \n"); } else printf("error playing sound BGM \n"); } void pause_bgm(void) { Mix_PausedMusic(); } void stop_bgm(void) { Mix_HaltMusic(); } void resume_bmg(void) { Mix_ResumeMusic(); } |