- 1
- 0
- 约2.94千字
- 约 6页
- 2019-11-26 发布于广东
- 举报
实验一:游戏地图的创建与显示
一、 实验目的
学习VC++下游戏地图的创建与显示
二、 实验仪器
一台电脑、Virtural Studio 6.0
三、 实验原理及过程
先按照【图】菱形地图的排列所示的方式将地图分割并标上二维坐标。
前一个坐标值被称为X坐标,后一个被称为Y坐标。当X坐标值增大n吋,对应的菱形水平位置右 移n*菱形小地图长度/2,竖直位置下移十菱形小地图高度/2。同理,当Y坐标值增大n吋,对应的菱形水 平位置左移十菱形小地图长度/2,竖直位置下移N菱形小地图高度/2。
设置变量MAXSCREENX和MAXSCREENY为窗口的宽和高,T1LEW1DE和TILEHIGH为菱形地 图的宽和高,Data[I00][100]^地图数据数组。创建变量hdcTiles[4]对应的内存设备屮,存储着4个不同的 矩形小地图,地图4个角用纯绿色填充。
0,01.00. 10,20,3 1.2
0,0
1.0
0. 1
0,2
0,3 1.2
菱形地图的排列
在消息回调函数 LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam,
LPARAM IParam)中的WM_CREATE读取地图文件,代码为下:
case WM_CREATE:
hlnstance= ( (LPCREATESTRUCT) IParam)-hlnstance ;
hdc=GetDC(hwnd);
hdcMem=CreateCompatibleDC(hdc);
hBitmapMem=CreateCompetibleBitmep(hdc,1024*2,768*2);
SelectObject(hdcMem,hBitmapMem);
{
for (int i=0; i4;i++){
_tcscpy(szName,TEXT(HmapH));
_itot(i,tempChar^10);
_tcscat(szNAme,tempChAr);
hdcTiles[i]=CreateCompatibleDC(hdc);
hBitmapTiles[i]=LoadBitmap( hlnstance,szName);
SelectObject(hdcTiles[i]z hBitmapTiles[i]);
}
}
工nitMap();
playerx=playery=SIZE/2;
break;
其中函数InitMap ()见主要代码。
该机制是先将文件中的图形文件读取到入口函数WINMAIN的参数hlnstance句柄川,然后将消息反馈到 消息函数WndProc中,执行case WM_CREATE语句,将hlnstance中的信息传送到文件句柄hdcTiles中, 这样就实现了文件的读取。然后再执行InitMap,在地图的每一个格子随机添上贴图。
playerx=playery=SIZE/2的意思是将开始的位置定在地图的中心。
在读取文件之后执行WM_PAINT,即可以在地图上画出附上图片。代码如下:
case WM_PAINT:
hdc = BeginPaint (hwnd, ps) ;
GetClientRect (hwnd, rect);
MapDraw(hdc);
EndPaint (hwnd, ps);
return 0 ;
其屮MapDraw(hdc)是建立整个地图的核心,见主要代码。
在输出图像时,使用MapDraw(hdc)屮的TransparentBlt()函数将绿色作为透明关键色,即裁去4个角,从而 实现菱形图形效果。
实现方法为:
TransparentBlt(hdcMem,sx,sy,TILEWIDE,TILEHIGH,hdcTiles[Data[playerx+iJlplayery+j]],OATILEWIDE,TIL
EHIGH,RGB(0,255,0))
四、实验结果 实验截图:
五、实验心得(需包括有何不足如何改进)
木实验需掌握创建windows窗口的基本方法,在此基础上菱形地图排列和贴图,得以实现最简单的二维世 界地图,但是在本次实验中所有格子上的贴图都是随机附于的,还没有实现在指定的位置上添加指定的贴 图,要制作一个简单的二维游戏地图还有很多事情要做。而且一般的游戏不仅仅只有一张地图,所以还需 要多张地图的创建和地图之间的转换。
六、主要代码
int InitMap(){
srand( (unsigned)time( NULL ) );
for (int yi=0; yiSIZE; yi++){
for (int xi=0; xiSIZE; xi++){
Data[yi][xi]=rand()%4;
}
}
return 0;
}
int MapDraw(HDC hdc)
您可能关注的文档
- 温暖的一天作文.docx
- 温暖的友情作文.docx
- 温暖的滋味作文.docx
- 温暖冬天作文.docx
- 温暖工程农民工培训项目书.docx
- 温暖话题初三作文.docx
- 温暖记叙文作文.docx
- 温暖就在身边作文.docx
- 温暖就在我身边作文.docx
- 温暖了我的世界作文.docx
- 2025杭州市上城区闸弄口街道办事处编外招聘1人笔试历年题库附答案解析.docx
- 2025海南东方市教育局招聘高中教师和职业学校教师10人笔试备考试题(1号)附答案解析.docx
- 2025江西吉安市公安局青原分局面向社会招聘辅警拟入闱笔试备考试题附答案解析.docx
- 2025秋季华南化工销售分公司高校毕业生招聘笔试备考试题附答案解析.docx
- 2025江苏连云港市赣榆区卫生健康委员会所属事业单位第二次招聘编制内卫生专业技术人员37人笔试备考试.docx
- 2025新疆维吾尔自治区公安厅所属单位招聘警务辅助人员笔试题库(2人)附答案解析.docx
- 2025锡林郭勒阿巴嘎旗公益性岗位招聘笔试历年题库附答案解析.docx
- 2025重庆九洲智造科技有限公司招聘工艺技术员等岗位10人笔试参考题库附答案解析.docx
- 2025浙江省杭州第二中学教育集团招聘专任教师100人笔试备考题库附答案解析.docx
- 2025年齐齐哈尔市重点企业招聘1220人笔试备考试题附答案解析.docx
原创力文档

文档评论(0)