|
|
最近我写了个俄罗斯方块的程序,在播放背景音乐时遇到了一个奇怪的问题:
先给出播放音乐的代码:
if(playmusic)
{
int temp=rand()%8; //一共有8个MID音乐,随机播放
DMusic_Play(music_id[temp]);
if(DMusic_Status_MIDI(music_id[temp]==MIDI_PLAYING))
playmusic=0;
else
playmusic=1;
}
为了把问题说清楚,先来说说我的程序,游戏分为Game_Init(),Game_Sutdown(),Game_Main(),WinMain()还有WinPorc(),游戏主循环在Game_Main()中,是一个switch结构,判断GameStatus的值,分GAME_STATUS_MENU,GAME_STATUS_RUN,GAME_STATUS_OVER,GAME_STATUS_DEBUG,GAME_STATUS_RESTART,当我将上面那段代码放在GAME_STATUS_RUN里时,音乐播放就不正常了,就像是不断的从头播放,完全无视playmusic的值,而且放的好像都是同一个曲子(我明明是随机播放的)....也有可能是因为不断重头放的缘故导致不同的MIDI听起来都一样...但是当我把代码放在GAME_STATUS_MENU里时却能正常播放,而放在或者switch结构的外面时在标题画面时(GAME_STATUS_MENU)能正常播放,进入游戏(GAME_STATUS_RUN)就又出现问题了,真是郁闷了.
希望大家帮帮忙,看看是哪里出了问题...谢谢啦.
P.S.完整的代码在下面 |
|