📄 canvasframe.cpp
字号:
if(x>407-31-16)
x=407-31-16;
if(y<80)
{
y=80;
if(blood>=1)
{
blood--;
life.i-=2;
p_blood();
}
if(life.i<=0)
{
x=y=500;
exist=false;
}
}
if(y>480)
{
y=500;
x=500;
exist=false;
}
if(onperson)
{
if(person2.onstone)
y-=canshu;
else if(!person2.onstone&&person2.y+person2.vy+g>person2.land_line-canshu)
y=person2.land_line-canshu-31-31;
else if(!person2.onstone&&person2.y+person2.vy+g<=person2.land_line-canshu)
y=person2.y+person2.vy+g-31;
paste_j();
}
else if(onstone)//判断在石头上
{
vy=0;
switch(on_type)
{
case 1://不动的石头
y-=canshu;
paste_r();
break;
case 2://翻滚石
y+=canshu-(canshu-2);
paste_r();
break;
case 3://弹簧
y-=30;
i1=1;
//用于贴上弹图
paste_j();
break;
case 4://钉板
y-=canshu;
if(blood>=1)
{
blood--;
life.i-=2;
p_blood();
}
else
paste_r();
if(life.i<=0)
{
x=y=500;
exist=false;
}
break;
case 5://向右滚的石头
x+=5;
y-=canshu;
if(x>407-31-16)
x=407-31-16;
paste_r();
break;
case 6://向左滚的石
y-=canshu;
x-=5;
if(x<16)
x=16;
paste_r();
break;
}
}
else
{
if(i1!=1)
{//判断是自由下落
vy+=g;
y+=vy;
if(so2&&person2.onstone)
{
if(y+31>person2.y-canshu)
y=person2.y-canshu-31;
}
else if(so2&&!person2.onstone&&person2.y+person2.vy+g<=person2.land_line-canshu)
{
if(y+31>person2.y+person2.vy+g)
y=person2.y+person2.vy+g-31;
}
else if(so2&&!person2.onstone&&person2.y+person2.vy+g>person2.land_line-canshu)
{
if(y+31>person2.land_line-canshu-31)
y=person2.land_line-canshu-31-31;
}
else if(so1&&!so2)
{
if(y+31>land_line-canshu)
y=land_line-31-canshu;
}
paste_j();
}
if(i1==1) //判断是上弹阶段,上面判断在弹簧上时置为1
{
y-=30;
paste_j();
i1=2;//重新置为2使人自由下落
}
blood=5;//用于顶板贴图
}
}
void PERSON1::paste_j()
{
if(zhuangtai1==0&&zhuangtai2==0)//贴弹跳图
{
c++;
if(c==2)c=0;
xp=31*c;
cp=31*(c+1);
DDBuf->BltFast(x , y ,
DDPla[3], CRect(0,xp,31,cp),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai1>0)//贴右跑图
{
d++;
if(d==4)
d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x ,y ,
DDPla[4], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai2>0)//贴左跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[5], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
}
void PERSON1::paste_r()
{
if(zhuangtai1==0 && zhuangtai2==0)//贴正面图
DDBuf->BltFast( x , y ,
DDPla[2], CRect(0,0,31,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
if(zhuangtai1>0)//贴右跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[4], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai2>0)//贴左跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[5], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
}
void PERSON1::p_blood()
{
blood--;
if(zhuangtai1==0 && zhuangtai2==0)//贴正面图
DDBuf->BltFast( x , y ,
DDPla[32], CRect(0,0,31,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
if(zhuangtai1>0)//贴右跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[30], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai2>0)//贴左跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[31], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
}
void PERSON1::set()
{
vy=0;
x=156+15;
y=480-15-32;
life.x=30;
life.y=20;
life.i=12;
exist=true;
}
bool PERSON1::should_onperson()
{
person_line=500;
if(x+31>person2.x&&x<person2.x+31&&y+31<person2.y)
person_line=person2.y;
if(person_line!=500)
return true ;
else return false;
}
bool PERSON1::should_onright()
{
right_line=-1;
if(x>person2.x+31&&y<person2.y+31&&y+31>person2.y)
right_line=person2.x+31;
if(right_line!=-1)
return true;
else return false;
}
bool PERSON1::should_onleft()
{
left_line=408;
if(x+31<person2.x&&y<person2.y+31&&y+31>person2.y)
left_line=person2.x;
if(left_line!=408)
return true;
else return false;
}
void PERSON1::judge_onperson()
{
onperson=false;
if(y+31==person2.y&&x+31>person2.x&&x<person2.x+31)
onperson=true;
}
void PERSON1::judge_onright()
{
onright=false ;
if(x==person2.x+31&&y<person2.y+31&&y+31>person2.y)
onright=true;
}
void PERSON1::judge_onleft()
{
onleft=false;
if(x+31==person2.x&&y<person2.y+31&&y+31>person2.y)
onleft=true;
}
void PERSON2::paste()
{
x+=zhuangtai1;
x-=zhuangtai2;
if(so4||onleft)
if(x+31>person1.x)
person1.x+=(x+31-person1.x);
if(so3||onright)
if(x<person1.x+31)
person1.x-=(person1.x+31-x);
y-=zhuangtai3;
if(x<16)//有没有超出边界
x=16;
if(x>407-31-16)
x=407-31-16;
if(y<80)
{
y=80;
if(blood>=1)
{
blood--;
life.i-=2;
p_blood();
}
if(life.i<=0)
{
x=y=500;
exist=false;
}
}
if(y>480)
{
x=y=500;
exist=false;
}
if(onperson)
{
if(person1.onstone)
y-=canshu;
else if(!person1.onstone&&person1.y==person1.land_line-canshu)
y=person1.land_line-canshu-31-31;
else y=person1.y-31;
paste_j();
}
else if(onstone)//判断在石头上
{
vy=0;
switch(on_type)
{
case 1://不动的石头
y-=canshu;
paste_r();
break;
case 2://翻滚石
y+=canshu-(canshu-2);
paste_r();
break;
case 3://弹簧
y-=30;
i1=1;
//用于贴上弹图
paste_j();
break;
case 4://钉板
y-=canshu;
if(blood>=1)
{
blood--;
life.i-=2;
p_blood();
}
else
paste_r();
if(life.i<=0)
{
x=y=500;
exist=false;
}
break;
case 5://向右滚的石头
x+=5;
y-=canshu;
if(x>407-16-31)
x=407-16-31;
paste_r();
break;
case 6://向左滚的石
y-=canshu;
x-=5;
if(x<16)
x=16;
paste_r();
break;
}
}
else
{
if(i1!=1)
{//判断是自由下落
vy+=g;
y+=vy;
if(so2)
{
if(y+31>person1.y)
y=person1.y-31;
}
if(so1&&!so2)
{
if(y+31>land_line-canshu)
y=land_line-31-canshu;
}
paste_j();
}
if(i1==1) //判断是上弹阶段,上面判断在弹簧上时置为1
{
y-=30;
paste_j();
i1=2;//重新置为2使人自由下落
}
blood=5;//用于顶板贴图
}
}
void PERSON2::paste_j()
{
if(zhuangtai1==0&&zhuangtai2==0)//贴弹跳图
{
c++;
if(c==2)c=0;
xp=31*c;
cp=31*(c+1);
DDBuf->BltFast(x , y ,
DDPla[26], CRect(0,xp,31,cp),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai1>0)//贴右跑图
{
d++;
if(d==4)
d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x ,y ,
DDPla[27], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai2>0)//贴左跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[28], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
}
void PERSON2::paste_r()
{
if(zhuangtai1==0 && zhuangtai2==0)//贴正面图
DDBuf->BltFast( x , y ,
DDPla[33], CRect(0,0,31,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
if(zhuangtai1>0)//贴右跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[27], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai2>0)//贴左跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[28], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
}
void PERSON2::p_blood()
{
blood--;
if(zhuangtai1==0 && zhuangtai2==0)//贴正面图
DDBuf->BltFast( x , y ,
DDPla[32], CRect(0,0,31,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
if(zhuangtai1>0)//贴右跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[30], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
if(zhuangtai2>0)//贴左跑图
{
d++;
if(d==4)d=0;
xp=31*d;
cp=31*(d+1);
DDBuf->BltFast(x , y ,
DDPla[31], CRect(xp,0,cp,31),
DDBLTFAST_WAIT|DDBLTFAST_SRCCOLORKEY);
}
}
void PERSON2::set()
{
x=156+15+31;
y=480-15-32;
life.x=281;
life.y=20;
life.i=12;
exist=true;
}
bool PERSON2::should_onperson()
{
person_line=500;
if(x+31>person1.x&&x<person1.x+31&&y+31<person1.y)
person_line=person1.y;
if(person_line!=500)
return true ;
else return false;
}
void PERSON2::judge_onperson()
{
onperson=false;
if(y+31==person1.y&&x+31>person1.x&&x<person1.x+31)
onperson=true;
}
bool PERSON2::should_onright()
{
right_line=-1;
if(x>person1.x+31&&y<person1.y+31&&y+31>person1.y)
right_line=person1.x+31;
if(right_line!=-1)
return true;
else return false;
}
bool PERSON2::should_onleft()
{
left_line=408;
if(x+31<person1.x&&y<person1.y+31&&y+31>person1.y)
left_line=person1.x;
if(left_line!=408)
return true;
else return false;
}
void PERSON2::judge_onright()
{
onright=false ;
if(x==person1.x+31&&y<person1.y+31&&y+31>person1.y)
onright=true;
}
void PERSON2::judge_onleft()
{
onleft=false;
if(x+31==person1.x&&y<person1.y+31&&y+31>person1.y)
onleft=true;
}
canvasFrame::canvasFrame()
{
Create(NULL,"绘图窗口",WS_POPUP);
hdc = ::CreateCompatibleDC(NULL);
::ShowCursor(false);
//CreateDDPla(640,480,"load.bmp",9);
//DDBuf->BltFast( 0 , 0 , DDPla[9], CRect(0,0,640,480) , DDBLTFAST_WAIT);
//DDSur->Flip( NULL , DDFLIP_WAIT ); //显示加载中图案
CreateDDPla(640,480,"bg.bmp",0);//将图片寸到幕后内存区
CreateDDPla(407,400,"smbg.bmp",1);
CreateDDPla(31,31,"p_z.bmp",2);
CreateDDPla(31,62,"p_j.bmp",3);
CreateDDPla(124,31,"p_r_r.bmp",4);
CreateDDPla(124,31,"p_r_l.bmp",5);
CreateDDPla(247,55,"1PER.bmp",6);
CreateDDPla(248,55,"2PER.bmp",7);
CreateDDPla(95,15,"s_1.bmp",8);
CreateDDPla(95,15,"s_2_1.bmp",9);
CreateDDPla(95,270,"s_2_2.bmp",10);
CreateDDPla(95,15,"s_3_1.bmp",11);
CreateDDPla(95,15,"s_3_2.bmp",12);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -