基于mfc和vc60的连连看系统设计论文内容摘要:

个物件来对他们进行消除操作,直到将游戏区域中的所有方块对都被消除后为胜利,并且给予破记录后的沈阳航空工业学院北方科技学院毕业设计(论文) 7 提示功能。 对于资源的需求,图片资源必不可少,游戏中的小 方块是一组图片资源,选用两组图案和排列完全相同但是背景色不同的两组图片作为小方块的初始状态和选定状态,每张图片共 20 个人物。 为了使游戏更具娱乐性,背景音乐及音效的添加也是必不可少的,所以此游戏程序也加入了的音乐文件资源。 沈阳航空工业学院北方科技学院毕业设计(论文) 8 第 3 章 总体设计 开发工具和运行环境 开发工具 本程序采用 Microsoft Visual C++ 作为开发工具。 Visual C++是一个功能强大的可视化软件开发工具。 自 1993 年 Microsoft 公司推出 Visual C++ 后,随着其新版本的不断问世, Visual C++已成为专业程序员进行软件开发的首选工具。 虽然微软公司推出了 Visual C++.NET(Visual C++),但它的应用的很大的局限性,只适用于 Windows 2020,Windows XP 和 Windows。 所以实际中,更多的是以 Visual C++ 为平台。 Visual C++ 不仅是一个 C++编译器,而且是一个基于 Windows 操作系统的可视化集成开发环境( integrated development environment,IDE)。 Visual C++ 由许多组件组成,包括编辑器、调试器以及程序向导 AppWizard、类向导 Class Wizard 等开发工具。 这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。 Visual C++ 它大概可以分成三个主要的部分: ⑴ Developer Studio,这是一个集成开发环境,我们日常工作的 99%都是在它上面完成的,再加上它的标题赫然写着 “Microsoft Visual C++”,所以很多人理所当然的认为,那就是 Visual C++了。 其 实不然,虽然 Developer Studio 提供了一个很好的编辑器和很多 Wizard,但实际上它没有任何编译和链接程序的功能,真正完成这些工作的幕后英雄后面会介绍。 我们也知道, Developer Studio 并不是专门用于 VC 的,它也同样用于 VB, VJ, VID 等 Visual Studio 家族的其他同胞兄弟。 所以不要把Developer Studio 当成 Visual C++, 它充其量只是 Visual C++的一个壳子而已。 这一点请切记。 ⑵ MFC。 从理论上来讲, MFC 也不是专 用于 Visual C++, Borland C++,C++Builder 和 Symantec C++同样可以处理 MFC。 同时,用 Visual C++编写代码也并不意味着一定要用 MFC,只要愿意,用 Visual C++来编写 SDK 程序,或者使用 STL,ATL,一样没有限制。 不过, Visual C++本来就是为 MFC 打造的, Visual C++中的许沈阳航空工业学院北方科技学院毕业设计(论文) 9 多特征和语言扩展也是为 MFC 而设计的,所以用 Visual C++而不用 MFC 就等于抛弃了 Visual C++中很大的一部分功能。 但是, Visual C++也不等于 MFC。 ⑶ Platform SDK。 这才是 Visual C++和整个 Visual Studio 的精华和灵魂,虽然我们很少能直接接触到它。 大致说来, Platform SDK 是以 Microsoft C/C++编译器为核心(不是 Visual C++,看清楚了),配合 MASM,辅以其他一些工具和文档资料。 上面说到 Developer Studio 没有编译程序的功能,那么这项工作是由谁来完成的呢。 是CL,是 NMAKE,和其他许许多多命令行程序,这些我们看不到的程序才是构成 Visual Studio 的基石。 运行环境 运行环境首先需要操作系统的支持,开发本程序使用 Microsoft Windows XP 操作系统,为使开发连连看游戏程序能稳定运行,在硬件上至少需要奔腾 3CPU 做保证,内存不低于 64MB, 40G 硬盘空间,对显卡要求不高,都能满足显卡需求,还有音响用于播放音乐。 保证了以上的配置,就能保证使用 Microsoft Visual C++ 在 Microsoft Windows XP 系统中开发连连看游戏程序环境的可行性。 功能模块设计 本程序共分为三个模块,即游戏模块、选 项模块和帮助模块。 在游戏模块中下分为初级子模块、中级子模块、高级子模块、停止子模块和退出子模块。 对于初级子模块、中级子模块和高级子模块通过图片种类以及方块数量的不同加以区分。 退出子模块用于退出游戏程序。 选项模块中下分为提示子模块、重列子模块、暂停子模块、音乐子模块、音效子模块以及积分榜子模块。 提示子模块和重列子模块作为游戏的特殊功能,增加游戏的趣味性。 暂停子模块可以暂停游戏。 音乐子模块和音效子模块可以相互切换,用以清晰的显示音乐和音效的效果。 积分榜子模块用于记录游戏的积分信息,并且对于破记录给予提示。 帮助模块中下分为关于连连看子模块和帮助子模块。 关于连连看子模块主要介绍一下连连看的游戏方法。 帮助子模块用于介绍本游戏的一些特殊功能的使用方法。 沈阳航空工业学院北方科技学院毕业设计(论文) 10 图 功能模块图 算法 设计 游戏地图数据的设计 对于整个游戏区域,可以把它看作一个是由信息显示区域和图案方块游戏区域组成的地图。 信息显示区域可以通过使用铅笔工具修改属性直接在需要的位置上画出即可实现。 图案方块游戏区域由图案小方块零散地分布在地图的不同位置区域,并且每一个图案小方块都有与其对应的完全 一样的另外一个小方块。 图案方块游戏区域被抽象成一个有坐标位置属性的平面,平面上零散的地分布着若干个小方块,并且这些小方块的人物图案起码是成对出现的,可以把游戏区域地图用一个数组 llk_map[i][j]来表示, llk_map[i][j]是把地图设计成一个动态分配的 int 整型一维数组,对地图中的行列数的表达,用一个转换法即可。 在游戏开始前,需要对游戏的地图进行初始化。 设计一个初始化的类,信息的显示直接调用绘图类即可。 对于方块地图游戏区域的初始,设计初级为 8 9 大小的区域,中级为 9 10 大小的区域,高级设计为 12 10 大小的区域。 人物的种类共计 20个图案,首先通过 srand ()设定 随机数发生 ,然后通过 rand()函数进行图片种类数量的选择。 至此,游戏地图的设计完毕。 连连看主程序 游戏 选项 帮助 初级 中级 高级 停止 退出 重列 提示 暂停 音乐 音效 积分榜 关于 帮助 沈阳航空工业学院北方科技学院毕业设计(论文) 11 图案方块连接判断的设计 对于选中的两个方块的销毁,它们必须符合以下三个条件: ⑴ 选中的两个图案相同。 ⑵ 选中的两个方块之间在没有障碍物的情况下,可以用若干垂直的直线线段连起来。 ⑶ 这些将它们连接起来的直线线段的折点不超过两个。 同种物件的连 接方式大致可以分成以下 3 种: ⑴ 直连方式。 在直连方式中,必须要求所选定的两个方块在同一水平直线上,并且两个方块之间没有任何其它的图案方块。 在 3 种连接方式中,直连方式是最简单的。 ⑵ 有一个折点的垂直线段连接。 所选定的两个方块如果通过折点的方式连接,那么对于折点来说,每个折点必定有且至少有一个坐标是和其一个目标点是相同的,即折点必定在两个目标点所在的 X 方向或 Y 方向的直线上。 此外,对于一个折点连接的情况,折点应该为第一个选中方块的横向现或纵向线与第二 个选中方块的纵向线或横向线相交而得出。 还需说明的是,是这些所有可能连接的交线经过的每一个图案方块区域,它们都不允许被障碍物所阻挡。 ⑶ 有两个折点的垂直线段连接。 这种方式的两个折点所连成的直线与两物件的直接连线可以构成平行线,因此可以根据这个规律,将这条水平线在游戏区域允许的条件上下移动,然后通过判断整条带垂直折点的曲线之间有无障碍物方式来确定是否可以联通。 经过上面较为详细的分析后,对选定的方块是否可以作抵消操作可以这样去设计,首先,对简单的直连情况进行判断,看其是否符合条件 ,假如不能,再加深一个级别的复杂度,对一个折点的情况进行判断,如果不符合条件,再对两个折点的情况进行判断。 游戏胜利判断算法设计 与前面的两个选定方块能否抵消的判断功能相比,它的实现显得相当简单,只需对图案方块游戏区域所有方块进行判断就可以了,只要检测到地图中还有一个图案方块还没有被抵消,并且游戏的级别不是高级,则证明游戏还没有结束,完成判断。 如沈阳航空工业学院北方科技学院毕业设计(论文) 12 果时间耗尽,或者在没有生命点数时出现死局,则终止游戏。 如果通过初级、中级后进入高级,并且地图中的所有小方块都被消除,则证明游戏已经胜利,如果打破记录,会弹 出提示。 游戏道具算法设计 在此游戏中的道具有重排和提示两种,在游戏进行的过程中,如果玩家暂时找不到可解的小方块,就可以使用道具功能。 重排功能是在原小方块位置不变的情况下,重新排列图案的顺序,以找到可解的小方块。 提示功能用于提示玩家一组可解的小方块,便于玩家可以继续进行游戏。 对于重排功能的实现,首先将所有小方块的位置编号暂时保存到内存中,然后随机地分布在有小方块的位置上,通过随机函数实现此功能。 对于提示功能,首先编写一个检查连接的类,判断选中的两个小方块是否可以进行消除操作,这个类可以被提示功 能函数调用,也可以在检查是否有解时被调用。 在提示功能中,首先调用检查连接的类查找到一个可以连接的小方块,并且标记,然后更改其为选中状态,即改变颜色以达到醒目,用来提示玩家。 相关技术与重点难点 相关技术 GDI(Graphics Device Interface,图形设备接口 )主要负责在显示屏幕和打印设备等方面输出图像信息,是一组通过 C++类实现的应用程序编写接口。 作为一个设备接口,它可以使得开发人员在将信息输出于屏幕或打印机之时无需考虑具体的目标输出的硬件特性,只需调用 GDI 库的一些方法进 行操作即可,而具体的绘图工作由特定的设备驱动来完成,从而使开发人员能轻松地在不同的硬件中做图像绘制输出。 绘图方案设计采用内存位图映射的方式,先将整个游戏区域的图象绘制到内存位图中去,然后再一次性地将它加载到屏幕上予以显示。 先在内存创建两个内存位图,并对它们的图象进行载入。 在需要使用的时候,则可以从这些内存位图中直接去拷贝,并绘制到游戏区域内存位图中去。 对框架位图及人物位图分别创建相应的设备环境,并且为它们分配了关联的内存位图变量。 而对于游戏区域的绘制,亦为它创建了一个内存设备环境以及关联的内存沈阳航空工业学院北方科技学院毕业设计(论文) 13 位图。 完成 以上工作后,需要在程序开始运行的时候,一次性地对它们进行适当的初始化。 此游戏程序的关键在于游戏的绘图方案,是此程序的难点,在此程序中的绘图方案通过 GDI 技术实现。 系统的重点难点 此程序的重点是鼠标的交互功能。 通过 ClassWizard 对鼠标左键被按下时触发的命令消息进行拦截技术来实现。 因为游戏的全部过程需要依靠鼠标操作,所以鼠标交互功能的设计是否人性化就成了此连连看游戏程序的重点。 此程序的难点是连连看游戏程序的连接线功能。 首先编写一个创建路径的类,通过这个类使游戏中消除小方块时能够找到一条可 以连接的路径进行连线,然后通过一个画线的类进行连接。 沈阳航空工业学院北方科技学院毕业设计(论文) 14 第 4 章 详细设计 功能模块设计与实现 此连连看游戏程序根据模块的性质分为以下几大类: 基本功能模块,主要通过游戏的菜单显示出来,分为游戏模块、选项模块以及帮助模块。 游戏绘图模块,包括小方块图案的载入以及游戏地图背景的绘制。 游戏交互模块,主要是快捷键和鼠标交互功能的实现。 游戏算法模块,包括游戏的连接判断算法以及游戏胜利判断的算法。 游戏模块设计与实现 游戏模块中下分为初级子模块、中级子模块、高级子模块、停止子模块和退出子模块。 对于这三个不同 的级别分别设置三个不同大小的地图,初级设为 8 9 的地图,即横向为八个小方块,纵向为九个小方块。 同理,中级设为 9 10 的地图,高级设为12 10 的地图。 人物种类共有 20 种,对于初级来说,由于地图的大小为八行九列共72 个小方块,每个种类的人物设定出现 6 次为偶数,这样就可以实现成对的出现了,在游戏中可以完成配对。 这样以来,共 72 个小方块且每个人物出现 6 次,也就是说,共有 12 个人物。 同理,对于中级,共 90 个小方块且每个人物出现 6 次,也就是说,共有 15 个人物。 对于高级,共 120 个小方块且每个人物出现 6 次,共有 20 个人 物。 这样,初级、中级和高级就可区分开来了。 初级、中级和高级不可同时处于。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。