📄 winmain.cpp
字号:
bb_s[w].dsbuffer->SetCurrentPosition(0);
bb_s[w].dsbuffer->Release();
bb_s[w].dsbuffer=NULL;
}
}
/*for (int w=0;w<FIREE_NUM;w++)//敌机子弹--------------------------
{if( firee_s[w].dsbuffer)
{ firee_s[w].dsbuffer->Stop();
firee_s[w].dsbuffer->SetCurrentPosition(0);
firee_s[w].dsbuffer->Release();
firee_s[w].dsbuffer=NULL;
}
}*/
for (int w=0;w<FIRE_NUM;w++)//我机的子弹--------------
{if( fire_s[w].dsbuffer)
{fire_s[w].dsbuffer->Stop();
fire_s[w].dsbuffer->SetCurrentPosition(0);
fire_s[w].dsbuffer->Release();
fire_s[w].dsbuffer=NULL;
}
}
for (int w=0;w<PLANEE_NUM;w++)//敌机声音--------------
{if( planee_s[w].dsbuffer)
{planee_s[w].dsbuffer->Stop();
planee_s[w].dsbuffer->SetCurrentPosition(0);
planee_s[w].dsbuffer->Release();
planee_s[w].dsbuffer=NULL;
}
}
lpds->Release();
//------------------------------------------------Unload Direct Draw--------------------------
// kill all the surfaces
if(lpddsplane)
{lpddsplane->Release;
lpddsplane=NULL;
}
// first the palette
if (lpddpal)
{
lpddpal->Release();
lpddpal = NULL;
} // end if
//if(lpddsback)
// {
// lpddsback->Release;
// lpddsback->NULL;
// }
// now the primary surface
if (lpddsprimary)
{
lpddsprimary->Release();
lpddsprimary = NULL;
} // end if
// now blow away the IDirectDraw4 interface
if (lpdd)
{
lpdd->Release();
lpdd = NULL;
} // end if
// return success or failure or your own return code here
return(1);
}
//---------------------------------------------- end Game_Shutdown------------------------------
// -----------------------------------------------下面是一些关于我菜单的函数--------------------
int my_key_oo()//用来得到一个按键并返回---------------------------
{while(1)
{ if(KEYDOWN(VK_ESCAPE))
{Sleep(600);
return (-1);
}
for (int w=0;w<500;w++)
{if(KEYDOWN(w))
{if(w!=13 & w!=27)
{Sleep(200);
return(w);
}
}
}
Sleep(50);
lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
lpddsprimary->GetDC(&my_dc);
my_rect(300,285,500,315);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"请按下你要定义的键");
TextOut(my_dc,310,290,buffer,strlen(buffer));
}//end while-------------------------
}
//----------------------------------------end my_key_oo()--------------------------------------
int my_key()//-------------------------------定义键盘--------------------
{int my_left1=my_left,my_right1=my_right,my_up1=my_up,my_down1=my_down,my_fire1=my_fire;
while(1)
{if(KEYDOWN(VK_ESCAPE))
{Sleep(600);
return(1);
}
if(KEYDOWN(VK_RETURN) |KEYDOWN(VK_SPACE) | KEYDOWN(my_fire))
{if(n==0)
{Sleep(200);
int w=my_key_oo();
if(w>0)
my_up1=w;
bb=5;
}
else if(n==1)
{ Sleep(200);
int w=my_key_oo();
if(w>0)
my_down1=w;
bb=5;
}
else if(n==2)
{Sleep(200);
int w=my_key_oo();
if(w>0)
my_left1=w;
bb=5;
}
else if(n==3)
{ Sleep(200);
int w=my_key_oo();
if(w>0)
my_right1=w;
bb=5;
}
else if(n==4)
{ Sleep(200);
int w=my_key_oo();
if(w>0)
my_fire1=w;
bb=5;
}
else if(n==5)
{Sleep(200);
my_left=my_left1;
my_right=my_right1;
my_up=my_up1;
my_down=my_down1;
my_fire=my_fire1;
return (1);
}
else
{Sleep(200);
return (1);
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{n++;
n=n%7;
bb_s[n].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{n--;
if(n==-1)
n=6;
bb_s[n].dsbuffer->Play(0,0,0);
}
Sleep(100);
lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
lpddsprimary->GetDC(&my_dc);
my_rect(250,180,550,210);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,(210+n*30),500,(240+n*30));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"选定选项后按回车键开始重新定义(ESC返回)");
TextOut(my_dc,260,185,buffer,strlen(buffer));
sprintf(buffer,"向上键目前定义为:%c",my_up1);
TextOut(my_dc,310,215,buffer,strlen(buffer));
sprintf(buffer,"向下键目前定义为:%c",my_down1);
TextOut(my_dc,310,245,buffer,strlen(buffer));
sprintf(buffer,"向左键目前定义为:%c",my_left1);
TextOut(my_dc,310,275,buffer,strlen(buffer));
sprintf(buffer,"向右键目前定义为:%c",my_right1);
TextOut(my_dc,310,305,buffer,strlen(buffer));
sprintf(buffer,"开火键目前定义为:%c",my_fire1);
TextOut(my_dc,310,335,buffer,strlen(buffer));
sprintf(buffer,"保存设置并返回");
TextOut(my_dc,310,365,buffer,strlen(buffer));
sprintf(buffer,"不保存设置返回");
TextOut(my_dc,310,395,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}//------------------end while------------
}
int over_sco_stat()//------------------------选择过关分数---------------------------
{
while(1)
{if(KEYDOWN(VK_ESCAPE))
{Sleep(600);
return(1);
}
if(KEYDOWN(VK_RETURN) |KEYDOWN(VK_SPACE) | KEYDOWN(my_fire))
{if(n==0)
{Sleep(200);
over_sco=50;
return (1);
}
else if(n==1)
{ Sleep(200);
over_sco=100;
return (1);
}
else if(n==2)
{Sleep(200);
over_sco=200;
return (1);
}
else if(n==3)
{ Sleep(200);
over_sco=300;
return (1);
}
else if(n==4)
{Sleep(200);
over_sco=400;
return (1);
}
else if(n==5)
{Sleep(200);
over_sco=500;
return(1);
}
else if(n==6)
{Sleep(200);
over_sco=600;
return(1);
}
else if(n=7)
{Sleep(200);
over_sco=700;
return(1);
}
else
{Sleep(200);
over_sco=100;
return(1);
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{n++;
n=n%8;
bb_s[n].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{n--;
if(n==-1)
n=7;
bb_s[n].dsbuffer->Play(0,0,0);
}
Sleep(100);
lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
lpddsprimary->GetDC(&my_dc);
my_rect(300,165,500,195);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,(195+n*30),500,(225+n*30));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"选择过关分数(ESC返回)");
TextOut(my_dc,310,170,buffer,strlen(buffer));
sprintf(buffer,"50分过关");
TextOut(my_dc,310,200,buffer,strlen(buffer));
sprintf(buffer,"100分过关");
TextOut(my_dc,310,230,buffer,strlen(buffer));
sprintf(buffer,"200分过关");
TextOut(my_dc,310,260,buffer,strlen(buffer));
sprintf(buffer,"300分过关",grade+1);
TextOut(my_dc,310,290,buffer,strlen(buffer));
sprintf(buffer,"400分过关");
TextOut(my_dc,310,320,buffer,strlen(buffer));
sprintf(buffer,"500分过关");
TextOut(my_dc,310,350,buffer,strlen(buffer));
sprintf(buffer,"600分过关");
TextOut(my_dc,310,380,buffer,strlen(buffer));
sprintf(buffer,"700分过关");
TextOut(my_dc,310,410,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}//------------------end while------------
}
int star_stat_n()//------------------------------选择星星个数-------------
{
while(1)
{if(KEYDOWN(VK_ESCAPE))
{Sleep(600);
return(1);
}
if(KEYDOWN(VK_RETURN) |KEYDOWN(VK_SPACE) | KEYDOWN(my_fire))
{if(n==0)
{Sleep(200);
star_num=0;
return (1);
}
else if(n==1)
{ Sleep(200);
star_num=200;
return (1);
}
else if(n==2)
{Sleep(200);
star_num=400;
return (1);
}
else if(n==3)
{ Sleep(200);
star_num=600;
return (1);
}
else if(n==4)
{Sleep(200);
star_num=800;
return (1);
}
else if(n==5)
{Sleep(200);
star_num=1000;
return(1);
}
else
{Sleep(200);
star_num=800;
return(1);
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{n++;
n=n%6;
bb_s[n].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{n--;
if(n==-1)
n=5;
bb_s[n].dsbuffer->Play(0,0,0);
}
Sleep(100);
lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
lpddsprimary->GetDC(&my_dc);
my_rect(300,195,500,225);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,(225+n*30),500,(255+n*30));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"选择星星个数(ESC返回)");
TextOut(my_dc,310,200,buffer,strlen(buffer));
sprintf(buffer,"没有星星");
TextOut(my_dc,310,230,buffer,strlen(buffer));
sprintf(buffer,"200个星星");
TextOut(my_dc,310,260,buffer,strlen(buffer));
sprintf(buffer,"400个星星");
TextOut(my_dc,310,290,buffer,strlen(buffer));
sprintf(buffer,"600个星星",grade+1);
TextOut(my_dc,310,320,buffer,strlen(buffer));
sprintf(buffer,"800个星星");
TextOut(my_dc,310,350,buffer,strlen(buffer));
sprintf(buffer,"1000个星星");
TextOut(my_dc,310,380,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}//------------------end while------------
}
int star_stat_c()//-------------------------------选择星星顔色------------
{
while(1)
{if(KEYDOWN(VK_ESCAPE))
{Sleep(600);
return(1);
}
if(KEYDOWN(VK_RETURN) |KEYDOWN(VK_SPACE) | KEYDOWN(my_fire))
{if(n==1)
{Sleep(200);
star_stat=1;
return (1);
}
else if(n==2)
{ Sleep(200);
star_stat=2;
return (1);
}
else if(n==3)
{Sleep(200);
star_stat=3;
return (1);
}
else if(n==4)
{ Sleep(200);
star_stat=4;
return (1);
}
else
{Sleep(200);
star_stat=0;
return (1);
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{n++;
n=n%5;
bb_s[n].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{n--;
if(n==-1)
n=4;
bb_s[n].dsbuffer->Play(0,0,0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -