湖南涉外经济学院
扫 雷 游 戏
课程设计报告
学 院: | 信息科学与工程学院 |
专业名称: | 计算机科学与技术 |
课程名称: | 程序设计实训 |
设计题目: | 扫雷游戏 |
学生姓名: | 唐 杰 |
指导教师: | 邹 竞 |
时 间: | 2012年12月 |
摘 要
在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活不可或缺的一部分,越来越多的人使用计算机办公、娱乐、购物等等。游戏行业发展一日千里,该行业极大的影响和改变了人们的生活和娱乐方式,游戏为消费者提供丰富多彩的虚拟空间,使消费者可以自由自在的享受虚拟世界的乐趣,实现自己在现实生活着那个可能永远不能实现的梦想,满足了消费者的心理和精神需求。
扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法设计和语言实现,如C,C++,VB,JAVA等。我利用Microsoft Visual C++ 6.0编写了与它功能相似的扫雷游戏,寓学于乐。
程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时提示游戏失败。其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了进行该游戏课程设计的目的,然后是任务描述和设计的相关要求,最后是最重要的需求分析和设计方案。重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解用户的意图,进而做出相对应的动作。清除未靠近地雷区的方块较为复杂。
关键词:扫雷游戏;算法设计;事件;Microsoft Visual C++ 6.0模块化设计的目的
目 录
摘 要 I
一、课程设计目的 1
二、课程设计题目任务描述和要求 2
2.1 任务描述 2
2.2 设计要求 3
三、需求分析 4
3.1功能描述 4
3.2功能需求 5
3.3 功能模块 6
3.4系统需求分析总结 6
四、设计方案 7
4.1 总体设计 7
4.1.1 系统基本功能 7
4.1.2 系统流程 8
4.1.3 主要功能模块 9
4.2 详细设计 10
4.2.1部分功能函数定义 10
4.2.2运行界面分析 16
五、心得体会 19
六、参考资料 20
一、课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是对本课程学习后进行的一次全面而综合的练习,也为后续各门计算机课程的学习和毕业设计打下基础。本次课程设计的目的主要有:
(1)巩固和加深学生对C和C++语言的基本知识的理解与掌握;
(2)掌握C和C++语言编程和调试的基本技能;
(3)运用C和C++语言对程序的简单设计;
(4)让学生掌握较为简单的算法分析能力;
(5)提高与运用C和C++语言解决能实际问题的能力。
(6)更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。
(7)对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力进行考核。
(8)培养综合运用所学知识独立完成课题的能力。
(9)掌握程序设计说明文档的能力与技巧;
二、课程设计题目任务描述和要求
2.1 任务描述
随着人们工作压力变得越来越大,现如今更多的人开始通过玩游戏来排解内心的压力,而各种各样的游戏也排入市场,一些大型网络游戏更是一些年轻用户的最爱,所有扫雷游戏面对市场的竞争压力还是非常大的。
分析Windows系统自带的扫雷游戏,查规则并对主要功能进行模仿程序实现,对于实现过程中出现的bug进行调试解决。
经过对游戏的初步分析,扫雷游戏含有如下规则:
根据用户执行的鼠标事件,做出相应的挖雷操作,插旗、疑问标记、自动蔓延开挖等。挖雷过程由计时器计时,由一个计数器统计插旗后雷的剩余个数。如果选择了标记功能,那么单击右键会依次对未知点进行插旗,标记,取消插旗与标记。如果点击到了未插旗子的雷区,
如果是雷,则判定游戏失败,之后对雷区的点击进行屏蔽,不予响应。如果是疑问标记则像正常区域对待。如何判断胜利,如果所有的雷都被插旗或者点击后剩余的雷区。
具体任务如下:
(1)需要为Windows操作系统的用户设计完成一款扫雷游戏,这是一个根据某种算法自动布雷,有用户扫雷的小软件;
(2)本游戏在难度设置上,分为初、中、高三个难度等级,三个等级的雷数不同;
(3)本游戏由每个学生单独完成,完成时间大概7周时间,开发成本低,易于完成;
(4)设计过程中,前两周,对整个游戏所实现的功能进行详细的设计以及对存在的问题及解决办法进行最终确定;3-5周完成游戏的程序编写,并优化;最后两周,写出设计本游戏的详细文档说明,并作课程设计汇报。
整个扫雷游戏课程设计实现流程图如图2-1所示:
图2-1 课程实现流程图
图2-1清晰明了的描述了整个课程设计的实现流程。前期工作是制定规则和设计算法,这一阶段主要任务是搜集相关资料,然后根据搜集到的资料结合自己所学知识制定系统实现算法;中期工作是算法实现和调试系统,这一阶段主要任务是完成算法的实现,然后进行调试和优化系统;后期工作是对数据结果进行分析,然后完成课程设计报告。
2.2 设计要求
(1)系统需求分析,对系统的各种功能需要进行总结;
(2)采用结构化、模块化程序设计方法设计;
(3)理解扫雷玩法的特点,并分析玩法的实现功能
(4)设计雷区和非雷区的判断算法。
(5)进行概念设计和逻辑结构设计,以便使系统实现进展顺利;
(6)进行详细的设计方案,包括总体设计和详细设计,这包括程序设计代码的分析和系统运行界面截图的分析;
(7)要求人机交互性较强;界面较美观;
(8)设计方案和执行结果的分析总结。
三、需求分析
需求分析的主要任务即详细的出程序所需要的各种功能实现,是对系统功能进一步分析和
抽象,以确定系统应当做什么的问题,从而完成系统的逻辑设计。本程序为扫雷游戏的实现,首先是要实现扫雷游戏的基本功能,根据扫雷游戏的玩法,设计程序,实现程序功能。本系统需求分析分为四个部分:功能描述、功能需求、功能模块和系统需求分析报告。
3.1功能描述
按功能将游戏区域分成两个区域:雷区和提示区。提示区包括计雷器、计时器和一个笑脸的按键操作。游戏过程中,当用户用鼠标点击相应的方块,程序就会作出相应的鼠标事件,而鼠标事件的处理都是由扫雷程序实现的。
游戏开始时,系统会在雷区的某些小方块中随机布下若干个地雷。安放地雷的方块称为雷方块,其他的称为非雷方块。布完雷后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块中有多少个雷。用户可以根据这些数字判断是否可以打开某些方块,并把认为有地雷的方块标识地图。如果某个数字方块周围的地雷全都标记完,可以单击鼠标左键,将其周围剩下的方块挖开。
如果数字周围地雷没有全部标记,在同时单击鼠标左右键时,其他隐藏或未标记的方块将被
按下一次。当用户将所有地雷挖出后,其余的非雷方块区域都已打开,此时游戏胜利。在游戏过程中,一旦错误地打开了雷方块则游戏失败,游戏结束;当用户标识的地雷数超过程序设定,虽然打开了全部其余方块,游戏仍然不会结束。
游戏中相关图例下三图所示
图3-1数字和地雷标识 图3-2提示器数字 图3-3表情变化
图3-1是数字和地雷标识。数字1到8表示在此数字周围的八个方向有多少个地雷;是地雷表示,右击小方块即标识地雷;表示不确定是否为地雷,两次右击小方块;表示踩到了地雷,游戏结束;表示标识错地雷,即不是地雷的小方块插上了地图标识;表示游戏结束时,显示有地雷的小方块。是雷区凸起的小方块,即没有展开的雷区;是雷区的凹下的小方块,其周围没有地雷。
图3-2 是提示器数字标识,用于提示区计时器和计雷器的数字变化。
图3-3 是游戏过程中提示区表情按钮的状态。(凸起的笑脸)是游戏初始化状态下的表情,即游戏开始前的状态; 是游戏胜利时的表情,替代凸起的笑脸; 是踩到了地雷,游戏结束时的表情状态; 是单击左键按下和左右键同时按下时的表情,即用户没有完成一次鼠标事件时的状态;(凹下的笑脸)是游戏中的表情,游戏没有结束。
3.2功能需求
(1)本游戏结构较为简单,设置三个难度等级为:初级(9*9,10个雷)、中级(16*16,40个雷)、高级(16*30,99个雷);
(2)提示区左侧显示总雷数,并减去被标明有雷区域的数目;
(3)提示区中间位置显示笑脸按钮用于开局和显示鼠标动作的结果;
(4)提示区右侧显示扫雷所用的时间;
(5)单击鼠标左键于未知区域,如果未知区域有雷,游戏结束,显示所有的地雷;如果没有雷,则显示周围雷数,如果周围没雷,则再查看周围八个区域是否有雷直到有雷为止,并显示周围雷的数目;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论