




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HPF坦克大战地图编辑器功能以及代码说明程序结构说明:MainFrm.cpp:主框架类,在此文件中的PreCreateWindow()方法中,添加了对窗口大小进行初始化的语句。Tankmap.cpp:主应用程序类,在此文件中的initinstanse()方法里,添加语句,使窗口固定大小,不能最大化和最小化,也不能通过拖拉来改变边框大小。MapSaveLoad.h:定义了地图存储加载操作类,用来进行编辑区域的地图和数据文件的转换。进行基本的保存和加载方法,并且申明了标记变量和地图编辑元素记录数组。staticintsaveMap[13][13];//将地图编辑区域分成13*13的区域,该数组为保存//地图的二维数组,每个元素保存当前位置保存的图//片编号;默认为0,表示无地图在此处;staticintisSaveOrLoad;//标记变量,当值1为时,表示当前状态为刚//保存文件或刚刚打开文件;在后续的处理中,//这个值将会非常有用,初始化为0;staticboolSave(CFile*);//将当前操作区域的地图编辑按照二维数组来//进行记录,记录值为代表当前贴图的图片编号。staticboolLoad(CFile*);//加载数据文件;读入按照一定格式进行记录的数据文件,将读入值//记录到二维数组当中,在OnDraw()函数执行绘图的时候,会根据二//维数组的值,贴上相应图片,完成打开操作。MapSaveLoad.cpp:地图操作类的实现,定义在相应头文件中声明的各个变量和方法。TankMapDoc.cpp:在此文件的OnNewDocunment()方法中,进行了【新建】操作的执行代码,将地图数组清为零,并且将表记值isSaveOrLoad的值设置为1,表示刚刚进行了文件操作。在执行OnDraw()函数的时候,会将地图编辑区域改变成一个除了老巢贴图外,没有任何其他贴图的背景。在此文件的Serialize()方法中,添加代码来执行【保存】,【另存为】,【加载】等操作,通过判断当前CArchive&的变量ar来决定进行何种操作,如果ar.isStoring,则表明现在执行的是保存操作,执行MapSaveLoad类的Save()方法,进行保存,否则,执行MapSaveLoad类的Load()方法,进行打开文件操作。TankMapView.cpp:此文件为该程序执行的主要文件,基本所有的画图函数都在此文件中。通过对OnDraw()方法的调用,来绘图。添加的变量有:intmapNum=14;//全局变量;//标示当前选定的地形元素的图片编号;//初始化为14,没有代表任何图片;//(因为工具箱中的背景图片的编号为14)intmap[169][2];//代表地图坐标的数组,每个元素的//第一个变量代表该网格的横坐标;//第二个坐标代表该网格的纵坐标;//地图网格排序按照行来顺序编号;inttoolBox[14][2];//代表工具箱坐标的数组,每个元素的//第一个变量代表该网格的横坐标;//第二个变量代表该网格的纵坐标;//工具箱网格排序按照行来顺序编写;intx=-1;//当前鼠标位置横坐标;//初始化为-1,表示程序刚刚开始执行;inty=-1;//当前鼠标位置纵坐标;//初始化为-1,表示程序刚刚开始执行;intinit=0;//数组初始化标记,若等于1,则数组已初始化//若等于零,则数组未初始化;初始值为零;//该变量是为程序逻辑而设定的判断变量;//虽然整个程序运行中只改变1次,但是,其对//绘图逻辑有很重要的作用//以免几个普通数组被反复初始化浪费效率;//避免SaveMap[][]数组被反复初始化,造成【新建】的效果。添加的函数有:boolInitArray();//function_1:初始化全局数组,//将编辑器,包括地图部分和工具箱部分的网格数组初始化;//并且将用于保存和加载的二维地图数组初始化为0;boolDrawHome(CDC*pdc);//function_2:画出地图上的老巢,//这一块地图的老鹰图片是默认的,//是不可修改的,不可覆盖的;boolDrawToolBox(CDC*pdc);//function_3:画出工具箱网格,//并且绘制出在工具箱下面的选定元素展示框网格;//函数中用到的数据都是作者进行多次计算或实践后得出。//因此数字值采用硬编码的方式进行编写。boolDrawToolMap(CDC*pdc);//function_4:画出工具箱中的待选择元素//将14种地图元素(包括背景)绘制到相应的工具箱中的指定位置。boolDrawMap(CDC*pdc);//function_5:绘制地图区域的网格,//13行13列,每个网格像素。boolChooseTool(CDC*pdc);/function_6:选择工具箱中地图元素,//根据鼠标坐标来选择即将进行编辑的元素;//将该元素设置为当前编辑的地图元素,//之后所选中的网格进行就会贴该地图元素。//该函数还负责将选中的编辑元素添加到下面的展示框内;boolChooseMap();//function_7:选择的当前贴图位置,//将当前鼠标点选位置转换为地图二维数组的下标,//将该数组元素的值标记为当前选择的编辑地图元素,//用来记录当前位置的应贴图片编号;//贴图可覆盖,可用bitmap14,也就是背景图片来覆盖图片,//产生橡皮效果效果。//老巢不可覆盖。boolDrawNewMap(CDC*pdc);//function_8://每次读取数组记录,绘制已编辑地图;//采用循环机制,将13*13的数组全部扫描绘制//将数组记录值对应的贴图贴如到当前数组所代表的地图编辑网格中。重写的方法:CTankMapView::OnDraw()在此方法内,通过设计上述添加函数的顺序和进行适当的标记变量的判断,来控制整个程序的画图流程,相当于主控函数,具体程序执行流程请参照说明文档第二部分的图形。CTankMapView::OnLButtonDown()处理鼠标点击事件,根据鼠标点击的位置来判断动作,或者进行工具箱的点选或者进行地图编辑区域的贴图。通过调用Invalidate()函数来调用OnDraw(),进行图形绘制。附件说明:Res文件夹:自己在实际小霸王机子上截下来的地图元素编辑图片。包括各种地形的各种形状。完全符合小霸王的地图编辑元素。另外包含了后来没有用到的四个方向的主坦克图片,作为扩充。自己写的截图程序(C#):Bitmapbb=(Bitmap)Image.FromFile("D:\\学习\\window编程\\picture\\src.bmp");for(inti=1;i<=13;i++){Bitmaps=bb.Clone(newSystem.Drawing.Rectangle((i-1)*32,0,32,32),System.Drawing.Imaging.PixelFormat.Format32bppPArgb);s.Save("D:\\学习\\window编程\\picture\\des"+i+".bmp");}Map文件夹:自己实际对照小霸王机上的关卡,模仿绘制出的1—4关的地图,只要在启动程序后,打开即可见。主要流程说明:见下页流程将地图数组数据填充到文件中。【保存】【另存为】MapSaveLoad::Save()IsSaveOrLoad=0;将数据文件数据填充到地图数组中。【打开】MapSaveLoad::Load()IsSaveOrLoad=0;【新建】TankMapDoc类OnNewDocument()初始化地图数组全为0IsSaveOrLoad=1;OnLButtonDown()鼠标点击将鼠标点击位置换算成相应的数组下标。IsSaveOrLoad=0;YNDrawHome()绘制老巢;DrawMap()绘制地图网格DrawToolBox()将地图数组数据填充到文件中。【保存】【另存为】MapSaveLoad::Save()IsSaveOrLoad=0;将数据文件数据填充到地图数组中。【打开】MapSaveLoad::Load()IsSaveOrLoad=0;【新建】TankMapDoc类OnNewDocument()初始化地图数组全为0IsSaveOrLoad=1;OnLButtonDown()鼠标点击将鼠标点击位置换算成相应的数组下标。IsSaveOrLoad=0;YNDrawHome()绘制老巢;DrawMap()绘制地图网格DrawToolBox()绘制工具箱网格DrawT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 保安人员技术素养提升的路径计划
- 公共服务行业的品牌工作计划
- 苗圃未来希望助力孩子成长计划
- 加强跨国经营管理提升全球竞争力计划
- 弘扬学生尊重劳动的精神计划
- 2025年地理信息大数据合作协议书
- 2025年中国橡胶行业市场运行态势、产业链全景及发展趋势报告
- 七年级下册《立方根》课件与练习
- 利用大数据分析预测用户需求变化
- 2025年路面清洁装备项目建议书
- 2022版义务教育(生物学)课程标准(附课标解读)
- 医院放射诊疗中的辐射防护常识学习培训
- 《中国山水画技法》课件
- 如何提升小学教学质量
- 陕西省西安市2023-2024学年六年级上学期期末数学试卷(A卷)
- 变电站模块化建设2.0版技术导则
- 无人机飞行表演合同
- 广州市2023年中考:《道德法治》考试真题与参考答案
- 爷爷的爷爷哪里来:人类起源的演化过程
- 公会挂靠协议
- 栾川光伏扶贫发电项目部qc成果
评论
0/150
提交评论