超级玛丽增强版源代码Word文档下载推荐.docx
- 文档编号:20813789
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:92
- 大小:36.63KB
超级玛丽增强版源代码Word文档下载推荐.docx
《超级玛丽增强版源代码Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《超级玛丽增强版源代码Word文档下载推荐.docx(92页珍藏版)》请在冰豆网上搜索。
intjnum;
intwidth;
intheight;
intscreenwidth;
intscreenheight;
HDChdcdest;
HDChdcsrc;
//当前位置
intxpos;
intypos;
intiStartAni;
};
classMYBKSKY:
publicMYBITMAP
MYBKSKY();
~MYBKSKY();
//show
voidDrawRoll();
//循环补空
voidDrawRollStretch(intx,inty);
voidDrawRollStretch(intx,inty,intid);
voidMoveTo(intx,inty);
voidMoveRoll(intx);
//data
intxseparate;
#defineBM_SQUARE1
classMYANIOBJ:
MYANIOBJ();
~MYANIOBJ();
//initlist
voidInitAniList(int*pw,int*ph,intinum,intismask);
voidInitAniList(intstyle,inta,intb);
voidDrawItem(intx,inty,intid,intiframe);
voidDrawItemNoMask(intx,inty,intid,intiframe);
//指定宽度
voidDrawItemNoMaskWidth(intx,inty,intid,intw,intiframe);
//自动播放
voidPlayItem(intx,inty,intid);
intwlist[20];
inthlist[20];
intylist[20];
intiframeplay;
classMYANIMAGIC:
MYANIMAGIC();
~MYANIMAGIC();
voidInitAniList(int*pw,int*ph,intinum);
voidSetDevice(HDChdest,HDChsrc,HDChtemp);
HDChdctemp;
classMYROLE:
MYROLE();
~MYROLE();
//init
voidInitRole(intxleft,intxright);
voidSetLimit(intxleft,intxright);
voidDraw();
voidDraw(intx,inty,intiframe);
voidChangeFrame();
voidSetState(inti);
voidMove();
voidJump();
//ANI
voidMoveOffset(intx,inty);
voidMoveStepTo(intx,inty);
//向目的地移动单位距离
voidPlayAni();
//播放一段动画
voidSetAni(intistyle);
intIsInAni();
//是否正在播放动画
intiState;
intiFrame;
intminx;
intmaxx;
//move
intmovex;
intmovey;
//jump
intjumpheight;
intjumpx;
//方向
intidirec;
//动画
intiAniBegin;
intiparam1;
intiAniStyle;
#endif
//bitmaptool.cpp
//Finishing
stdafx.h"
bitmaptool.h"
gamemap.h"
externGAMEMAPgamemap;
externFILEREPORTf1;
MYBITMAP:
:
MYBITMAP()
{}
~MYBITMAP()
DeleteObject(hBm);
}
voidMYBITMAP:
Init(HINSTANCEhInstance,intiResource,introw,intcol)
BITMAPbm;
inum=row;
jnum=col;
hBm=LoadBitmap(hInstance,MAKEINTRESOURCE(iResource));
GetObject(hBm,sizeof(BITMAP),&
bm);
width=bm.bmWidth/inum;
height=bm.bmHeight/jnum;
SetDevice(HDChdest,HDChsrc,intwwin,inthwin)
hdcdest=hdest;
hdcsrc=hsrc;
screenwidth=wwin;
screenheight=hwin;
Show(intx,inty)
xpos=x;
ypos=y;
SelectObject(hdcsrc,hBm);
BitBlt(hdcdest,xpos,ypos,width,height,hdcsrc,0,0,SRCCOPY);
ShowCenter(inty)
xpos=(screenwidth-width)/2;
ShowLoop(intleft,inttop,intright,intbottom,intiframe)
inti,j;
for(j=top;
j<
bottom;
j+=height)
{
for(i=left;
i<
right;
i+=width)
{
BitBlt(hdcdest,i,j,width,height,hdcsrc,iframe*width,0,SRCCOPY);
}
}
ShowNoBack(intx,inty,intiFrame)
BitBlt(hdcdest,xpos,ypos,width,height/2,hdcsrc,iFrame*width,height/2,SRCAND);
BitBlt(hdcdest,xpos,ypos,width,height/2,hdcsrc,iFrame*width,0,SRCPAINT);
ShowNoBackLoop(intx,inty,intiFrame,intiNum)
inti;
for(i=0;
iNum;
i++)
{BitBlt(hdcdest,xpos+i*width,ypos,width,height/2,hdcsrc,iFrame*width,height/2,SRCAND);
BitBlt(hdcdest,xpos+i*width,ypos,width,height/2,hdcsrc,iFrame*width,0,SRCPAINT);
ShowAni()
/*if(!
iStartAni)
return;
BitBlt(hdcdest,xpos,ypos,width,height/2,hdcsrc,framenow*width,height/2,SRCAND);
BitBlt(hdcdest,xpos,ypos,width,height/2,hdcsrc,framenow*width,0,SRCPAINT);
framenow++;
//播放结束
if(framenow>
=inum)
iStartAni=0;
*/
SetAni(intx,inty)
/*
framenow=0;
iStartAni=1;
*/
SetPos(intistyle,intx,inty)
switch(istyle)
caseBM_CENTER:
xpos=(screenwidth-width)/2;
ypos=y;
break;
caseBM_USER:
xpos=x;
Draw(DWORDdwRop)
BitBlt(hdcdest,xpos,ypos,width,height,hdcsrc,0,0,dwRop);
Stretch(intx,inty)
StretchBlt(hdcdest,xpos,ypos,width*x,height*y,
hdcsrc,0,0,width,height,
SRCCOPY);
Stretch(intx,inty,intid)
hdcsrc,0,id*height,
width,height,
/////////////////////////bitmapobjectanimation//////////////////
MYBKSKY:
MYBKSKY()
xseparate=0;
~MYBKSKY()
voidMYBKSKY:
MoveTo(intx,inty)
MoveRoll(intx)
xseparate+=x;
xseparate%=width;
if(xseparate<
0)
xseparate=width;
}
DrawRoll()
BitBlt(hdcdest,xpos,ypos,
width-xseparate,height,
hdcsrc,xseparate,0,SRCCOPY);
BitBlt(hdcdest,xpos+width-xseparate,ypos,
xseparate,height,
hdcsrc,0,0,SRCCOPY);
DrawRollStretch(intx,inty)
StretchBlt(hdcdest,xpos,ypos,
(width-xseparate)*x,height*y,
hdcsrc,xseparate,0,
StretchBlt(hdcdest,xpos+(width-xseparate)*x,ypos,
xseparate*x,height*y,
hdcsrc,0,0,
DrawRollStretch(intx,inty,intid)
hdcsrc,xseparate,id*height,
/////////////////////////bitmaprole//////////////////
MYROLE:
MYROLE()
~MYROLE()
voidMYROLE:
MoveOffset(intx,inty)
if(x==0&
&
y==0)
if(!
gamemap.RoleCanMove(x,y))
xpos+=x;
ypos+=y;
if(xpos<
minx)
xpos=minx;
if(xpos>
maxx)
xpos=maxx;
MoveStepTo(intx,inty)
x)
xpos+=ROLE_STEP;
if(ypos<
y)
ypos+=8;
if(ypos>
//去背显示
Draw()
if(iAniBegin)
PlayAni();
else
SelectObject(hdcsrc,hBm);
BitBlt(hdcdest,xpos,ypos,
width,height/2,
hdcsrc,iFrame*width,height/2,SRCAND);
BitBlt(hdcdest,xpos,ypos,
hdcsrc,iFrame*width,0,SRCPAINT);
Draw(intx,inty,intframe)
BitBlt(hdcdest,x,y,
width,height/2,
hdcsrc,frame*width,height/2,SRCAND);
hdcsrc,frame*width,0,SRCPAINT);
InitRole(intxleft,intxright)
iFrame=0;
iState=0;
maxx=xright;
minx=xleft;
jumpheight=0;
movex=0;
movey=0;
jumpx=0;
idirec=0;
iAniBegin=0;
SetLimit(intxleft,intxright)
Move()
if(0==movey)
//水平移动
MoveOffset(movex,0);
//跳动
MoveOffset(jumpx,0);
MoveOffset(0,movey);
//帧控制
if(movex<
0&
iFrame<
3)
iFrame=3;
if(movex>
iFrame>
=3)
iFrame=0;
if(movex!
=0)
if(0==idirec)
iFrame=1-iFrame;
else
iFrame=7-iFrame;
if(movey!
iFrame=idirec*3;
if(movey<
//up
jumpheight+=(-movey);
//根据重力影响,加速度减慢
if(movey<
-1)
movey++;
//到达顶点后向下落
if(jumpheight>
=JUMP_HEIGHT*32)
{
jumpheight=JUMP_HEIGHT*32;
movey=4;
elseif(movey>
jumpheight-=movey;
//根据重力影响,加速度增大
movey++;
Jump()
//上升过程
MoveOffset(0,-4);
ChangeFrame()
SetState(inti)
{
iState=i;
SetAni(intistyle)
{iAniStyle=istyle;
iparam1=0;
iAniBegin=1;
intMYROLE:
IsInAni()
{returniAniBegin;
PlayAni()
switch(iAniStyle)
caseROLE_ANI_DOWN:
if(iparam1>
31)
break;
//人物下降动画
BitBlt(hdcdest,
xpos,ypos+iparam1,
width,height/2-iparam1,
hdcsrc,
iFrame*width,height/2,SRCAND);
BitBlt(hdcdest,
iFrame*width,0,SRCPAINT);
iparam1++;
caseROLE_ANI_UP:
//人物上升动画
xpos,ypos+32-iparam1,
width,iparam1,
iFr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超级 玛丽 增强 源代码