首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

D3D游戏编程系列(二):自己动手编写即时战略游戏之map编辑器的制作

2013-10-10 
D3D游戏编程系列(二):自己动手编写即时战略游戏之地图编辑器的制作说起即时战略游戏,我第一时间想起魔兽争

D3D游戏编程系列(二):自己动手编写即时战略游戏之地图编辑器的制作

        说起即时战略游戏,我第一时间想起魔兽争霸,这个不知道陪伴我多少个日日夜夜,让我哭让我笑的游戏,让我想起了sky,moon,grubby等人牵动心弦的战斗历程,让我想起了当年日日守在电脑前专注的欣赏着wcg的每一场比赛,想起了当年学校门口的网吧里我跟我哥在浩方上奋力的拼杀着,想起了很多年前和寝室室友打赌谁输谁请一天杂粮饼的承诺。哎,不说了,说起来都是泪啊。那么进入本文的正题吧,用D3D加mfc编写一个即时战略游戏。

       其实这个游戏只是一个很简单的demo,各位千万不要把他想复杂了,但是我也实现了即时战略游戏的基本需求:地图编辑器,人物寻路,动态行走,网络同步等功能。在写这个游戏之前,我也在网上拼命的搜寻着相关资料,却发现这方面的资料十分残缺,许多都是只言片语,所以我觉得我需要把自己掌握的东西与大家一起分享,这样也能让跟我一样迷茫的朋友从中多少有点收获。

       任何一个像样的游戏都离不开一个地图编辑器,我们可以在这个编辑器上面去创建修改我们想要的地图,本文里的地图编辑器就是用mfc编写,而地图文件用xml储存,这样查看的话也很方便。下面给出一个地图文件的样式:

CRect r;m_DrawWnd.GetWindowRect(&r);if(!m_strSelectTex.IsEmpty() && PtInRect(&r,p)){D3DSURFACE_DESC desc;m_TexList[m_strSelectTex]->GetLevelDesc(0,&desc);int width=desc.Width;int height=desc.Height;int left=p.x-r.left-width/2;int top=p.y-r.top-height/2;left=floor(left*1.0/10)*10;top=floor(top*1.0/10)*10;m_NewBuildRect.SetRect(left,top,left+width,top+height);CRect NewBuildRect(m_iScreenLeft+left,m_iScreenTop+top,m_iScreenLeft+left+width,m_iScreenTop+top+height);m_bNewBuildVaild=true;if(NewBuildRect.top<0){m_bNewBuildVaild=false;}else if(NewBuildRect.left<0){m_bNewBuildVaild=false;}else if(NewBuildRect.bottom>1199){m_bNewBuildVaild=false;}else if(NewBuildRect.right>1599){m_bNewBuildVaild=false;}else{for(int row=0;row<NewBuildRect.Height();row++){for(int col=0;col<NewBuildRect.Width();col++){if(m_MapInfo[NewBuildRect.top+row][NewBuildRect.left+col]!=200){m_bNewBuildVaild=false;break;}}}}}
        好了,这一部分的主体代码差不多就这些,其他的代码大家可以看下源码,有什么不懂的可以一起交流下,下一节我将给大家带来即时战略游戏中非常重要的一章:寻路。

        本文有不足之处,还望大家多多指正。



热点排行