资源描述:
《游戏开发实验1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一:游戏地图的创建与显示一、实验目的学习VC++下游戏地图的创建与显示二、实验仪器电脑Virtural Studio 6.0 三、实验原理及过程菱形地图通常前一个坐标轴为X坐标,后一个坐标轴为Y坐标当X坐标值增大时,对应的菱形水平位置右移n*菱形小地图长度/2,竖直位置下移n*菱形小地图高度/2当Y坐标值增大时,对应的菱形水平位置左移n*菱形小地图长度/2,竖直位置下移n*菱形小地图高度/2 菱形地图算法实现intMapDraw(HDChdc){inti,j;intlim=MAXSCREENX/TILEWIDE;//所需绘制地图的范围f
2、or(i=-lim;i0)&&(sy+TILEHIGH>0)&&(playerx+i<100&&playerx+i>=0)&&(playery
3、+j<100&&playery+j>=0)){//边界判断TransparentBlt(hdcMem,sx,sy,TILEWIDE,TILEHIGH,hdcTiles[Data[playerx+i][playery+j]],0,0,TILEWIDE,TILEHIGH,RGB(0,255,0));//贴图}}}BitBlt(hdc,0,0,MAXSCREENX,MAXSCREENY,hdcMem,0,0,SRCCOPY);//画到窗口return0;}描述菱形地图显示的算法原理加载地图:for(inti=0;i<4;i++){_tcscpy(szNa
4、me,TEXT("MAP"));_itot(i,tempChar,10);_tcscat(szName,tempChar);hdcTiles[i]=CreateCompatibleDC(hdc);hBitmapTiles[i]=LoadBitmap(hInstance,szName);SelectObject(hdcTiles[i],hBitmapTiles[i]);}其中文件夹中有4张地图图片,运用for循环语句分别把四张地图MAP0,MAP1,MAP2,MAP3加载进来。在窗口铺满地图:for(intyi=0;yi5、(intxi=0;xi6、ndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)中的WM_CREATE读取地图文件,然后再执行InitMap,在地图的每一个格子随机添上贴图,在读取文件之后执行WM_PAINT,即可以在地图上画出附上图片,在输出图像时,使用MapDraw(hdc)中的TransparentBlt()函数将绿色作为透明关键色,即裁去4个角,从而实现菱形图形效果。 所调用的API的详细说明:1.全局变量:变量MAXSCREENX和MAXSCREENY为窗口的宽和高,TILEWIDE和TILEH
7、IGH为菱形地图的宽和高,创建变量hdcTiles[4]对应的内存设备中,存储着4个不同的矩形小地图。2.消息回调函数LRESULT CALLBACK WndProc (HWND hwnd, UINT message,WPARAM wParam,LPARAM lParam)中的WM_CREATE读取地图文件,该函数是先将文件中的图形文件读取到入口函数WINMAIN的参数hInstance句柄中,然后将消息反馈到消息函数WndProc中,执行case WM_CREATE语句,将hInstance中的信息传送到文件句柄hdcTiles中,这样就实现了文
8、件的读取。相关代码:caseWM_CREATE:hInstance=((LPCREATESTRUCT)lParam)->h