关于俄罗斯方块背景音乐添加有关问题
关于俄罗斯方块背景音乐添加问题
求助~~下面是我的俄罗斯方块代码主函数,想加上背景音乐,可是不能在游戏进行同时播放,比如加到开头,就要先播放再进行游戏,问题在哪里啊,大虾们给些意见吧~~~
void main()
{
PlaySound(":D\\2628魏珂\\卡农.wav",0,SND_FILENAME|SND_SYNC);
int GameOver=0;
int key,nextbox;
int Currentaction=0;/*标记当前动作状态*/
int gd=VGA,gm=VGAHI,errorcode;
initgraph(&gd,&gm,"");
errorcode = 1;
if (errorcode != 1)
{
printf("\nNotice:Graphics error: %s\n");
printf("Press any key to quit!");
getch();
exit(1);
}
setbkcolor(BgColor);
setcolor(FgColor);
srand(time(NULL));//conic函数包含随机数
Table.initialize(Sys_x,Sys_y,Horizontal_boxs,Vertical_boxs);/*初始化*/
nextbox=Table.MkNextBox(-1);
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);
shapes[nextbox].show_box(LeftWin_x,Curbox_y+200,nextbox);
show_intro(Sys_x,Curbox_y+320);
getch();
while(1)
{
/* Currentaction=0;
flag_newbox=false;
检测是否有按键*/
if (_kbhit()){key=getch(); }//检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
else { key=0; }
switch(key)
{
case VK_LEFT:
if(shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveLeft))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);Curbox_x-=BSIZE;Currentaction=MoveLeft;}
break;
case VK_RIGHT:
if(shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveRight))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);Curbox_x+=BSIZE;Currentaction=MoveRight;}
break;
case VK_DOWN:
if(shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveDown))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);Curbox_y+=BSIZE;Currentaction=MoveDown;
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);}//在键盘输入向下时马上在下一位置绘制方块
else flag_newbox=true;
break;
case VK_UP:/*旋转方块*/
if(shapes[shapes[current_box_numb].get_next()].MoveAble(Curbox_x,Curbox_y,MoveRoll))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);current_box_numb=shapes[current_box_numb].get_next();
Currentaction=MoveRoll;
}
break;
case VK_ESCAPE:
GameOver=1;
break;
default:
break;
}
if(Currentaction)
{ /*表示当前有动作,移动或转动*/
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);
Currentaction=0;
}
/*按了往下键,但不能下移,就产生新方块*/
if(flag_newbox)
{
/*这时相当于方块到底部了,把其中出现点满一行的清去,置0*/
shapes[nextbox].ErasePreBox(LeftWin_x,Sys_y+200);
nextbox=Table.MkNextBox(nextbox);
shapes[nextbox].show_box(LeftWin_x,Curbox_y+200,nextbox);
if(!shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveDown))/*刚一开始,游戏结束*/
{
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);
GameOver=1;
求助~~下面是我的俄罗斯方块代码主函数,想加上背景音乐,可是不能在游戏进行同时播放,比如加到开头,就要先播放再进行游戏,问题在哪里啊,大虾们给些意见吧~~~
void main()
{
PlaySound(":D\\2628魏珂\\卡农.wav",0,SND_FILENAME|SND_SYNC);
int GameOver=0;
int key,nextbox;
int Currentaction=0;/*标记当前动作状态*/
int gd=VGA,gm=VGAHI,errorcode;
initgraph(&gd,&gm,"");
errorcode = 1;
if (errorcode != 1)
{
printf("\nNotice:Graphics error: %s\n");
printf("Press any key to quit!");
getch();
exit(1);
}
setbkcolor(BgColor);
setcolor(FgColor);
srand(time(NULL));//conic函数包含随机数
Table.initialize(Sys_x,Sys_y,Horizontal_boxs,Vertical_boxs);/*初始化*/
nextbox=Table.MkNextBox(-1);
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);
shapes[nextbox].show_box(LeftWin_x,Curbox_y+200,nextbox);
show_intro(Sys_x,Curbox_y+320);
getch();
while(1)
{
/* Currentaction=0;
flag_newbox=false;
检测是否有按键*/
if (_kbhit()){key=getch(); }//检查当前是否有键盘输入,若有则返回一个非0值,否则返回0
else { key=0; }
switch(key)
{
case VK_LEFT:
if(shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveLeft))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);Curbox_x-=BSIZE;Currentaction=MoveLeft;}
break;
case VK_RIGHT:
if(shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveRight))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);Curbox_x+=BSIZE;Currentaction=MoveRight;}
break;
case VK_DOWN:
if(shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveDown))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);Curbox_y+=BSIZE;Currentaction=MoveDown;
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);}//在键盘输入向下时马上在下一位置绘制方块
else flag_newbox=true;
break;
case VK_UP:/*旋转方块*/
if(shapes[shapes[current_box_numb].get_next()].MoveAble(Curbox_x,Curbox_y,MoveRoll))
{shapes[current_box_numb].EraseBox(Curbox_x,Curbox_y);current_box_numb=shapes[current_box_numb].get_next();
Currentaction=MoveRoll;
}
break;
case VK_ESCAPE:
GameOver=1;
break;
default:
break;
}
if(Currentaction)
{ /*表示当前有动作,移动或转动*/
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);
Currentaction=0;
}
/*按了往下键,但不能下移,就产生新方块*/
if(flag_newbox)
{
/*这时相当于方块到底部了,把其中出现点满一行的清去,置0*/
shapes[nextbox].ErasePreBox(LeftWin_x,Sys_y+200);
nextbox=Table.MkNextBox(nextbox);
shapes[nextbox].show_box(LeftWin_x,Curbox_y+200,nextbox);
if(!shapes[current_box_numb].MoveAble(Curbox_x,Curbox_y,MoveDown))/*刚一开始,游戏结束*/
{
shapes[current_box_numb].show_box(Curbox_x,Curbox_y,current_box_numb);
GameOver=1;