📄 winmain.cpp
字号:
Sleep(100);
lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
lpddsprimary->GetDC(&my_dc);
my_rect(300,210,500,240);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,(240+n*30),500,(270+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,215,buffer,strlen(buffer));
sprintf(buffer,"黑白");
TextOut(my_dc,310,245,buffer,strlen(buffer));
sprintf(buffer,"红色");
TextOut(my_dc,310,275,buffer,strlen(buffer));
sprintf(buffer,"绿色");
TextOut(my_dc,310,305,buffer,strlen(buffer));
sprintf(buffer,"蓝色",grade+1);
TextOut(my_dc,310,335,buffer,strlen(buffer));
sprintf(buffer,"彩色");
TextOut(my_dc,310,365,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}//------------------end while------------
}
int fire_stat_()//-----------------------------------选择子弹模式-------------------
{int w=fire_stat;
while(1)
{if(KEYDOWN(VK_ESCAPE))
{Sleep(600);
return(w);
}
if(KEYDOWN(VK_RETURN) |KEYDOWN(VK_SPACE) | KEYDOWN(my_fire))
{ if(n==0)
{Sleep(200);
return (0);
}
else if(n==1)
{Sleep(200);
return (1);
}
else
{ return (w);
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{n++;
n=n%2;
bb_s[n].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{n--;
if(n==-1)
n=1;
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,240,500,270);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,(270+n*30),500,(300+n*30));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"选择子弹模式");
TextOut(my_dc,310,245,buffer,strlen(buffer));
sprintf(buffer,"单弹",grade+1);
TextOut(my_dc,310,275,buffer,strlen(buffer));
sprintf(buffer,"三弹连发");
TextOut(my_dc,310,305,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}//------------------end while------------
}
int my_option()//-----------------------------选项------------------------------
{while(1)
{
if(KEYDOWN(VK_ESCAPE))
{ Sleep(600);
bb=0;
return (0);
}
if(KEYDOWN(VK_RETURN) |KEYDOWN(VK_SPACE) | KEYDOWN(my_fire))
{if(bb==0)//子弹模式------------------------
{Sleep(200);
n=0;
fire_stat=fire_stat_();
bb=5;
}
else if(bb==1)//星星顔色---------------------------
{
Sleep(200);
n=0;
star_stat_c();
bb=5;
}
else if(bb==2)//星星个数----------------------------
{
Sleep(200);
n=0;
star_stat_n();
bb=5;
}
else if(bb==3)//过关分数--------------------------
{Sleep(200);
n=0;
over_sco_stat();
bb=5;
}
else if(bb==4)//定义键盘----------------------------------
{Sleep(200);
n=0;
my_key();
bb=5;
}
else
{Sleep(200);
bb=0;
return (0);
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{bb++;
bb=bb%6;
bb_s[bb].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{bb--;
if(bb==-1)
bb=5;
bb_s[bb].dsbuffer->Play(0,0,0);
}
Sleep(100);
lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
lpddsprimary->GetDC(&my_dc);
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
my_rect(300,(210+bb*30),500,(240+bb*30));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
sprintf(buffer,"子弹模式");
TextOut(my_dc,350,215,buffer,strlen(buffer));
sprintf(buffer,"背景星星颜色");
TextOut(my_dc,350,245,buffer,strlen(buffer));
sprintf(buffer,"背景星星的个数");
TextOut(my_dc,350,275,buffer,strlen(buffer));
sprintf(buffer,"过关的分数");
TextOut(my_dc,350,305,buffer,strlen(buffer));
sprintf(buffer,"定义键盘");
TextOut(my_dc,350,335,buffer,strlen(buffer));
sprintf(buffer,"ESC键返回");
TextOut(my_dc,350,365,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}
}//---------------------------------------------------------end 选项--------------
int my_about()//-----------------------------------------关于------------------
{while(1)
{
if(KEYDOWN(VK_ESCAPE) | KEYDOWN(VK_RETURN) | KEYDOWN(VK_SPACE) | KEYDOWN(my_fire) )
{Sleep(200);
return (1);
}
Sleep(100);
//my_rect(300,250,500,350);
//lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
lpddsprimary->GetDC(&my_dc);
// FillRect(my_dc,&rect,CreateSolidBrush(RGB(0,0,0)));
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"ESC退出 回车暂停");
TextOut(my_dc,310,210,buffer,strlen(buffer));
sprintf(buffer,"空格键为射击");
TextOut(my_dc,310,245,buffer,strlen(buffer));
sprintf(buffer,"小键盘的方向键分别为上下左右");
TextOut(my_dc,310,280,buffer,strlen(buffer));
sprintf(buffer,"我,吴国清,2002年12月于华中农业大学读大四,");
TextOut(my_dc,250,315,buffer,strlen(buffer));
sprintf(buffer,"如果对我的游戏有兴趣或建议,请联系我:");
TextOut(my_dc,250,340,buffer,strlen(buffer));
sprintf(buffer,"EMAIL: wuguqi@163.com QQ: 64828978");
TextOut(my_dc,250,365,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}
}//-------------------------------------end 关于-----------------------
///-------------------------------------选择难度--------------------
int intgrade()
{while (1)
{
if(KEYDOWN(VK_ESCAPE))
{lpddsprimary->GetDC(&my_dc);
my_rect(300,195,500,405);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(0,0,0)));
lpddsprimary->ReleaseDC(my_dc);
Sleep(200);
bb=0;
return (-1);
}
if(KEYDOWN(VK_RETURN) | KEYDOWN(my_fire) |KEYDOWN(VK_SPACE) )
{u=abs(u)%6+1;
bb=0;
Sleep(200);
lpddsprimary->GetDC(&my_dc);
my_rect(300,195,500,405);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(0,0,0)));
lpddsprimary->ReleaseDC(my_dc);
return (u);
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{u++;
u=u%6;
bb_s[u].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{u--;
if(u==-1)
u=5;
bb_s[u].dsbuffer->Play(0,0,0);
}
// STAR_TIME=GetTickCount();
//while((GetTickCount()-STAR_TIME)<33)
//{}
Sleep(100);
lpddsprimary->GetDC(&my_dc);
my_rect(300,195,500,225);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,225,500,425);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(0,0,0)));
my_rect(300,(225+30*u),500,(255+30*u));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"请选择难度:",(grade+1)%6);
TextOut(my_dc,360,200,buffer,strlen(buffer));
sprintf(buffer,"难度1");
TextOut(my_dc,360,230,buffer,strlen(buffer));
sprintf(buffer,"难度2");
TextOut(my_dc,360,260,buffer,strlen(buffer));
sprintf(buffer,"难度3");
TextOut(my_dc,360,290,buffer,strlen(buffer));
sprintf(buffer,"难度4");
TextOut(my_dc,360,320,buffer,strlen(buffer));
sprintf(buffer,"难度5");
TextOut(my_dc,360,350,buffer,strlen(buffer));
sprintf(buffer,"难度6");
TextOut(my_dc,360,380,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
}
}//--------------------------------------end 选择难度-------------------------
//-------------------------------------<1> 暂停-------------------------
void game_pause()
{
if(KEYDOWN(VK_RETURN) | KEYDOWN(my_fire) | KEYDOWN(VK_SPACE) )
{end=0;
Sleep(300);
}
if(KEYDOWN(VK_ESCAPE))
PostQuitMessage(0);
lpddsprimary->GetDC(&my_dc);
SetTextColor(my_dc,RGB(100,0,255));
SetBkMode(my_dc,TRANSPARENT);
sprintf(buffer,"游戏正暂停!");
TextOut(my_dc,350,250,buffer,strlen(buffer));
sprintf(buffer,"回车键取消暂停");
TextOut(my_dc,350,300,buffer,strlen(buffer));
sprintf(buffer,"ESC键退出游戏");
TextOut(my_dc,350,350,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
//lpddsprimary->Flip(NULL,DDFLIP_WAIT);
}
//-----------------------------------<2> 在游戏中按下ESC键--------------
void game_esc()
{ if(KEYDOWN(VK_ESCAPE))
PostQuitMessage(0);
if(KEYDOWN(VK_RETURN) |KEYDOWN(VK_SPACE) | KEYDOWN(my_fire))
{if(bb==0)
{
end=0;
Sleep(200);
}
else if(bb==1)
{u=0;
Sleep(200);
u=grade-1;
int w=intgrade();
if(w!=grade & w!=-1)
{grade=w;
my_game_init();
}
//lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
}
else
{ bb=0;
Sleep(200);
end=6;
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{bb++;
bb=bb%3;
bb_s[bb].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{bb--;
if(bb==-1)
bb=2;
bb_s[bb].dsbuffer->Play(0,0,0);
}
Sleep(100);
lpddsprimary->GetDC(&my_dc);
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
my_rect(300,240,500,270);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,270,500,360);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(0,0,0)));
my_rect(300,(270+bb*30),500,(300+bb*30));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
sprintf(buffer,"ESC键退出");
TextOut(my_dc,350,245,buffer,strlen(buffer));
sprintf(buffer,"回到游戏");
TextOut(my_dc,350,275,buffer,strlen(buffer));
sprintf(buffer,"选择难度");
TextOut(my_dc,350,305,buffer,strlen(buffer));
sprintf(buffer,"回到主菜单");
TextOut(my_dc,350,335,buffer,strlen(buffer));
lpddsprimary->ReleaseDC(my_dc);
// Sleep(300);
}
//------------------------------------<3>你挂了------------------------------------
void game_death()
{
if(KEYDOWN(VK_ESCAPE))
PostQuitMessage(0);
if(KEYDOWN(VK_RETURN) )
{if(bb==0)
{my_game_init();
end=0;
Sleep(200);
}
else if(bb==1)
{u=0;
Sleep(200);
u=grade-1;
int w=intgrade();
if(w!=-1)
grade=w;
//lpddsprimary->Blt(NULL,NULL,NULL,DDBLT_WAIT|DDBLT_COLORFILL,&ddbltfx);
}
else
{ bb=0;
Sleep(200);
end=6;
}
}
if(KEYDOWN(my_down) | KEYDOWN(VK_DOWN))
{bb++;
bb=bb%3;
bb_s[bb].dsbuffer->Play(0,0,0);
}
if(KEYDOWN(my_up) | KEYDOWN(VK_UP))
{bb--;
if(bb==-1)
bb=2;
bb_s[bb].dsbuffer->Play(0,0,0);
}
Sleep(100);
lpddsprimary->GetDC(&my_dc);
SetTextColor(my_dc,RGB(0,100,100));
SetBkMode(my_dc,TRANSPARENT);
my_rect(300,240,500,270);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,255,0)));
my_rect(300,270,500,360);
FillRect(my_dc,&rect,CreateSolidBrush(RGB(0,0,0)));
my_rect(300,(270+bb*30),500,(300+bb*30));
FillRect(my_dc,&rect,CreateSolidBrush(RGB(255,0,0)));
sprintf(buffer,"你挂了!");
TextOut(my_dc,350,245,buffer,strlen(buffer));
sprintf(buffer,"再来一次");
TextOut(my_dc,350,275,buffer,strlen(buffer));
sprintf(buffer,"选择难度");
TextOut(my_dc,350,305,buffer,strlen(buffer));
sprintf(buffer,"回到主菜单");
TextOut(my_dc,350,335,buffer,strlen(buffer));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -