logo资料库

C++课程设计 扫雷.doc

第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
资料共18页,剩余部分请下载后查看
第1章 课程设计目的与要求
1.1 设计目的
1.2实验环境
1.3预备知识
1.4设计要求
第2章 课程设计内容
2.1 课题描述
2.2 系统设计
2.2.1功能分析
2.2.2面向对象设计
2.2.2类成员描述
2.3程序实现
2.3.1源码分析
2.3.2运行结果
第3章 课程设计总结
参考文献
辽 宁 工 业 大 学 《C++语言程序设计》课程设计(论文) 题目: 扫雷 院(系): 软 件 学 院 专业班级: 软件工程 111 班 学 号: 学生姓名: 指导教师: 翟宝峰 教师职称: 副教授 起止时间:2011.12.12-2011.12.25
课程设计(论文)任务及评语 院(系):软件学院 教研室:软件教研室 学 号 课程设计 (论文) 题目 学生姓名 专业班级 软件工程 166 班 扫雷 程序设计的任务与要求: (1).掌握面向对象程序设计语言 C++的基本语法 (2).掌握 C++面向对象设计的思想 (3).掌握 VC++6.0 与 DEV C++ 开发工具的使用 (4). 运用标准 C++规范设计应用程序 设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。 正确地完成上述内容,规范完整地撰写出设计报告。 课 程 设 计 ( 论 文 ) 任 务 指 导 教 师 评 语 及 成 绩 成绩: 指导教师签字: 年 月 日
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 目 录 第 1 章 课程设计目的与要求 ................................................... 1 1.1 设计目的 ............................................................ 1 1.2 实验环境 ............................................................ 1 1.3 预备知识 ............................................................ 1 1.4 设计要求 ............................................................ 1 第 2 章 课程设计内容 ......................................................... 2 2.1 课题描述 ............................................................ 2 2.2 系统设计 ............................................................ 2 2.2.1 功能分析 ...................................................... 2 2.2.2 面向对象设计 .................................................. 3 2.2.2 类成员描述 .................................................... 5 2.3 程序实现 ............................................................ 9 2.3.1 源码分析 ...................................................... 9 2.3.2 运行结果 ..................................................... 13 第 3 章 课程设计总结 ........................................................ 14 参考文献 ................................................................... 15
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第 1 章 课程设计目的与要求 1.1 设计目的 将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据 结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。 通过课程设计,学生在下述各方面的能力应该得到锻炼: (1)进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系 实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的 最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用 C++语言编写调试应用系统程序,训 练独立开发应用系统,进行数据处理的综合能力。 (4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象程序设计的方法。 (6)熟练掌握 C++语言的基本语法,灵活运用各种数据类型。 (7)进一步掌握在集成环境下如何调试程序和修改程序。 1.2 实验环境 硬件要求能运行 Windows 操作系统的微机系统。C++语言应用程序开发软件使用: VC++ 系统,或其他 C++语言应用程序开发软件。 1.3 预备知识 熟悉 C++语言程序设计的基本知识及 VC++编辑器的使用方法。 1.4 设计要求 1.仔细分析设计题目,画出程序流程图,编写程序源代码。 2.积极上机调试源程序,增强编程技巧与调程能力。 3.认真书写课程设计预习报告,课程设计说明书。 4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成 课程设计内容。 1
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 第 2 章 课程设计内容 2.1 课题描述 扫雷最原始的版本可以追溯到 1973 年一款名为“方块”的游戏。不久之后,“方块” 被改写成了游戏 Rlogic。在 Rlogic 里,玩家的任务是作为美国海军陆战队队员,为指 挥中心探出一条没有地雷的安全路线,如果路全被地雷堵死就算输。两年后,汤姆·安 德森在 Rlogic 的基础上又编写出了游戏地雷,由此奠定了现代扫雷游戏的雏形。1981 年,微软公司的罗伯特和卡特两位工程师在 Windows 3.1 系统上加载了该游戏,扫雷游 戏才正式在全世界推广开来。 本课程设计实现类似于 Windows 操作系统自带的扫雷游戏。在课程设计中,系统开 发平台为 Windows XP,程序设计语言采用 Visual C++,程序运行平台为 Windows 2000/XP。 在程序设计中,把整个雷区看成一个二维数组,把雷方块定义为具有所在雷区二维数组 的行和列、当前状态、方块属性、历史状态的结构体。整个游戏程序包括了布雷、扫雷 过程和结果三个阶段,在处理鼠标响应事件中伴随着 GDI 绘图。程序通过调试运行,实 现了设计目标,能够同时满足扫雷游戏初学者和高手的需要。 2.2 系统设计 2.2.1 功能分析 本章的课程设计使用 C++语言编写一个与其类似的扫雷游戏。具体要求如下: (1)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何 一个方块便启动计时器。 (2)用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所 揭方块下无雷,则显示一个数字,该数字代表方块的周围的 8 个方块中共有多少颗雷。 (3)如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷 的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确), 程序将显示的剩余雷数减少一个。 (4)扫雷胜利后,显示游戏胜利,失败后显示再来一局。 (5)用户可以改变游戏界面的颜色外观。 (6)游戏中用户可以通过菜单重新开始新游戏。 2
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 2.2.2 面向对象设计 1.类的设计 本程序设计了 CMineWnd 类、CDlgCustom 类、bomb 类、cview 类、CDlgHero 类、 CDlgNewRecord 类等。 CMineWnd 类作用:用于扫雷开始运行等操作。 cbombview 类作用:扫雷工作补充。 bomb 类作用:封装每颗雷的相关属性。 cview 类作用:完成扫雷的大部分工作。 CDlgHero 类作用:等级英雄榜。 CDlgNewRecord 类作用:重新开始新的游戏。 基类为 CMineWnd 类、bomb 类、cview 类。 派生类 CDlgHero 类由 CDialog 应用程序类继承,cbombview 类由 cview 类继承。 (1)定义类 bomb,封装每颗雷的相关属性。 class bomb { public: int isbomb;//决定初始时是否是雷 bool issel; //判断区域是否被处理过且周围有雷 bool isdone;//判断递归时是否被处理过 int num; //周围雷数 bool findbomb; //排雷者认为是雷时置一(但是不一定真是雷) } ; (2)重载 cmainframe 中 precreatewindow,并设置相应属性,使其窗体大小固定,这样 就固定了显示区域的大小为初始 10 乘 10 个雷和外加雷区上部的控制区域,部分代码如下 cs.style=ws_overlapped|ws_sysmenu| ws_border|ws_minimizebox; cs.cy = 10*15+6; cs.cx = 10*15+60; //6 和 60 分别是横纵的附加值,用于边框、菜单、标题条、控制区 域。 (3)重载 cbombview 中 oncreate 函数创建位图按钮,该位图按钮的两幅位图对应了 正常、雷正确两种状态,当要显示被炸死的状态时应动态销毁该按钮,并重新创建一位图对 应正常和被炸死两种状态,将该位图按钮的 id 号定为 id_game_begin,这样一来当点击按钮 时便可重新开始游戏,部分代码如下。 crect rcclient; getclientrect(&rcclient); 3
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) crect rect(rcclient.cx/2-8,10,rcclient.cx/2+8,20); m_button.create("new",bs_defpushbutton|ws_visible| bs_ownerdraw,rect,this,id_game_begin); m_button.loadbitmaps(idb_face1, idb_face2); 2.UML 类图 CMineWnd -CMineApp: int -CMineWnd: int -ExitInstance: int -InitInstance: BOOL +CMineWnd():virtual +ResetRecord():void +SetCustom():void +LookUp(CData & data): int +InitGame():void +LoadBitmap():void +FreeMines():void +LayMines(UINT row, UINT col):void bomb -isbomb:int -issel:bool -isdone:bool CDlgHero -findbomb:bool -num:intint +DrawShell(CPaintDC &dc):void +DrawButton(CPaintDC &dc):void +SetBHolder(CString holder) +SetBRecord(UINT record):void +SetIHolder(CString holder) 图 2.1 扫雷游戏程序的 UML 类图 4
辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文) 3.系统总体流程图 开始 开始 依照使用者初始设定 否 等待按键 否 左 键 是 右键 是 第一次按下方块 显示方块 计时器 否 时间到 是 延 按 下 方 块 周 围 展 开 非 地 雷 方块 否 1. 布置地雷 2. 启动计时器 按下方块是否 为地雷 是 显示分数 是 否 再玩 否 结 结束 2.2.2 类成员描述 图 2.2 系统总体流程图 1.程序编程中用到的类函数简单介绍: CchildView:其中定义了 Drawboard——对扫雷棋盘进行了绘制 Drawbutton——将资源类中存有的脸的图片进行裁减选择加入到规定位置。 5
分享到:
收藏