C++课程设计:小游戏连连看.doc_第1页
C++课程设计:小游戏连连看.doc_第2页
C++课程设计:小游戏连连看.doc_第3页
C++课程设计:小游戏连连看.doc_第4页
C++课程设计:小游戏连连看.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告 课程名称:面向对象程序设计C+ 设计题目: 小游戏连连看 专 业:计算机科学与技术2班 姓 名: 学 号: 指导教师: 李 晓 虹2016 年 1 月 1 日一系统需求分析1.1目的本说明书的目的在于明确说明系统需求,界定系统实现功能的范围,指导系统设计以及编码。1.2 功能分析每次用户选择两个图形,如果图形满足一定条件(两个图形一样,且这两个图形之间存在转弯少于3的路径),则两个图形都能消掉。给定任意具有相同图形的两个格子,我们需要寻找这两个格子之间在转弯最少的情况下,经过格子数目最少的路径。如果这个最优路径的转弯数目少于3 ,则这两个格子可以消去。将界面中相同的图片消去,游戏限时1000秒,如果在规定的时间内没有完成,就会跳出对话框“笨蛋!游戏时间到!GAME OVER !”的字样。如果玩家赢了这局,还没有过瘾的话,可以单击“再来一局”。判断游戏是否结束。如果所有图形全部消去,或者游戏玩家不可能再消去任意两个格子的时候,游戏应该结束。后一种情况,我们称之为“死锁”。在死锁的情况下,我们也可以暂时不终止游戏,而是随机打乱局面,使得打破“死锁”局面。不管怎样,我们需要判别游戏当前状态是否为“死锁”状态。我们首先思考问题:怎么判断两个图形能否相消?前面分析中,我们已经知道,两个图形能够相消,当且仅当这两个图形相同,且它们之间存在路径转弯数目小于3。因此,我们主要需要解决的问题还是,怎样求出相同图形之间的最短路径?这个最短的路径,我们首先需要保证转弯数目最少。在转弯数目最少的情况下,经过的格子数目要尽可能地少。在经典的最短路问题中,我们需要求出经过格子数目最少的路径。而这里,要保证转弯数目最少,需要把最短路问题的目标函数修改为从一个点到另一个点的转弯次数。虽然,目标函数修改了,但算法的框架仍然可以保持不变。广度优先搜索是解决经典最短路问题的一个思路。我们看看在新的目标函数(转弯数目最少)下,如何用广度优先搜索来解决图形A(x1,y1)和图形B(x2,y2)之间的最短路问题。1.3 流程图:如图1-1所示 图1-1 系统流程图2 总体设计2.1界面设计以小动物为图像,看起来可爱富有童趣,让玩家有更强烈的画面感,如图2-1所示。 图2-1 总体界面图2.2菜单 点击选择退出还是重新开始。 当游戏全部完成时也可以选择重新开始,当发生死锁状况,即没有小动物可以消除时,自动给出提示。三详细设计3.1课程设计目的本课程的程序设计专题实际是计算机相关专业学生学习完c+课程后,进行的一次全面的综合训练,程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。3.2 课程设计的实验环境硬件要求能运行Windows XP操作系统的微机系统。3.3 课程设计的预备知识熟悉c+语言及UltraEdit-32开发工具。3.4 课程设计要求按课程设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握c+程序设计的基本技能和面向对象的概念和方法;了解多线程、安全和网络等编程技术。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。3.5 连连看算法设计在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。* 分3种情况:(从下面的这三种情况,我们可以知道,需要三个检测,这三个检测分别检测一条直路经。这样就会有三条路经。若这三条路经上都是空按钮,那么就刚好是三种直线(两个转弯点)把两个按钮连接起来了) * 1.相邻 * 2. 若不相邻的先在第一个按钮的同行找一个空按钮。1).找到后看第二个按钮横向到这个空按钮所在的列是否有按钮。2).没有的话再看第一个按钮到与它同行的那个空按钮之间是否有按钮。3).没有的话,再从与第一个按钮同行的那个空按钮竖向到与第二个按钮的同行看是否有按钮。没有的话路经就通了,可以消了. * 3.若2失败后,再在第一个按钮的同列找一个空按钮。1).找到后看第二个按钮竖向到这个空按钮所在的行是否有按钮 2).没有的话,再看第一个按钮到与它同列的那个空按钮之间是否有按钮。3).没有的话,再从与第一个按钮同列的那个空按钮横向到与第二个按钮同列看是否有按钮。没有的话路经就通了,可以消了。* 若以上三步都失败,说明这两个按钮不可以消去。3.6类的实现方法成员变量也叫类的属性,一般带有访问控制属性的,而全局变量虽然也有类的属性,但全局变量严重影响了封装和模块化,一般的全局变量前面要加上static和 fina属性其中,static使该变量任何类都可用(方法 ClassName.全局变量名) ,而 fina则使得变量不可更改,基本上算是常量了,这也在一定程度上防止对变量的非法修改。方法名称为任何合乎语法的识别字,返回值类型是方法执行结果返回给调用者的数据类型,void表示没有返回值,参数行(parameterlist)是调用时给予的参数声明,两个以上的参数声明以逗号隔开,若没有参数则参数行为空白,调用时每一个参数对应一个参数值(argument)大括号内为方法本体,也称为方法程序模块(block),包含声明(declarations)和语句(statements),声明也可以掺杂在语句之间。一个方法不能声明在另一个方法内。4 系统调试4.1程序运行情况连连看游戏规则很简单,就是点中两个互相匹配并且可以通过不多于两个折点的折线连在一起的方块后,这两个方块就可以消掉。粗略想来,由于用户每次只能消除一对图形,即只会用到一个最短路径,但由于实现并不知道用户会选择哪一对图形,所以需要事先计算出所有可能的最短路径并保存起来。此外,采用这种方法的话似乎每次用户消去一对相同图像之后都需要重新计算出当前所有可能被连接的相同图形之间最短路径,这是因为当某些图像被消去之后可能会产生很多新路径,而我们又不能确定这些空出来的格子到底能够影响哪些路径,所以就只好都重新计算一遍。其缺点很明显就是每次消去图形动作之后重新计算所有可能的最短路径所需要消耗的时间;而该方法的优点则是可以很快地判断两个相同图形之间是否存在满足条件的最短路径。如果用户很厉害,每次都能选中可以消除的图形对,那么用这种方法浪费的时间就会相当可观,毕竟用户未选中的其他可以连接的图形对之间的最短路径都被浪费掉了;而如果用户很差劲,每轮选择的次数都远远大于当前可能的连接数量时,该方法就会比书中正文提到的方法高效。但这种情况是比较少的,因为在整个游戏中用户主要是会用眼睛“找”而不是频繁的用鼠标去“试”。所以总的来看,维护所有最短路径的方法的效率相对比较低。游戏结束后,在页面出现对话框,询问玩家是否进行下一局。4.2测试计划及分析在检验两个方块能否消掉的时候,我们要让两个方块同时满足两个条件才行,就是两者配对并且连线成功。所以,这里应该先检验配对,如果该条件不成立的话,就不要再进行连线检查了,这样可以避免很多不必要的复杂运算。当然,如果你在做这个游戏的时候,配对规则不够如此简单的话,那么就看哪个算起来麻烦就把它放在后面。本程序没有涉及到程序的异常处理,只有关于“死锁”问题,本质上还是判别两个格子是否可以消去的问题。最直接的方法就是,对于游戏中尚未消去的格子,两两都计算一下,它们是否可以消去。此外,从上面的广度优先搜索可以看出,我们每次都是扩展出起始格子A(x1,y1)能够到达的格子。也就是说,对于每一个格子,我们可以调用一次上面的扩展过程,得到所有可以到达的格子,如果这些格子中有任意一个跟起始格子的图形一致,则它们可以消去,目前游戏还不是“死锁”状态。五.总结通过这次课程设计还使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论