📄 gameinit.cpp
字号:
#include"PreDef.h"
RECT destrect,srcrect,tmprect;
BITMAPFILE bitmap,tempbmp;
GRAPH graph[512],tile[64],scenerygraph[64];
double X,Y,Xfocus,Yfocus;
UINT WIDTH;
UINT HEIGHT;
RECT maprect={0,0,WIDTH,HEIGHT};
UINT tiles=14,scenerygraphs=6,animates=3;
UINT seltile,selgroup=0,groupnum=12,maxgroup=tiles/groupnum; //选择tile和选择项状态
UINT selgraph,selgraphgroup=0,graphgroupnum=12,maxgraphgroup=scenerygraphs/graphgroupnum; //选择物体和选择项状态
UINT selanim,selanimgroup=0,animgroupnum=12,maxanimgroup=animates/animgroupnum; //选择物体和选择项状态
ANIMATE dora_anim[16],anim[16][16],etcanim[64];
CHARACTER doraemon,etc[512];
STAGE stage;
INT stagenum=-1,maxstage=INT_MAX;
UINT maxlength=256,minlength=24,normallength=64;
double speed=2,sqrtspeed=speed*sqrt(0.5),normalspeed=speed; //多拉A梦的速度和地图制作模块控制元素的统一速度
HRESULT Init(HWND hwnd)
{
HFILE hfile; //读取保存文件
OFSTRUCT ofdata;
_stprintf(strbuf,"doraemon.sav");
if((hfile=OpenFile(strbuf,&ofdata,OF_READ|OF_SHARE_COMPAT))!=HFILE_ERROR)
{
_lread(hfile,(LPVOID)&savefile,sizeof(SAVEFILE));
_lclose(hfile);
}
else
{
savefile.hiscore=100000;
}
if(InitDirectDraw(hwnd,MAXWIDTH,MAXHEIGHT)==DD_FALSE)
{
PostQuitMessage(0);
return DD_FALSE;
}
ShowWindow(hwnd,SW_SHOW);
/////////////////////////////////////////////////////////////////////////////////////////
//图形
LoadBitmapFile(&bitmap,__T("bmp\\graphs\\logo.bmp"));
CreateGraphFromBitmap(&graph[0],200,200,&bitmap);
LoadBitmapFile(&bitmap,__T("bmp\\graphs\\title.bmp"));
CreateGraphFromBitmap(&graph[1],0,0,&bitmap);
//graph[2]用于缓存表面
LoadBitmapFile(&bitmap,__T("bmp\\graphs\\hpbar.bmp"));
CreateGraphFromBitmap(&graph[3],0,0,&bitmap);
LoadBitmapFile(&bitmap,__T("bmp\\graphs\\stageclean.bmp"));
CreateGraphFromBitmap(&graph[4],200,200,&bitmap);
LoadBitmapFile(&bitmap,__T("bmp\\graphs\\gameover.bmp"));
CreateGraphFromBitmap(&graph[5],200,200,&bitmap);
LoadBitmapFile(&bitmap,__T("bmp\\graphs\\gameclean.bmp"));
CreateGraphFromBitmap(&graph[6],0,0,&bitmap);
LoadBitmapFile(&bitmap,__T("bmp\\graphs\\enemynum.bmp"));
CreateGraphFromBitmap(&graph[7],0,0,&bitmap);
/////////////////////////////////////////////////////////////////////////////////////////
//地图单元
int i;
for(i=0;i<tiles;i++)
{
_stprintf(strbuf,"bmp\\tiles\\tile%d.bmp",i);
LoadBitmapFile(&tempbmp,__T(strbuf));
CreateGraphFromBitmap(&tile[i],0,0,&tempbmp);
}
/////////////////////////////////////////////////////////////////////////////////////////
//物体单元
LoadBitmapFile(&tempbmp,__T("bmp\\graphs\\scenerys\\scenery0.bmp"));
CreateGraphFromBitmap(&scenerygraph[0],0,0,&tempbmp);
scenerygraph[0].xctrl=29;
scenerygraph[0].yctrl=205;
LoadBitmapFile(&tempbmp,__T("bmp\\graphs\\scenerys\\scenery1.bmp"));
CreateGraphFromBitmap(&scenerygraph[1],0,0,&tempbmp);
scenerygraph[1].xctrl=15;
scenerygraph[1].yctrl=18;
LoadBitmapFile(&tempbmp,__T("bmp\\graphs\\scenerys\\scenery2.bmp"));
CreateGraphFromBitmap(&scenerygraph[2],0,0,&tempbmp);
scenerygraph[2].xctrl=43;
scenerygraph[2].yctrl=39;
LoadBitmapFile(&tempbmp,__T("bmp\\graphs\\scenerys\\scenery3.bmp"));
CreateGraphFromBitmap(&scenerygraph[3],0,0,&tempbmp);
scenerygraph[3].xctrl=1;
scenerygraph[3].yctrl=8;
LoadBitmapFile(&tempbmp,__T("bmp\\graphs\\scenerys\\scenery4.bmp"));
CreateGraphFromBitmap(&scenerygraph[4],0,0,&tempbmp);
scenerygraph[4].xctrl=36;
scenerygraph[4].yctrl=13;
LoadBitmapFile(&tempbmp,__T("bmp\\graphs\\scenerys\\scenery5.bmp"));
CreateGraphFromBitmap(&scenerygraph[5],0,0,&tempbmp);
scenerygraph[5].xctrl=33;
scenerygraph[5].yctrl=44;
/////////////////////////////////////////////////////////////////////////////////////////
//多拉A梦动画
SetAnimate(&dora_anim[0],0,0,5,9);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\1.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<dora_anim[0].surcount;i++)
{
CreateGraph(&dora_anim[0].graph[i],0,0,59,70);
SetGraphCtrl(&dora_anim[0].graph[i],10,50);
SetRectPos(dora_anim[0].graph[i].cliprect,i*59,0,59,70);
GraphToGraph(&dora_anim[0].graph[i],&graph[2]);
}
SetAnimate(&dora_anim[1],0,0,5,9);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\2.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<dora_anim[1].surcount;i++)
{
CreateGraph(&dora_anim[1].graph[i],0,0,59,70);
SetGraphCtrl(&dora_anim[1].graph[i],10,50);
SetRectPos(dora_anim[1].graph[i].cliprect,i*59,0,59,70);
GraphToGraph(&dora_anim[1].graph[i],&graph[2]);
}
SetAnimate(&dora_anim[2],0,0,5,9);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\3.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<dora_anim[2].surcount;i++)
{
CreateGraph(&dora_anim[2].graph[i],0,0,59,70);
SetGraphCtrl(&dora_anim[2].graph[i],10,50);
SetRectPos(dora_anim[2].graph[i].cliprect,i*59,0,59,70);
GraphToGraph(&dora_anim[2].graph[i],&graph[2]);
}
SetAnimate(&dora_anim[3],0,0,5,9);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\4.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<dora_anim[3].surcount;i++)
{
CreateGraph(&dora_anim[3].graph[i],0,0,59,70);
SetGraphCtrl(&dora_anim[3].graph[i],10,50);
SetRectPos(dora_anim[3].graph[i].cliprect,i*59,0,59,70);
GraphToGraph(&dora_anim[3].graph[i],&graph[2]);
}
//初始化多拉A梦角色信息
doraemon.X=20;
doraemon.Y=360;
doraemon.Xstart=20;
doraemon.Ystart=360;
doraemon.width=39;
doraemon.height=20;
doraemon.relation=CHARACTER_ANIMATE;
doraemon.lpanimate=&dora_anim[1];
doraemon.visible=1;
/////////////////////////////////////////////////////////////////////////////////////////
//怪物动画 anim[行动][角色类型]
//0 0
SetAnimate(&anim[0][0],0,0,5,8);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\e11.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<anim[0][0].surcount;i++)
{
CreateGraph(&anim[0][0].graph[i],0,0,40,71);
SetGraphCtrl(&anim[0][0].graph[i],2,54);
SetRectPos(anim[0][0].graph[i].cliprect,i*40,0,40,71);
GraphToGraph(&anim[0][0].graph[i],&graph[2]);
}
//1 0
SetAnimate(&anim[1][0],0,0,5,8);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\e12.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<anim[1][0].surcount;i++)
{
CreateGraph(&anim[1][0].graph[i],0,0,40,71);
SetGraphCtrl(&anim[1][0].graph[i],2,54);
SetRectPos(anim[1][0].graph[i].cliprect,i*40,0,40,71);
GraphToGraph(&anim[1][0].graph[i],&graph[2]);
}
//0 1
SetAnimate(&anim[0][1],0,0,5,8);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\e21.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<anim[0][1].surcount;i++)
{
CreateGraph(&anim[0][1].graph[i],0,0,138,120);
SetGraphCtrl(&anim[0][1].graph[i],0,80);
SetRectPos(anim[0][1].graph[i].cliprect,i*138,0,138,120);
GraphToGraph(&anim[0][1].graph[i],&graph[2]);
}
//1 1
SetAnimate(&anim[1][1],0,0,5,8);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\e22.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<anim[1][1].surcount;i++)
{
CreateGraph(&anim[1][1].graph[i],0,0,138,120);
SetGraphCtrl(&anim[1][1].graph[i],0,80);
SetRectPos(anim[1][1].graph[i].cliprect,i*138,0,138,120);
GraphToGraph(&anim[1][1].graph[i],&graph[2]);
}
//0 2
SetAnimate(&anim[0][2],0,0,5,4);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\e31.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<anim[0][2].surcount;i++)
{
CreateGraph(&anim[0][2].graph[i],0,0,42,34);
SetGraphCtrl(&anim[0][2].graph[i],0,30);
SetRectPos(anim[0][2].graph[i].cliprect,i*42,0,42,34);
GraphToGraph(&anim[0][2].graph[i],&graph[2]);
}
//1 2
SetAnimate(&anim[1][2],0,0,5,4);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\e32.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<anim[1][2].surcount;i++)
{
CreateGraph(&anim[1][2].graph[i],0,0,42,34);
SetGraphCtrl(&anim[1][2].graph[i],0,30);
SetRectPos(anim[1][2].graph[i].cliprect,i*42,0,42,34);
GraphToGraph(&anim[1][2].graph[i],&graph[2]);
}
/////////////////////////////////////////////////////////////////////////////////////////
//杂项动画 子弹 爆炸 效果 道具等
//子弹1-1
SetAnimate(&etcanim[0],0,0,5,1);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bullet11.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
CreateGraph(&etcanim[0].graph[0],0,0,28,10);
SetGraphCtrl(&etcanim[0].graph[0],0,10);
SetRectPos(etcanim[0].graph[0].cliprect,0,0,28,10);
GraphToGraph(&etcanim[0].graph[0],&graph[2]);
//子弹1-2
SetAnimate(&etcanim[1],0,0,5,1);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bullet12.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
CreateGraph(&etcanim[1].graph[0],0,0,28,10);
SetGraphCtrl(&etcanim[1].graph[0],0,10);
SetRectPos(etcanim[1].graph[0].cliprect,0,0,28,10);
GraphToGraph(&etcanim[1].graph[0],&graph[2]);
//爆炸1
SetAnimate(&etcanim[2],0,0,7,6);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bowl1.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<etcanim[2].surcount;i++)
{
CreateGraph(&etcanim[2].graph[i],0,0,35,30);
SetGraphCtrl(&etcanim[2].graph[i],0,18);
SetRectPos(etcanim[2].graph[i].cliprect,i*35,0,35,30);
GraphToGraph(&etcanim[2].graph[i],&graph[2]);
}
//子弹2-1
SetAnimate(&etcanim[3],0,0,5,5);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bullet21.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<etcanim[3].surcount;i++)
{
CreateGraph(&etcanim[3].graph[i],0,0,56,38);
SetGraphCtrl(&etcanim[3].graph[i],0,40);
SetRectPos(etcanim[3].graph[i].cliprect,i*56,0,56,38);
GraphToGraph(&etcanim[3].graph[i],&graph[2]);
}
//子弹2-2
SetAnimate(&etcanim[4],0,0,5,5);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bullet22.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<etcanim[4].surcount;i++)
{
CreateGraph(&etcanim[4].graph[i],0,0,56,38);
SetGraphCtrl(&etcanim[4].graph[i],0,40);
SetRectPos(etcanim[4].graph[i].cliprect,i*56,0,56,38);
GraphToGraph(&etcanim[4].graph[i],&graph[2]);
}
//爆炸2
SetAnimate(&etcanim[5],0,0,2,6);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bowl2.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<etcanim[5].surcount;i++)
{
CreateGraph(&etcanim[5].graph[i],0,0,16,17);
SetGraphCtrl(&etcanim[5].graph[i],0,9);
SetRectPos(etcanim[5].graph[i].cliprect,i*16,0,16,17);
GraphToGraph(&etcanim[5].graph[i],&graph[2]);
}
//子弹3
SetAnimate(&etcanim[6],0,0,5,1);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bullet3.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
CreateGraph(&etcanim[6].graph[0],0,0,48,5);
SetGraphCtrl(&etcanim[6].graph[0],0,20);
SetRectPos(etcanim[6].graph[0].cliprect,0,0,48,5);
GraphToGraph(&etcanim[6].graph[0],&graph[2]);
//子弹4
SetAnimate(&etcanim[7],0,0,5,1);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\bullet4.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
CreateGraph(&etcanim[7].graph[0],0,0,15,2);
SetGraphCtrl(&etcanim[7].graph[0],0,20);
SetRectPos(etcanim[7].graph[0].cliprect,0,0,15,2);
GraphToGraph(&etcanim[7].graph[0],&graph[2]);
//道具1
SetAnimate(&etcanim[8],0,0,7,5);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\item1.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<etcanim[8].surcount;i++)
{
CreateGraph(&etcanim[8].graph[i],0,0,32,30);
SetGraphCtrl(&etcanim[8].graph[i],0,25);
SetRectPos(etcanim[8].graph[i].cliprect,i*32,0,32,30);
GraphToGraph(&etcanim[8].graph[i],&graph[2]);
}
//道具1
SetAnimate(&etcanim[9],0,0,7,5);
LoadBitmapFile(&tempbmp,__T("bmp\\animates\\item2.bmp"));
CreateGraphFromBitmap(&graph[2],0,0,&tempbmp);
for(i=0;i<etcanim[9].surcount;i++)
{
CreateGraph(&etcanim[9].graph[i],0,0,32,30);
SetGraphCtrl(&etcanim[9].graph[i],0,25);
SetRectPos(etcanim[9].graph[i].cliprect,i*32,0,32,30);
GraphToGraph(&etcanim[9].graph[i],&graph[2]);
}
return DD_OK;
}
int AppRelease()
{
ReleaseDirectDraw();
//BITMAPFILE bitmap,tempbmp;
ReleaseBitmapFile(&bitmap);
ReleaseBitmapFile(&tempbmp);
//GRAPH graph[512],tile[64],scenerygraph[64];
ReleaseGraphs(graph);
ReleaseGraphs(tile);
ReleaseGraphs(scenerygraph);
//ANIMATE dora_anim[16],anim[16][16],etcanim[64];
ReleaseAnimates(dora_anim);
int i,j;
for(i=0;i<16;i++)
for(j=0;j<16;j++)
ReleaseAnimate(anim[i][j]); //特殊任务特殊处理
ReleaseAnimates(etcanim);
HFILE hfile; //保存文件
OFSTRUCT ofdata;
_stprintf(strbuf,"doraemon.sav");
if((hfile=OpenFile(strbuf,&ofdata,OF_WRITE|OF_CREATE))!=HFILE_ERROR)
{
_lwrite(hfile,(LPCSTR)&savefile,sizeof(SAVEFILE));
_lclose(hfile);
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -