⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameinit.cpp

📁 一个VC游戏源码,带运行程序,供大家学习之用
💻 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 + -