第 1 页 共 9 页
一、实验目的
拼图游戏
实验报告
第 2 页 共 9 页
1、通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用
能力、实际分析问题能力及编程能力,养成良好的编程习惯。
2、通过实践进一步领会程序设计的特点和应用,提高运用 C++ 以及面向对象知识解决
实际问题的能力,初步掌握 MFC 变成的基本功能。
3、通过实践掌握用 C++ 编写面向对象的实用程序的设计方法,对面向对象方法和思想
增加感性的认识;学会利用 C++程序设计语言编写出一些短小、可靠的 Windows 实用程序,
切实提高面向对象的程序设计能力,为后续的相关课程的学习打下基础。
二、小组分工
为了发挥组内同学的各自特长,我们小组分工如下:
1、苏嘉彬——前期进行系统需求分析,系统结构设计,完成拼图界面的设计工作,
后期完成课程设计报告
2、嵇鹏飞(组长)——完成主要程序的编写工作(图形分割、存储、拼图)
3、依代吐力·艾尼——搜集资料,完成计时器的设计工作,软件接口的设计及测
试
三、程序设计思路
1、初步方案讨论
拼图游戏是同学们喜欢的益智游戏之一,带着浓厚的兴趣,我们选择拼图游戏设计
作为我们小组本次 MFC 课程设计的课题。在讨论中,有的同学希望用单文档(SDI)
的形式完成本次设计,有的同学则偏向于用对话框(Dialogue)的形式,最终我们小组
讨论决定最终的设计采用对话框形式实现拼图功能。
2、方案变更、疑难解决
(1)最初我们决定采用对话框形式来实现拼图的基本功能,但是在实施过程中出
现了几次很严重的错误:Debug Assertion Failed,缺少 ivewers.dll 文件等等,在最后的
尝试中我们发现如果采用单文档(SDI)形式写拼图的话,可以实现最基本的功能,因
此我们最终决定使用单文档来完成该课程设计。
(2)一开始我们讨论决定采用的方式是将位图读入后再进行图片的分割,而在实
际的操作过程中由于图片的分割有一定的困难,因此我们最后采用的方式是将位图进行
分割完毕后再逐个用 Brush 在指定位置上进行绘画,实现图形的分割。
3、系统需求分析
(1)系统功能
简单的拼图游戏应该有拼图、计时、判断拼图成功、游戏者用时统计排名等功能,
拼图内部还应该有难度选择、相邻拼图块自动拼图等功能。图 1 所示是拼图游戏的用例
图,表明拼图游戏的主要功能。
(
Player
拼图
判断拼图成功
游戏用时排名
相邻拼图块
自动拼图
计时
图 1
难度选择
第 3 页 共 9 页
2)对象识别
数据成员:
所属类
变 量 类
型
变量名
用途
CBitmap
m_pBMP
保存位图
POINT
m_ptMousePos
鼠标位置
long
m_ImgHPixel
图片垂直象素数
long
m_ImgVPixel
图片水平象素数
long
m_nPatchWidth
水平和垂直格数
POINT
m_ptActiveBlockpos
活动块的位置
CDC
m_pDC
进行位图操作的 DC
CPlacePcture
POINT
m_ptActiveBlockOldPos
原位置
bool
m_Advan
是否自定义图片
UINT
m_nDifficulty
难度等级
CMosaicView
int
m_picture
图片选择
(3)类关系图及类成员
CMosaicApp :拼图游戏线程,应用程序
CMosaicDoc :拼图文档类
CAboutDlg :一个 About 对话框
CMainFrame :单文档主要框架、计时器
CMosaicView :控制游戏的开始、结束,难度的选择、底图的选取
CPlacePicture :存放图形坐标、判断拼图成功与否