2111.基于Visual C++实现的单机版俄罗斯方块游戏的设计-----毕业论文 (2).doc
《2111.基于Visual C++实现的单机版俄罗斯方块游戏的设计-----毕业论文 (2).doc》由会员分享,可在线阅读,更多相关《2111.基于Visual C++实现的单机版俄罗斯方块游戏的设计-----毕业论文 (2).doc(35页珍藏版)》请在三一文库上搜索。
1、本科生毕业设计 基于 Visual C+实现的单机版俄罗斯方块游戏的设计 I 摘摘 要要 俄罗斯方块是非常传统的游戏,操作简单,难度却不低,广受娱乐界欢迎。给人们 的生活带来了健康愉快的补充,唯美的艺术享受。 本文在基于 Visual C+实现的单机版俄罗斯方块游戏的基础上,深入的研究 MFC 框 架中的各个类的关系和它们内部之间的联系。 主要工作和结论: 1. 分析了俄罗斯游戏规则。 2.系统的介绍了实现俄罗斯方块游戏的算法设计过程。 3. 将研究的思路运用于实际,在 VC+6.0 平台下实现了俄罗斯方块游戏。 关键词关键词 :俄罗斯方块游戏;VC+;MFC 框架 Abstract Russ
2、ia is a very traditional box of the game, simple operation, the difficulty is not low, widely welcomed by the entertainment industry. To the peoples life a happy and healthy complement to the flavor of the enjoyment of the arts. In this paper, based on the Visual C + + to achieve the single version
3、of the Russian box on the basis of the game, MFC-depth study in the framework of various types and their internal relations between the links. And the main conclusions : 1. Analysis of the Russian rules of the game. 2. The system introduces a game of Russian box algorithm design process. 3. Will exa
4、mine the practical application of ideas, in VC + +6.0 platform under the Russian box game. Key words : Russian box game; VC + +; MFC framework 本科生毕业设计 基于 Visual C+实现的单机版俄罗斯方块游戏的设计 II 目目 录录 摘摘 要要.I ABSTRACT.I 1 引言引言 3 1.1 选题选题及研究意及研究意义义 .3 1.2 论论文研究的主要内容文研究的主要内容 .3 2.1 APP 应应用程序用程序类类物件物件4 2.2 文档文档视图视
5、图机制机制 .5 2.3 DOCUMENT 文文挡挡操作操作6 2.4 文档文档-视图视图的关的关联联6 3 俄罗斯游戏分析和总体设计俄罗斯游戏分析和总体设计 7 3.1 俄俄罗罗斯方斯方块块游游戏戏功能描述功能描述 .8 3.2 游游戏戏规则规则分析分析 .8 4 俄罗斯方块游戏的实现俄罗斯方块游戏的实现 9 4.1 游游戏戏核心数据的抽象与核心数据的抽象与设计设计 10 4.2 操作方法的抽象与操作方法的抽象与设计设计 .13 4.3 流程的流程的设计设计与与实现实现 .15 4.3.1 正常流程的设计正常流程的设计 15 4.3.2 正常流程的实现正常流程的实现( (定时处理定时处理)
6、) 16 4.3.3 中断操作流程的设计中断操作流程的设计 .19 4.3.3 中断操作流程的实现中断操作流程的实现 .20 4.4 游游戏戏区域区域绘图绘图的的实现实现 .21 4.4.1 位图资源的准备位图资源的准备 .21 4.4.2 绘图机制设计绘图机制设计 .22 4.4.3 绘图环境资源的初始化和释放绘图环境资源的初始化和释放 22 4.4.4 游戏区域的绘制游戏区域的绘制 24 5. .功能的完善功能的完善 27 5.1 游游戏戏背景音背景音乐乐的的实现实现 .29 5.2 工具工具栏栏快捷快捷键键的的实现实现 .30 结束语结束语 33 参考文献参考文献 33 致致 谢谢 34
7、 本科生毕业论文 2 俄罗斯方块游戏的实现 1 引言 我们国家正处于全球文化产业日新月异大格局中,电子游戏、网络游戏的发展速度 之快,更是令人眼花缭乱,目不暇接。未来的电子和游戏发展趋势必将是更智能化、更 艺术性、更人性味。在高性能的硬件设备的支持下,游戏的驱动引擎更具威力,控制功 能更加完备,在一个错综复杂的极度扩张的游戏大世界中,带着超乎常人智慧的人工智 能的应对力,使得所有要素包括艺术的风格、情感的互动、故事的铺展、视觉的表现、 用户的界面,融合为有机的一体,给人们带来更丰富的娱乐和体验。好的游戏给人们的 生活带来了健康愉快的补充,唯美的艺术享受,潜默的教育功效。 本系统采用VC+为主要
8、开发工具设计实现了一个单机板的俄罗斯方块游戏。与其他 程序相比,笔者的作品有三个特色:一是精心设计的人机界面,不仅友好而且易于操作。 二是笔者的游戏采用的是单机板。三是采用MFC应用程序开发模型进行编制,使开发人 员减轻创建Windows应用程序的负担。网络版的俄罗斯方块游戏是两个玩家通过网络进行 较量,但在游戏过程中数据要通过服务器进行传送,网络版游戏经常会出现断线、超时 等情况这些都是因为网络的速度比较慢造成的。而笔者设计的俄罗斯游戏虽然是单机版 的,但速度快,提高了效率。 1.1 选题选题及研究意及研究意义义 俄罗斯方块游戏是一个比较经典的游戏,根据软件工程有关的规范,以合理的开发 原则
9、,设计出单机的俄罗斯方块游戏,并给人们的生活带来唯美的艺术享受和健康愉快 的补充。 游戏软件是一种与文化背景密切联系的产品,具有很强的民族性和丰富的文化内涵。 伴随着游戏软件在市场上的销售,与其相关的文化也随之传播。因此发展我国自主的益 智、健康的游戏软件已是当务之急。游戏是一种基于计算机的应用软件,是新型的休闲 娱乐方式。当前开发的游戏软件应该做到知识性、娱乐性、趣味性、教育性相统一。 1.2 论论文研究的主要内容文研究的主要内容 在论文完成过程中,认真学习了游戏开发的基本技术,OOD 方法软件设计的基础知识, VC+程序设计语言等。结合游戏开发的过程、算法的设计与分析(如下坠物的生成、下
10、坠物随机选择、游戏区画板实现的方法等)、软件工程等角度重点研究了实现游戏的算 法和采用 VC+平台设计游戏的优点和现存结构的不足之处。 以下是论文的组织结构: 第 1 部分是引言,主要介绍论文选题的意义、选题背景等相关情况。 第 2 部分概述 MFC 应用程序框架。 第 3 部分是游戏规则的分析。 第 4 部分是游戏算法的实现、游戏功能模块、操作界面以及系统分析及设计。 本科生毕业论文 3 第 5 部分是对整个论文的结束语。对论文的主要工作作了归纳总结,分析了进一步 需要做的工作。 2 MFCMFC 应用程序架构应用程序架构 传统的 Windows 应用程序的开发使用 API(Applicat
11、ion Programming Interface)函 数。API 函数的功能主要是为 Windows 应用程序开发提供统一的编程接口。在使用 API 编 程的过程中,窗口的创建和消息的处理都需要手工编码。一个简单的 Windows 应用程序 的代码需要上百行,这使 Windows 应用程序开发变成了一件繁重的工作。现在编程,都 是在 Visual C+ 环境下采用基本 MFC(Microsoft Foundation Class)的 Windows 编程方 法。 Microsoft 基本类库 MFC 是一个 Windows 应用程序框架,它是 C+类结构的扩展。利 用 MFC 提供的面向对象
12、程序行色机的框架,可大大减轻程序开发人员创建 Windows 应用 程序的负担。MFC 提供了管理窗口、菜单、对话诓的代码,可实现基本的输入输出和数 据的存储。 此外,MFC 还提供一个应用程序来发模型,此模型被称为文档视图模型。文档视图 模型视将应用程序数据与用户界面元素分离的一种应用编程方法,它允许这两部分程序 独立存在。这样,程序员在更改其中部分代码的时候,不会大幅度地更改另一部分。 该游戏的实现采用 MFC 框架。在构架类视图中有 MFC 基本架构组合 : App(应用程 序)类、Document(文档)类、View(视图)类、Frame(框架)类和用于提示关于作者的对话 框 CAbo
13、utDlg 类。下面对这几个类做一个简单的列表,如表 2.1 所示。 表 2.1 MFC 应用程序架构表 类别基类 描述 ApplicationCwinApp代表应用程序的核心 DocumentCdocument包含应用程序的数据集 Windows Cwind主要用于图形用户界面(GUI)的对象,可以处理常见的 Windows 消息 FrameCframeWnd用于应用程序的主要 Windows 框架 ViewVciew用于显示数据并与文档 Document 对象交互 2.1 APP 应应用程序用程序类类物件物件 每种语言都有一个程序入口(主函数),如 C/C+语言的 main()函数。总地来
14、说, main()函数的调用与终止代表着程序执行的开始与结束,在程序运行的过程中,无非是对 一些业务性的功能流程进行不断的处理,当完成后才退出程序。其实,所有的程序也是采 用同样的方法去实现, MFC 机制巧妙地利用了 Application 类去封装实现了这样的效果 功能,每个 CWinApp 类对象实体都代表应用程序本身,它是基本的 Application Class(应 用程序类),其封装了 Windows-based 应用程序的初始化、运行、 Message 映射和终止 等功能。假如创建了这样的一个对象实体,在运行期间处理初始化、消息映射、或者其他 本科生毕业论文 4 动作时就可以通过
15、属性操作的调用去实现,而不像拥有结构化设计思想的 mainO 函数那 样的顺序去实现。那么,现在就来看看这个 CWinApp 类对象的性质。 在 MFC 框架中,应用程序必须有且仅有一个从 CWinApp 派生的 Class Object(类物 件),这个 Object 在 Windows 创建之前就会被创建,也就是说这个 Object 会和其他 C+ 全局 Object 同时创建。当 Windows 调用 WinMainO 时(在 MFC 应用程序中,不必亲自调 用 WinMainO,因为机制已经对它封装好,当应用程序启动时会由框架自动调用),这个 Object 已经可用了,并且该 Obje
16、ct 是全局的。 当用 AppWizard 创建 DocumentNiew 模式应用程序时,AppWizard 会声明一个从 CWinApp 派生的 Application Class, 因此,由 AppWizard 所产生的.cpp 文件中还包括 Message 映射、空的构造函数、一个应用程序 Object(即一个变量)和 InitInstanceO 函 数。AppWizard 提供的源代码和 Message 映射可以满足一些基本的任务,但在通常情况下,还是需要手工 修改那些源程序,特别是要修改 Initinstance()函数。 在 CWinApp 中,有以下几个关键的可重写的成员数。
17、InitInstance(): 此函数对文档模板(Document Template)进行创建和初始化,即在 这过程中伴随着 Document、View 和 Frame 的创建。 Run(): 初始化后,WinMain 就会调用这个成员函数去处理 Message 循环。 ExitInstance(): 每当一个应用程序的 Copy (拷贝)终止时,就会调用这个函数, 即发生在应用程序退出时。 OnIdle(): 当没有 Windows Message 处理时,就会由 Framework 调用这个函数,并 重写这个函数去执行后台任务。 当用户从 CWinApp 派生一个 Application
18、Class 时,必须重写成员函数 InitInstance() 去创建应用程序的 Main Window Objecto Windows 允许同时运行同一个 应用程序的多个“Copy”, 而且该应用程序的每个 Instance(包括第一个的)都会被初始 化,而初始化时都会用到被 Override 了的 InitInstance() 函数所提供的信息。 通常情况下,每个 Windows-based 应用程序都有一个 Main Window 。因此,在初始化 完成后, Framework 就会检查是否存在一个指向有效 Main Windows( CWinApp:m_pMain Wnd) 的指针,如
19、果不存在的话,应用程序就会终止。 当利用 AppWizard 创建应用工程项目时,AppWizard 会重写缺省的 InitInstance() 来创建 Main Window Object,还会使 CWinApp 的数据成员 m_pMainWnd 指向那个 Window 。 2.2 文档文档视图视图机制机制 文档对视图的管理。若用非文档,视图机制的时候,交互界面显示的只有一种视图,在 这种情况下,可以将内部数据以一种对应规则用图像显示出来。将一份数据用不同的方式 去展示,并且将它们放在不同的窗口视图中,MFC 机制给出了这样的实现方法:先用一个 CDocument 这样的物件去处理数据的管理
20、,然后用一个 CView 这样的物件去管理视图的显 示,这样一来,所有不同的显示图像若要以某种方式反映出数据的特性,必须在数据源和众 多不同方式的图像显示之间有一定的关联。对于它们的关联,MFC 机制用了一个很好的方 本科生毕业论文 5 法,就是将所有与这个数据源相关的图像显示都独立用 CView 物件去表示,而当数据源就 抽象成 CDocument 物件, 而在 Document 中有这样的一个指针列表 CPtrList 类型的日 员变量 m_viewList, 将所有这些与之关联的视图用链表串起来。而这些用于显示不同性 质的图像视图类也可以通过 GetDocument()来获取其所对应的
21、Document 文档数据。 2.3 Document 文文挡挡操作操作 由于 MFC 机制设计出文档类对象专门负责数据的 I/O 存取和数据的运算和操作等。 一般来说,数据运算是通过 Document 类里面的扩展功能来实现的,这样做可以形成一种 密集数据处理,达到方便易用和管理的好处。 对于一个文件而言,如果文件内对象的排列顺序是固定的,那么对于文件读和写从形 式上只有使用的运算符的不同。在 MFC 的文档-视图-框架结构中,一个文档的内部对象 的构成往往是固定的,在这种情况下,写到文件中的对象在文件中的布局也是固定的。因 此 CDocument 是利用其基类 CObject 提供的 Se
22、rilize()虚函数实现自动文档的读写操 作的。 当用户在界面上选择文件菜单或打开文件 (ID_FILE_OPEN)时,CWinApp 派生类的 OnFileOpenO 函数将被自动调用,它通过文档模板创建或重用框架、文档和视图对象,并最 终调用 CDocument: :OnOpenDocument()来读文件。 当用户选择菜单文件或文件保存(ID_FILE_SAVE) ,选择文件或另存(ID_FILE_SAVEAS) 时,是通过呼叫函数 CWinApp: :OnFileSave() 和 CWinApp: :OnFileSaveAs()并最终调用 CDocument: :OnSaveDocu
23、ment() 实现的。 2.4 文档文档-视图视图的关的关联联 视图与文档和窗口的关联和协调工作可以从视图类对象的 OnDraw() 函数开始,找出 关联的物件与关系。在 MFC 机制中,关于 DocumentNiew 架构的项目工程和 OnDrawO 函 数的驱动绘图触发的流程 : CDocument:UpdateAIIViews()-CView:OnUpdate()- CWnd: :Invalidate()- OnPaint()-OnDraw() 从流程可知当用于装载重要数据的 Document 类对象中的数据发生变化时,为了能让 与其关联的各个视图实时表现出数据的特征性质,需要通知所有这
24、些关联的视图进行更新 重绘 , 而 Document 类对象就拥有通知所有视图重绘的这样的一个功能函数。对于 UpdateAIIViews() 函数实现对各个视图类对象对数据显示的更新是通过文档类内部 CPtrlist 类型的成员变量 m_viewList 来维护和管理所有相关联的视图对象 , 如图 1.1 所示。 本科生毕业论文 6 Document 图 1.1 变量 m_viewList 视图对象 而对于该文档关联视图的增添,与将 DocumentTemplte 文档模板添加到模板类表一 样, 也是有相应的处理函数,对于文档模板在模板管理列表的添加是在 App 类的 Initlnstanc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2111.基于Visual C+实现的单机版俄罗斯方块游戏的设计-毕业论文 2 2111. 基于 Visual C+ 实现 单机 俄罗斯方块 游戏 设计 毕业论文
链接地址:https://www.31doc.com/p-3900033.html