>
!!SDL初期化
//main関数内
gtk_init (&argc , &argv);
SDL_Init( SDL_INIT_AUDIO );
Mix_OpenAudio(MIX_DEFAULT_FREQUENCY,
MIX_DEFAULT_FORMAT, 2, 1024);
!!music_set(int)
void music_set(int n)
{
switch(n){
case 0:
main_bgm_music = Mix_LoadMUS(Music_GameOver);
break;
case 1:
main_bgm_music = Mix_LoadMUS(Music_Part1_main);
break;
(中略)
default:
break;
}
Mix_AllocateChannels(16); // 同時発声数を設定
return;
}
引数で指定された曲ファイルをロードしmain_bgm_musicに格納する。
!!music_play(void)
void music_play(void)
{
Mix_PlayMusic(main_bgm_music,-1);
return;
}
main_bgm_musicに格納された曲ファイルを再生する。
!!music_quit(int)
void music_quit(void)
{
Mix_HaltMusic(); // 曲の再生停止
Mix_FreeMusic(gameover);
return;
}
main_bgm_musicに格納された曲ファイルを停止・解放する。
!!music_change_template(int)
void music_change_template(int n)
{
music_quit();
music_set(n);
music_play();
return;
}
曲ファイルの変更:必要な作業を一つの関数にまとめた。
!!se_set(void)
void se_set(void) //効果音をセット
{
se0 = Mix_LoadWAV(Se_Clear);
(中略)
Mix_AllocateChannels(16);
return;
}
使用する効果音(…wavファイル)を一斉にロードする。
!!se_play(int)
void se_play(int n) //番号で指定された効果音を再生
{
switch(n){
case 0: //クリア音
Mix_PlayChannel( -1, se0, 0 );
break;
(中略)
default:
break;
}
return;
}
引数で指定された効果音を再生する。
!!se_quit(void)
void se_quit(void) //セットした効果音を解放
{
Mix_FreeChunk(se0);
(中略)
return;
}
使用した効果音を解放する。
!!SDL終了
//cb_quit関数内
Mix_CloseAudio();
SDL_Quit();
<>
*proj/music/内の関数のプロトタイプ宣言
*#defineで曲・効果音ファイル指定(見やすいように)
<<担当者補足>>
予めロード・再生・停止の共通ルールを作成しておき、引数を指定することでどの曲ファイルに対してそれを行うかが決まる、という仕様になりました。もう少しスッキリとしたソースコードにできそうな感じもしますが、まずは最低限の形になりました。
アドバイスをくれた海沼君や壽君に感謝です。
[[前ページに戻る|gr06::モジュール]]