基于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 个人 物。 这样,初级、中级和高级就可区分开来了。 初级、中级和高级不可同时处于。基于mfc和vc60的连连看系统设计论文
相关推荐
与 PLC 的 I/O 口 7 相连接,进行通信、控制 [18]。 图 集中控制系统模型 系统运行方式 糖果包装机的运行,采用自动运行和手动运行方式: (1)手动运行:可以用按钮对包装机的各个部分进行单独控制,便于调机,主要用于故障的检修与恢复。 (2)自动运行 :按下启动按钮,系统即开始连续、协调、周期性地完成各包装动作,直到系统接收到停止运行信号。 与运行方式对应的是停止运行方式。
,现在的可编程序控制器不仅可以进行逻辑控 制,也可以对模拟量进行控制。 PLC 自问世以来,经过几十年的发展,己经成为最受欢迎的工业控制类产品。 它之所以高速发展,除了工业自动化的客观需求外,还有许多独特的优点。 它较 好的解决了工业控制领域中普遍关心的可靠、安全、灵活、方便、经济等问题。 PLC 的组成及各部分作用 PLC 是一种通用的工业控制装置,其组成与一般的微机系统基本相同。
事工业控制打开了方便之门。 4.系统的设计、建造工作量小,维护方便,容易改造 PLC 用存储逻辑代替接线逻辑,大大减少了控制设备外部的接 线,使控制系统设计及建造的周期大为缩短,同时维护也变得容易起来。 更重要的是使同一设备经过改变程序改变生产过程成为可能。 这很适合多品种、小批量的生产场合。 PLC控制自动装箱系统 6 5.体积小,重量轻,能耗低 以超小型 PLC 为例
谐波。 线电压控制 PWM 前面所介绍的各种 PWM 控制方法用于三相逆变电路时,都是对三相输出相电压分别进行控制的,使其输出接近正弦波,但是,对于像三相异步电动机这样的三相无中线对称负载,逆变器输出不必追求相电压接近正弦,而可着眼于使线电压趋于正弦。 因此,提出了线电压控制 PWM,主要有以下两种方法。 马鞍形波与三 角波比较法 马鞍形波与三角波比较法也就是谐波注入 PWM 方式
mp。 qYp@Eh5pDx2zVkumamp。 gTXRm 6X4NGpP$vSTTamp。 ksv*3tnGK8! z89Am YWv*3tnGK8! z89Am YWpazadNuKNamp。 MuWFA5uxY7JnD6YWRr Wwc^vR9CpbK!zn%Mz849Gx^Gj qv^$U*3tnGK8! z89Am YWpazadNuKNamp。 MuWFA5uxY7JnD6YWRr
机惯性转过的角度就小,相应地,传感器产生的脉冲就少,这样就间接地“测量 出了衣物量的多少。 下一步需要做的就是,根据衣物量来设定水位。 衣质传感器和衣量传感器是同一个装置,只是检测的方法不同。 在进行衣质检测时。 首先使洗涤桶内的水位比设定水位低一个挡级,然后仍 按照测衣物量的方法让驱动电机以通断电的方式工作一段时间。 检测每次断电期间衣量传感器发出的脉冲数并求其平均值。