九宫格拼图游戏Word格式文档下载.docx
《九宫格拼图游戏Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《九宫格拼图游戏Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
按照常规考试方式,不能体现本课程“以理论为基础,侧重实践和应用”的特点,也不能考查学生理解本课程知识的程度以及所培养具备的MFC程序设计应用能力。
3.任务和要求:
针对某一综合应用项目,完成如下任务:
(1)简要的需求分析
(2)规划系统主要功能及其结构。
(3)完成各项系统功能的设计。
(4)形成项目文档和开发报告。
4.工具与环境:
设计工具:
VisualStudio
二、进度安排:
第1周:
基础知识串联复习
第2周:
撰写设计报告,并按时递交。
第3周:
实现系统各模块功能功能
第一部分设计方案论述
2.1项目方案论述
2.1.1具体论述
1.CMenu*GetSubMenu(intnPos)若弹出菜单位于指定的位置,则返回CMenu对象的指针,其中CMenu对象要包含弹出菜单的句柄;
否则返回NULL。
如果CMenu对象不存在,那么将创建临时CMenu对象,但返回的CMenu指针不应被存储。
nPos指定包含在菜单中的弹出菜单的位置。
对于第一个菜单项,开始位置值为0。
2.BOOLAppendMenu(UINTnFlags,UINTnIDNewItem=0,LPCTSTRlpszNewItem=NULL)在末尾添加一项,若nFlags为MF_SEPARATOR表示增加一个分隔条,这样其他两个参数将会被忽略;
若nFlag为MF_STRING表示添加一个菜单项。
nIDNewItem为该菜单的ID命令值;
若nIDNewItem为MF_POPUP表示添加一个弹出菜单项,这时nIDNewItem为另一菜单的句柄HMENU。
lpszNewItem为菜单文字说明。
3.BOOLInsertMenu(UINTnPosition,UINTnFlags,UINTnIDNewItem=0,
LPCTSTRlpszNewItem=NULL)用于在指定位置插入一菜单,变量nPosition指定插入位置。
如果nFlags包含MF_BYPOSITION则表明插入在nPosition位置,如果包含MF_BYCOMMAND表示插入在ID为nPosition的菜单处。
4.BOOLModifyMenu(UINTnPosition,UINTnFlags,UINTnIDNewItem=0,
LPCTSTRlpszNewItem=NULL)用于修改某一位置的菜单,如果nFlags包含MF_BYPOSITION,
则表明修改nPosition位置的菜单,如果包含MF_BYCOMMAND表示修改ID为
nPosition处的菜单。
5.BOOLRemoveMenu(UINTnPosition,UINTnFlags)用于删除某一位置的菜单。
如果nFlags包含MF_BYPOSITION则表明删除nPosition位置的菜单,如果包含MF_BYCOMMAND表示删除ID为nPosition处的菜单。
6.BOOLAppendMenu(UINTnFlags,UINTnIDNewItem,constCBitmap*pBmp)和BOOLInsertMenu(UINTnPosition,UINTnFlags,UINTnIDNewItem,constCBitmap*pBmp)可以添加位图菜单,但这样的菜单在选中时是反色显示,并不美观。
7.UINTCheckMenuItem(UINTnIDCheckItem,UINTnCheck)返回菜单项以前的状态:
MF_CHECKED或MF_UNCHECKED。
如果该菜单项不存在,那么将返回0xFFFFFFFF。
nIDCheckItem指定由nCheck确定的将要选择的菜单项。
nCheck指定是否选中菜单项,并决定菜单中各菜单项的位置。
参数nCheck可以是MF_CHECKED或MF_UNCHECKED与MF_BYPOSITION或MF_BYCOMMAND的组合。
这些标志可通过使用位与运算进行组合。
其中MF_CHECKED与MF_UNCHECKED用来进行状态转换,在菜单项之前放置默认的选中标记。
简而言之,调用一系列函数将游戏启动(初始化变量)、选择位图、加载位图、游戏模式选择(位图分割)、小块图片随机排序、静态控件显示位图等一系列操作连接起来。
2.2程序简介
2.2.1类图说明
1.主对话框类及成员函数:
2.“关于”对话框的类及成员函数:
3.图片载入的类及成员变量和函数;
4.图片分割及拼图移动类及成员函数:
5.静态网址链接类:
6.全局变量及全局函数
第二部分详细设计
2.1详细设计过程(包含关键代码及截图)
2.1.1创建初始界面
新建一个MFCAppWizard(exe)工程,将其命名为Picture,在第一步选择Dialogbased,如图3-1所示,接下来直接点Finish。
图3-1新建工程
1.游戏主窗口:
2.游戏关于窗口:
3.菜单界面:
图3-2添加菜单项
各个菜单项的ID、Caption如图3-3至3-7所示。
“重新开始”菜单项:
图3-3游戏重新开始菜单
图3-4游戏3x3菜单
图3-5游戏4x4菜单
图3-6游戏5x5菜单
3-7游戏6x6菜单
图3-7退出游戏菜单
图游戏菜单“风景”属性设置
图游戏菜单“草莓”属性设置
图游戏菜单“绿水”属性设置
图:
从计算机中载入自定义图片菜单设置
切分窗口图片是否带边框菜单设置
以上完成后,右击打开对话框的属性(Properties),将对话框的ID号设为IDD_MY_DIALOG,Caption设置为“九宫格拼图”,并为Menu属性对应的下拉框选择IDR_MENU1,如图3-8所示,这样菜单就可以在程序运行时显示在主对话框的顶部了。
图3-8拼图游戏属性
在对话框的属性中选中Minimizebox以实现对话框的最小化,如图3-9。
图3-9最小化选项
2.1.2位图的读入和显示
在程序中,需要由用户来选择游戏中使用的图片,同时还需要将整幅图片分成不同的小块。
因此,采用(Picture)Static控件作为位图的载体,分别显示图片的不同部分。
首先,需要读入位图资源。
点击菜单栏Insert->
Resource->
Bitmap->
Import,在文件类型中选中必须所有文件位图才能显示出来,在弹出的对话框里面选中所要加的位图,点击Import,完成一副位图添加。
添加完成后会弹出如图3-13的对话框。
图3-13位图添加成功
2.实现静态链接功能:
游戏资源文件构架:
图3-14添加四副位图
为对话框的“图片”菜单添加五个菜单项,如图3-15所示:
图3-15添加图片菜单项
接下来为CPictureDlg类添加一个CBitmap类型的成员变量Bitmap,如图3-16所示。
CBitmap封装了Windows图形设备接口(GDI)中的位图,并且提供了操纵位图的成员函数。
游戏对话框的函数响应
1、主对话框类函数实现定义:
图3-19游戏对话框处理函数说明
2.游戏图片切分初始化及移动函数说明:
3.图片载入内存类的函数说明:
4.关于对话框类:
5.全局函数的实现:
6.静态链接类的引用:
(可使用第三方类)
第三部分函数实现及项目测试
图3-41程序运行结果
图4-14开始游戏