学士后Android工程师就业冲刺阶段项目忍者突袭项目(地图编辑器)详细设计书编写人:北大青鸟编写日期:2014年6月文档修订记录序号修改人审核人修改日期备注1231.文档介绍1.1.文档目的提供地图编辑器的详细设计,对后期的代码开发提供相关的指导和约束。预期读者:游戏分析人员和开发人员。1.2.文档范围本详细设计书主要是描述地图编辑器的具体实现,涉及的范围有:1.图形模块2.逻辑模块2.程序系统结构2.1.程序划分序号模块名称主要功能1图形模块提供编辑地图的设计窗口2逻辑模块根据窗口中的地图设计生成地图文件3.图形模块3.1.需求概述第一阶段的主要功能是实现地图编辑器的编辑窗口3.2.功能描述提供一个编辑窗口,进行地图的编辑,编辑窗口上方有一个菜单栏,可以选择菜单栏中的菜单项使用各功能。可以新建地图、载入图元、生成地图文件、编辑或者删除、生成单元格等。如下图所示:地图编辑器示意图3.2.1.主要使用类描述包名类说明com.xzh.mapeditorMapEditor.java生成窗口的主体结构com.xzh.mapeditorLineDialog.java生成网格时弹出的对话框com.xzh.mapeditorEditPanel.java设置每个窗口的背景划线3.2.2.程序实现MapEditor.java类:initMenu方法:加载菜单,设置编辑模式选项组initLayout方法:设置主界面布局,设置滚动条最大、最小刻度,设置监听器。EditPanel类:paint方法:设置窗口背景,划网格线LineDialog类:initPane方法:初始化对话框中显示的内容actionPerformed方法:对点击事件进行处理3.2.3.其他说明显示模块是使用java中的Swing实现的,主要有一个编辑窗口和一个显示窗口。显示窗口显示地图中的图片元素,编辑窗口可以编辑地图。4.逻辑模块4.1.需求概述逻辑模块主要处理显示把图片元素添加到编辑窗口指定位置,读取图片元素和生成地图文件等。4.2.主要使用类描述包名类说明com.xzh.mapeditorMapEditor.java生成窗口的主体结构4.3.程序实现MapEditor类:onOpenElement方法:从工程中的res目录下读取图片文件,把图片加载到显示窗口。onLoadElement方法:从element文件夹下读取配置文件,根据配置问价加载图片。onMapFormat方法:地图格式另存onSaveDialog方法:弹出保存地图文件对话框onMapSave方法:保存地图文件mouseClicked方法:获取鼠标点击事件,根据点击事件位置,放置图片addLabel方法:添加图片坐标和图片类型到List中。checkMain方法:判断是主图元还是依附图元checkPaste方法:判断两张图是否可以贴到一起showActiveLabel方法:显示当前editpane部分需要显示的labelrestoreTempMap方法:未存储就退出,默认存储为temp4.4.其他说明地图文件中的信息存储格式为:x,y,t,l&x,y,t;x,y,t;#x,y,t,l。地图存储时,主要以x轴为主线,先存储在x轴上坐标不会重叠的图元作为x轴的主图元,在NinjaAdventure游戏中我们采用桥面和吊杆图元作为主图元;而另外的道具、桥墩、npc等,我们都根据其x轴坐标将其依附于主图元存储,将其存储在主图元后面,依附的主要根据是与主图元在x轴坐标上重叠或距离远近。在存储格式中,x、y主要代表图元的x轴与y轴的坐标,t代表图元种类(用了什么图),l代表主图元长度,‘&’的含义是主图元与依附图元的区分间隔符,‘;’的含义是依附图元之间的间隔符(一个主图元可能有多个依附图元,如一段桥上即有道具又有npc),‘#’代表两个主图元之间的间隔符。下面是一段地图数据的示例: