初めまして。現在ゲームプログラミングを勉強しているものです。『14歳から始めるC言語ゲームプログラミング』の4章で使用しているPlaySoundMem()について質問があります。ご教授をお願いします。
4章のサンプルプログラムでは、
@WinMain関数内でwhileループに入る前に
PlaySoundMem()でタイトル用BGMを鳴らす。
Aタイトル画面を描画するDrawGameTitle()内で
キー入力を待ってからタイトル用BGMを止め、
ゲーム本編用のBGMを鳴らす。
という処理をしています。ただ、個人的に
DrawGameTitle内でタイトル用BGMを鳴らして、
ゲーム本体を実行するDrawGameMain()内で
ゲーム本編のBGMを鳴らすという方がしっくり
くるので、以下のように変更しました。
int WINAPI WinMain(HINSTANCE hI, HINSTANCE hP, LPSTR lpC, int nC)
{
〜〜〜〜中略〜〜〜〜〜
SetDrawScreen(DX_SCREEN_BACK);
//PlaySoundMem(openmusic,DX_PLAYTYPE_LOOP);
〜〜〜〜中略〜〜〜〜〜
}
void DrawGameTitle()
{
PlaySoundMem(openmusic,DX_PLAYTYPE_LOOP);
〜〜〜〜中略〜〜〜〜〜
StopSoundMem(openmusic);
PlaySoundMem(clip4, DX_PLAYTYPE_BACK);
//PlaySoundMem(backmusic,DX_PLAYTYPE_LOOP);
}
void DrawGameMain()
{
PlaySoundMem(backmusic, DX_PLAYTYPE_LOOP);
〜〜〜〜中略〜〜〜〜〜
}
DrawGameOver()とDrawGameClear()内のPlaySoundMem(openmusic,DX_PLAYTYPE_LOOP)も
コメントアウトしています。
この場合、タイトル画面のBGMは鳴るのですが、
ゲーム本編のBGMが鳴りません。DrawGameTitle()の
PlaySoundMem()のコメントを外せば鳴ります。
DrawGameMain()内でPlaySoundMem()を使用しても
BGMが鳴らない原因はどういう理由からなのでしょうか?