资源描述
软件详细设计说明书拟制:邓校新日期:2012/11/27审核: 邹卓威日期:2012/11/29核准: 邹卓威、邓校新日期:2012/12/02签发: 庞雄文日期:文档版本:V-1.0文件修改记录修改日期版本修改页码、章节、条款修改描述作者目 录1 目的52 代码框架描述5功能性需求:5目录结构:52.2 源文件说明73 数据结构83.1 数据结构定义83.2 公共头文件104 子模块1(闯关)105.子模块2(地图编辑) 通过鼠标的拖动与释放绘制远见,截面如下11软件详细设计说明书关键词: 推箱子小游戏 地图编辑器摘 要: 本项目是推箱子小游戏。该游戏基于Windows平台,运行于Windows 7操作系统。除了具备一般的推箱子游戏的功能外,用户可以自行编辑关卡地图。游戏者可以通过选择关卡选择相应的地图进行加载,并且进行游戏。参考资料:1. Windows 程序设计(第2版) 王艳平 (作者), 张铮 (作者) 人民邮电出版社2. MFC Windows程序设计(第2版)(修订版) 帕罗赛斯 (作者) 清华大学出版社3. Windows核心编程(第5版) 杰夫瑞 (Jeffrey Richter) (作者), 克里斯托夫 (Christophe Nasarre) (作者), 葛子昂 (译者), 周靖 (译者), 廖敏 (译者) 清华大学出版社4. GDI+图形程序设计 钱德 (Chand Mahesh) (作者), 韩江 (译者) 电子工业出版社5. 用户界面设计:有效的人机交互策略(第5版) 施耐德曼(Ben Shneiderman) (作者), 普莱萨特(Catherine Plaisant) (作者), 李健利 (合著者), 张国印 (译者), 汪滨琦 (译者), 等 (译者) 电子工业出版社6. Photoshop CS5中文版完全学习手册(超值版) 毛小平 (作者), 尹小港 (作者) 人民邮电出版社1 目的编写这份软件需求说明书的目的,指出预期的读者。软件需求说明书的作用在于便于用户、开发人员进行理解和交流,反映出用户问题的结构,可以作为软件开发工作的基础和依据,并作为确认测试和验收的依据。2 代码框架描述功能性需求:选关功能:选择需要进行的关卡。加载地图:加载关卡对应的地图。闯关功能:用户控制小人物进行推箱子游戏。编辑地图:用户开启地图编辑器进行地图绘制。保存地图:用户保存所绘制的地图。目录结构:(说明系统源代码文件存放的目录、子目录,及其包含的文件列表。如下:)目录名称目录说明包含源文件列表PushBox推箱子工程文件夹BoxMan.cppBoxMan.hHelpDlg.cppHelpDlg.hLoadMapDlg.cppLoadMapDlg.hMainFrm.cppMainFrm.hPushBox.cppPushBox.hPushBoxDoc.cppPushBoxDoc.hPushBoxView.cppPushBoxView.hPushBoxWnd.cppPushBoxWnd.hresource.hStdAfx.cppStdAfx.hPushBox/Debug游戏源程序编译连接后的目标文件以及可执行程序 BoxMan.objHelpDlg.objLoadMapDlg.objPushBox.exePusBox.objPushBox_Edit.objPushBosWnd.objStdAfx.objPushBox/Res游戏的资源文件目录Box.,icohelp.bmpicon1.icoPushBox.icoPushBox.rc2PushBox_Editor地图编辑器的工程MainFrm.cppMainFrm.hMissionLevelDlg.cppMissionLevelDlg.hPushBox_Edit.cppPushBox_Edit.hPushBox_Editor.cppPushBox_Editor.hPushBox_EditorDoc.cppPushBox_EditorDoc.hPushBox_EditorView.cppPushBox_EditorView.hPushBox_EditorWnd.cppPushBox_EditorWnd.hResource.hStdAfx.cppStdAfx.hPushBox_Editor/Debug地图编辑器源程序编译连接后的目标文件以及可执行程序MissionLevelDlg.objPushBox_Edit.objPushBox_Editor.exePushBox_Editor.objPushBox_Editor.resPushBox_EditorWnd.objStdAfx.objPushBox_Editor/Res地图编辑器用到的资源文件Box.icoico00001.icoico00002.icoico00003.icoico00004.icoico00005.icoicon_bac.icoicon1.icoPUSH_BOX_EDITOR.png2.2 源文件说明下表格式对系统包含的源代码文件进行大致说明: 源文件名称文件描述子模块1 推箱子游戏BoxMan.cpp类CBoxMan的实现BoxMan.h类CBoxMan的定义HelpDlg.cpp类CHelpDlg的实现HelpDlg.h类CHelpDlg的定义LoadMapDlg.cpp类CLoadMapDlg的实现LoadMapDlg.h类CLoadMapDlg的定义PushBox.cpp类CPushBoxApp的实现PushBox.h类CPushBoxApp的定义PushBox.rc资源文件PushBox_Edit.cpp类CPush_Edit的实现PushBoxWnd.cpp类CPushBoxWnd的实现PushBoxWnd.h类CPushBoxWnd的定义StdAfx.cpp预编译文件StdAfx.h于编译头文件Resource.h资源头文件子模块2 地图编辑器MissionLevelDlg.cpp类CMissionLevelDlg的实现MissionLevelDlg.h类CMissionLevelDlg的定义PushBox_Edit.cpp类CPushBox_Edit的实现PushBox_Edit.h类CPushBox_Edit的定义PushBox_Editor.cpp类CPushBox_EditorApp的实现PushBox_Editor.h类CPushBox_EditorApp的定义PushBox_EditorWnd.cpp类CPushBox_EditorWnd的实现PushBox_EditorWnd.h类CPushBox_EditorWnd的定义StdAfx.cpp预编译文件StdAfx.h预编译头文件PushBox_Editor.rc资源文件Recource.h资源头文件(注:“目录结构”和“源文件说明”表格在详细设计后期和编码阶段都可能被修改。) 3 数据结构3.1 数据结构定义宏:#define MAP_BACKGROUND 48 #define MAP_WALL 49 #define MAP_PATH 50 #define MAP_DESTINATION 51 #define MAP_BOX 52 #define MAP_SET 53 #define MAP_MAN_IN_PATH 54 #define MAP_MAN_IN_DESTINATION #define M_TAB_WIDTH 20 / 横向方块数目#define M_TAB_HEIGHT 20 / 纵向方块数目全局变量:extern int MAP_WIDTH; /= 16;extern int MAP_HEIGHT; / = 14;extern int MAP_SMALL_SQUARE_SIZE; / = 30;主要功能类:CBoxMan属性:int m_iMissionNum; /关卡编号char m_cMapM_TAB_WIDTHM_TAB_HEIGHT; /方块矩阵CPoint m_ptManPosition; /小人物的位置方法:int LoadMaxMissionNum(void); /加载最大的关卡编号void KeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); /按键处理CPoint GetManPosition(); /获取小人物的位置int GetNowMissionNum(void); /获取目前的关卡编号BOOL ChangeMissionNum(int iNum); /检测关卡编号是否有变void DrawSet(int x,int y,CDC* pDC); /绘制已放到目的地的箱子void DrawDestination(int x,int y,CDC* pDC); /绘制目的地void DrawManInPath(int x,int y,CDC* pDC); /绘制通道上的小人物void DrawManInDestination(int x,int y,CDC* pDC); /绘制在目的地的小人物void DrawBox(int x,int y,CDC* pDC); /绘制箱子void DrawPath(int x,int y,CDC* pDC); /绘制通道void DrawWall(int x,int y,CDC* pDC); /绘制围墙void DrawBackGround(int x,int y,CDC *pDC); /绘制背景void DrawGameArea(CDC *pDC); /绘制游戏区域bool IsFinish(); /检测是否闯关成功void UpdateMap(int x1,int y1,int x2,int y2,int x3,int y3); /更新地图void DispatchMsg(UINT nChar); /检测并处理按键void LoadMap(int iMissionNum); /加载地图CBoxMan(); /构造函数virtual CBoxMan(); /析构函数CPushBox_Edit属性:int m_iMissionNum; /关卡编号char m_cMapM_TAB_WIDTHM_TAB_HEIGHT; /方块矩阵CPoint m_ptManPosition; /小人物的位置方法:bool IsFinish(); /是否完成地图绘制void ClearMap(void); /清理已绘制的地图void SaveMap(void); /保存地图void DrawMouseCursor(int x,int y,int iState,CDC *pDC); /处理鼠标拖动void ChangeMap(int x,int y,int iState); /更换地图BOOL ChangeMissionNum(int iNUM); /更换关卡数int GetNowMissionNum(void); /获取当前关卡CPushBox_Edit(); /构造函数virtual CPushBox_Edit(); /析构函数void DrawMap(CDC* pDC); /绘制地图void LoadMap(int iMissionNum); /加载地图void UpdateMap(int x1, int y1, int x2, int y2, int x3, int y3); /更新地图CPoint GetManPosition(); /获取小人物坐标void UpdateMap(UINT nChar); /更新地图int LoadMaxMissionNum(void); /加载地图数目void DrawManInDestination(int x,int y,CDC *pDC); /目的地上的小人物void DrawManInPath(int x,int y,CDC *pDC); /绘制通道上的小人物void DrawSet(int x,int y,CDC* pDC); /绘制目的地上的箱子void DrawBox(int x,int y,CDC* pDC); /绘制箱子void DrawDestination(int x,int y,CDC* pDC); /绘制目的地void DrawWall(int x,int y,CDC* pDC); /绘制围墙void DrawBackGround(int x,int y,CDC* pDC); /绘制背景void DrawPath(int x,int y,CDC* pDC); /绘制通道3.2 公共头文件BoxMan.h HelpDlg.hLoadMap.hPushBox.hPushBoxWnd.hResource.hStdAfx.hMissionLevelDlg.hPushBox_Edit.hPushBox_Editor.hPushBox_EditorWnd.h4 子模块1(闯关)游戏运行时界面如下5子模块2(地图编辑)通过鼠标的拖动与释放绘制远见,截面如下、
展开阅读全文