📄 drawunit.cpp
字号:
#include "fj.h"
#include <ddraw.h>
int l=0,r=0,d=0,dd=0,power_x=100,power_y=0,pp=0,m_x=600,m_y=0,mm=0;
bool start_bar=TRUE;
extern LPDIRECTDRAWSURFACE4 g_pDDSBack;
extern LPDIRECTDRAWSURFACE4 back;
extern LPDIRECTDRAWSURFACE4 Map;
extern bool play_dead,play_start,super,power,missile;
extern int play_num,super_num;
extern void GetRect(RECT* rect, long left, long top, long width, long height);
void draw_play(int x,int y,int flag)
{
RECT rc;
if(flag==LEFT){l++;r=0;}
if(flag==RIGHT){r++;l=0;}
if(flag==STOP){r--;l--;}
if(l>8)l=8;
if(r>8)r=8;
if(l<0)l=0;
if(r<0)r=0;
if(flag==STOP&&l>0)GetRect(&rc,(8-l)*54,70,54,70);
if(flag==STOP&&r>0)GetRect(&rc,r*54,0,54,70);
if(flag==STOP&&l==0&&r==0)GetRect(&rc,0,0,54,70);
if(flag==LEFT)GetRect(&rc,(8-l)*54,70,54,70);
if(flag==RIGHT)GetRect(&rc,r*54,0,54,70);
if(super)
{
RECT rc1;
GetRect(&rc1,580,2,52,68);
if(dd==1)
{
back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
dd=0;
}
else
{
back->BltFast(x,y,Map,&rc1,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
dd=1;
}
}
else
back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
//自机开始时的出场画面
void draw_play_start()
{
RECT L_rc,R_rc,rc;
int r=1;
GetRect(&L_rc,556,564,60,17);
GetRect(&R_rc,556,583,60,17);
GetRect(&rc,580,2,52,68);
l+=25;
super=TRUE;
if(l>310){
start_bar=false;
back->BltFast(344,364,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
play_start=false;
super_num=0;
l=0;
}
if(start_bar)back->BltFast(l,400,Map,&L_rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
if(start_bar)back->BltFast(680-l,400,Map,&R_rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
//自机爆炸画面
void draw_play_dead(int x,int y)
{
RECT rc;
GetRect(&rc,d*65,453,66,66);
super=true;
d++;
if(d>7){
d=0;
play_dead=false;
play_num--;
play_start=TRUE;
start_bar=TRUE;
return;
}
back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
void TREE::init(int cx,int cy,int ctype)
{
x=cx;
y=0;
type=ctype;
}
void TREE::draw()
{
RECT rc;
y++;
if(y>530)y=0;
switch(type)
{
case 0:
GetRect(&rc,570,81,27,24);
break;
case 1:
GetRect(&rc,610,107,24,22);
break;
case 2:
GetRect(&rc,570,108,37,31);
break;
case 3:
GetRect(&rc,555,144,34,22);
break;
}
back->BltFast(x,y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
void draw_power()
{
RECT rc;
if(pp==0)
{
power_x+=3;
if(power_x>490)pp=1;
}
else
{
power_x-=3;
if(power_x<100)pp=0;
}
power_y+=1;
if(power_y>530)power=false;
GetRect(&rc,612,502,21,12);
back->BltFast(power_x,power_y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
void draw_missile()
{
RECT rc;
if(mm==0)
{
m_x-=3;
if(m_x<200)mm=1;
}
else
{
m_x+=3;
if(m_x>600)mm=0;
}
m_y+=1;
if(m_y>530)missile=false;
GetRect(&rc,612,486,21,12);
back->BltFast(m_x,m_y,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
void MISSILE_L::init(int cx,int cy)
{
x=cx;
y=cy;
f=0;
die=false;
}
void MISSILE_L::draw()
{
RECT rc1,rc2;
if(die)return;
GetRect(&rc1,510,13,14,36);
GetRect(&rc2,533,13,14,36);
y-=6;
if(y<15){die=true;return;}
if(f==0)
{
back->BltFast(x,y,Map,&rc1,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
f=1;
}
else
{
back->BltFast(x,y,Map,&rc2,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
f=0;
}
}
void MISSILE_R::init(int cx,int cy)
{
x=cx;
y=cy;
f=0;
die=false;
}
void MISSILE_R::draw()
{
RECT rc1,rc2;
if(die)return;
GetRect(&rc1,510,13,14,36);
GetRect(&rc2,533,13,14,36);
y-=6;
if(y<15){die=true;return;}
if(f==0)
{
back->BltFast(x,y,Map,&rc1,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
f=1;
}
else
{
back->BltFast(x,y,Map,&rc2,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
f=0;
}
}
void draw_missile_num(int num)
{int i;
RECT rc;
if(num==0)return;
GetRect(&rc,607,524,9,19);
for(i=0;i<num;i++)
back->BltFast(50+i*12,500,Map,&rc,DDBLTFAST_SRCCOLORKEY|DDBLTFAST_WAIT);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -