MFC扫雷课程设计报告.docx
- 文档编号:26224635
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:20
- 大小:292.78KB
MFC扫雷课程设计报告.docx
《MFC扫雷课程设计报告.docx》由会员分享,可在线阅读,更多相关《MFC扫雷课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
MFC扫雷课程设计报告
宿迁学院
Windows程序设计
课程考核报告
班级:
学号:
姓名:
得分:
2013年12月20日
1.设计目的及要求1
1.1设计目的及问题描述1
1.2设计要求1
1.3软件、硬件环境1
2.课程设计步骤1
3.课程设计内容1
3.1概要设计2
3.1.1程序总体框架描述2
3.1.2程序常用类声明3
3.2主要技术4
3.3系统设计结果(界面截图、操作流程)13
4.设计总结16
4.1遇到的问题及如何解决16
题目:
扫雷游戏
1.设计目的及要求1.1设计目的及问题描述
系统地学习面向对象编程思想,了解MFC架构,逐步熟悉可视化编程环境VisualC++
并在此环境下设计并实现一个简单扫雷游戏,该扫雷游戏应能实现如下功能:
(1)雷区上部左侧显示总雷数减被标明有雷区域的数目。
(2)雷区上部中间位置显示一按钮用于开局和显示鼠标动作的结果。
(3)雷区上部右侧显示扫雷的时间。
1.2设计要求
(1)能独立搭建可视化程序编程环境,掌握VisualG+6.0的安装、运行和使用。
(2)总体要求:
用面向对象编程的思想与方法,实现一个扫雷游戏的分
析与设计阶段的开发工作,开发工具使用Vsuac+a
(3)编写设计方案,设计过程,源程序文件结构,分析实验方案,并对实验做出总结。
1.3软件、硬件环境
开发工具:
MicrosoftVisualC++6.0软件和Windows2000/XP操作系统
2.课程设计内容
扫雷小游戏的开发与实现
3.课程设计步骤
步骤大致上可以分为三个部分,分别为:
画面初始、游戏者按下第一个方块和为非地雷方块时展开。
画面初始时,以游戏者最后一次设定的地雷区大小为范围画出地雷区,但此时并未产生地雷。
当游戏者按下第一个方块时产生地雷资料并启动定时器,为何在游戏者按下第一个
方块才产生地雷资料呢?
其主要的用意在于不要让游戏者第一次就踩到地雷,这样在某种程
度上可以提高游戏者游玩的气氛。
接着就是如何判断按下的方块是非地雷时的处理,这也是
整个游戏的技术核心,我们可以通过递归的观念来检查周边的方块是否含有地雷及是否继续往外翻开。
3.1概要设计
相信大多数使用Windows操作系统的使用者,对这款游戏都不陌生。
这款游戏不止操作简单,规则也不难,再加上游戏速度的控制机制得宜,让整个游戏在操作过程中充满了快
乐与紧张的气氛。
除了游乐当中能带给使用者快乐之外,游戏的设计内容无形中也不断训练
使用者的逻辑思考能力,对于依靠高度脑力工作的现代人,都可以通过这个游戏,不时的检
验一下自己,所以我们不难发现,在各种可携带的电子产品上都有这款游戏的踪影。
当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块的八
个方向将空白方块翻开。
3.1.1程序总体框架描述
扫雷游戏的开发主要包括两大部分:
一个部分是布雷,该部分主要将雷随机布置在游
戏区域内,以避免出现相同的雷区布置地图。
另一部分是扫雷,该部分包括判断鼠标左键点
击某区域该区域是否是雷,如果是雷该如何操作,如果不是雷该如何操作,鼠标右键点击某
区域时如果判断该区域是雷则加以标记,如果不是雷也加以标记,以及当鼠标双击某区域时,
判断与该区域相邻的其它8个区域是否是雷并做一个标记。
图1系统功能图
3.1.2程序常用类声明
首先定义一个雷类:
classLei243//定义一个雷类
{
public:
intweitu;//显示哪一个位图
intshumu;//这个位置相应的值};
接着是在View类添加变量和函数:
intleftnum;//剩下雷数
intleinum;//雷数
intjieshu;//结束
shortsecond;//计时
intsecondstart;//开始计时
CBitmapm_Bitmap[12];//位图数组
CBitmapm_anniu[4];//按扭位图数组
intm_RowCount;//intm_ColCount;//Lei243lei[50][50];//
voidleizero();//
雷区行数
雷区列数
最大雷区
这个位置周围雷数为0
鼠标按下左键
鼠标左键抬起
鼠标按下右键
afx_msgintOnCreate(LPCREATESTRUCTlpCreateStruct);afx_msgvoidOnLButtonDown(UINTnFlags,CPointpoint);//afx_msgvoidOnLButtonUp(UINTnFlags,CPointpoint);//afx_msgvoidOnRButtonDown(UINTnFlags,CPointpoint);//afx_msgvoidOnTimer(UINTnIDEvent);//计时器函数
afx_msgvoidOnStart();//开始函数
3.2主要技术
构造函数:
由于构造函数是程序运行时就执行的,所以,除了对变量赋值之外,游戏的核心结构即内部数组赋值:
先是把全部格子的位图和雷数赋值为机函数按指定雷数赋值为-1,最后把不是雷的格子的雷数赋值为相应的值。
我们还可以把
0,然后调用随
CMy243ztyslView:
:
CMy243ztyslView()
{
//TODO:
addconstructioncodehere
for(intii=0;ii<16;ii++)
m_Bitmap[ii].LoadBitmap(IDB_BITMAP14+ii);
for(intjj=0;jj<4;jj++)
m_anniu[jj].LoadBitmap(IDB_ANNIU1+jj)
second=0;//计时
secondstart=0;//1m_RowCount=25;//m_ColCount=16;//leinum=80;//leftnum=leinum;//jieshu=0;//jieshu=1
intaa=0;
时开始计时
行数
列数
雷数
剩余雷数
时停止
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 扫雷 课程设计 报告