《2111.基于Visual C++实现的单机版俄罗斯方块游戏的设计毕业论文 .doc》由会员分享,可在线阅读,更多相关《2111.基于Visual C++实现的单机版俄罗斯方块游戏的设计毕业论文 .doc(35页珍藏版)》请在优知文库上搜索。
1、本科生毕业设计 基于Visual C+实现的单机版俄罗斯方块游戏的设计摘 要俄罗斯方块是非常传统的游戏,操作简单,难度却不低,广受娱乐界欢迎。给人们的生活带来了健康愉快的补充,唯美的艺术享受。本文在基于Visual C+实现的单机版俄罗斯方块游戏的基础上,深入的研究MFC框架中的各个类的关系和它们内部之间的联系。主要工作和结论:1. 分析了俄罗斯游戏规则。2.系统的介绍了实现俄罗斯方块游戏的算法设计过程。3. 将研究的思路运用于实际,在VC+6.0平台下实现了俄罗斯方块游戏。关键词:俄罗斯方块游戏;VC+;MFC框架AbstractRussia is a very traditional bo
2、x 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 of the Russian box on the b
3、asis 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 examine the practical applicat
4、ion of ideas, in VC + +6.0 platform under the Russian box game. Key words : Russian box game; VC + +; MFC framework 目 录II摘 要IABSTRACTI1 引言31.1 选题及研究意义31.2 论文研究的主要内容32.1 APP应用程序类物件42.2 文档视图机制52.3 DOCUMENT文挡操作62.4 文档-视图的关联63 俄罗斯游戏分析和总体设计73.1 俄罗斯方块游戏功能描述83.2 游戏规则分析84 俄罗斯方块游戏的实现94.1游戏核心数据的抽象与设计104.2 操作方
5、法的抽象与设计134.3 流程的设计与实现154.3.1 正常流程的设计154.3.2 正常流程的实现(定时处理)164.3.3中断操作流程的设计194.3.3中断操作流程的实现204.4 游戏区域绘图的实现214.4.1位图资源的准备214.4.2绘图机制设计224.4.3 绘图环境资源的初始化和释放224.4.4 游戏区域的绘制245.功能的完善275.1 游戏背景音乐的实现295.2 工具栏快捷键的实现30结束语33参考文献33致 谢34本科生毕业论文俄罗斯方块游戏的实现1 引言我们国家正处于全球文化产业日新月异大格局中,电子游戏、网络游戏的发展速度之快,更是令人眼花缭乱,目不暇接。未来
6、的电子和游戏发展趋势必将是更智能化、更艺术性、更人性味。在高性能的硬件设备的支持下,游戏的驱动引擎更具威力,控制功能更加完备,在一个错综复杂的极度扩张的游戏大世界中,带着超乎常人智慧的人工智能的应对力,使得所有要素包括艺术的风格、情感的互动、故事的铺展、视觉的表现、用户的界面,融合为有机的一体,给人们带来更丰富的娱乐和体验。好的游戏给人们的生活带来了健康愉快的补充,唯美的艺术享受,潜默的教育功效。本系统采用VC+为主要开发工具设计实现了一个单机板的俄罗斯方块游戏。与其他程序相比,笔者的作品有三个特色:一是精心设计的人机界面,不仅友好而且易于操作。二是笔者的游戏采用的是单机板。三是采用MFC应用
7、程序开发模型进行编制,使开发人员减轻创建Windows应用程序的负担。网络版的俄罗斯方块游戏是两个玩家通过网络进行较量,但在游戏过程中数据要通过服务器进行传送,网络版游戏经常会出现断线、超时等情况这些都是因为网络的速度比较慢造成的。而笔者设计的俄罗斯游戏虽然是单机版的,但速度快,提高了效率。1.1 选题及研究意义俄罗斯方块游戏是一个比较经典的游戏,根据软件工程有关的规范,以合理的开发原则,设计出单机的俄罗斯方块游戏,并给人们的生活带来唯美的艺术享受和健康愉快的补充。游戏软件是一种与文化背景密切联系的产品,具有很强的民族性和丰富的文化内涵。伴随着游戏软件在市场上的销售,与其相关的文化也随之传播。
8、因此发展我国自主的益智、健康的游戏软件已是当务之急。游戏是一种基于计算机的应用软件,是新型的休闲娱乐方式。当前开发的游戏软件应该做到知识性、娱乐性、趣味性、教育性相统一。1.2 论文研究的主要内容在论文完成过程中,认真学习了游戏开发的基本技术,OOD方法软件设计的基础知识,VC+程序设计语言等。结合游戏开发的过程、算法的设计与分析(如下坠物的生成、下坠物随机选择、游戏区画板实现的方法等)、软件工程等角度重点研究了实现游戏的算法和采用VC+平台设计游戏的优点和现存结构的不足之处。以下是论文的组织结构:第1部分是引言,主要介绍论文选题的意义、选题背景等相关情况。第2部分概述MFC应用程序框架。第3
9、部分是游戏规则的分析。第4部分是游戏算法的实现、游戏功能模块、操作界面以及系统分析及设计。第5部分是对整个论文的结束语。对论文的主要工作作了归纳总结,分析了进一步需要做的工作。2 MFC应用程序架构传统的Windows应用程序的开发使用API(Application Programming Interface)函数。API函数的功能主要是为Windows应用程序开发提供统一的编程接口。在使用API编程的过程中,窗口的创建和消息的处理都需要手工编码。一个简单的Windows应用程序的代码需要上百行,这使Windows应用程序开发变成了一件繁重的工作。现在编程,都是在Visual C+ 环境下采用
10、基本MFC(Microsoft Foundation Class)的Windows编程方法。Microsoft基本类库MFC是一个Windows应用程序框架,它是C+类结构的扩展。利用MFC提供的面向对象程序行色机的框架,可大大减轻程序开发人员创建Windows应用程序的负担。MFC提供了管理窗口、菜单、对话诓的代码,可实现基本的输入输出和数据的存储。此外,MFC还提供一个应用程序来发模型,此模型被称为文档视图模型。文档视图模型视将应用程序数据与用户界面元素分离的一种应用编程方法,它允许这两部分程序独立存在。这样,程序员在更改其中部分代码的时候,不会大幅度地更改另一部分。该游戏的实现采用 MF
11、C框架。在构架类视图中有MFC 基本架构组合 : App(应用程序)类、Document(文档)类、View(视图)类、Frame(框架)类和用于提示关于作者的对话框CAboutDlg类。下面对这几个类做一个简单的列表,如表2.1所示。表2.1 MFC应用程序架构表类别基类 描述ApplicationCwinApp代表应用程序的核心DocumentCdocument包含应用程序的数据集Windows Cwind主要用于图形用户界面(GUI)的对象,可以处理常见的 Windows消息FrameCframeWnd用于应用程序的主要Windows框架ViewVciew用于显示数据并与文档Docume
12、nt对象交互2.1 APP应用程序类物件每种语言都有一个程序入口(主函数),如C/C+语言的 main()函数。总地来说, main()函数的调用与终止代表着程序执行的开始与结束,在程序运行的过程中,无非是对一些业务性的功能流程进行不断的处理,当完成后才退出程序。其实,所有的程序也是采用同样的方法去实现, MFC机制巧妙地利用了Application 类去封装实现了这样的效果功能,每个CWinApp类对象实体都代表应用程序本身,它是基本的 Application Class(应用程序类),其封装了 Windows-based 应用程序的初始化、运行、 Message 映射和终止等功能。假如创建
13、了这样的一个对象实体,在运行期间处理初始化、消息映射、或者其他动作时就可以通过属性操作的调用去实现,而不像拥有结构化设计思想的 mainO 函数那样的顺序去实现。那么,现在就来看看这个 CWinApp 类对象的性质。在 MFC框架中,应用程序必须有且仅有一个从 CWinApp 派生的 Class Object(类物件),这个 Object 在 Windows 创建之前就会被创建,也就是说这个Object 会和其他 C+ 全局 Object 同时创建。当 Windows 调用 WinMainO 时(在MFC应用程序中,不必亲自调用 WinMainO,因为机制已经对它封装好,当应用程序启动时会由框
14、架自动调用),这个 Object已经可用了,并且该 Object是全局的。 当用AppWizard创建DocumentNiew 模式应用程序时,AppWizard会声明一个从CWinApp派生的Application Class, 因此,由AppWizard 所产生的.cpp文件中还包括 Message 映射、空的构造函数、一个应用程序 Object(即一个变量)和InitInstanceO函数。AppWizard提供的源代码和Message映射可以满足一些基本的任务,但在通常情况下,还是需要手工修改那些源程序,特别是要修改Initinstance()函数。在 CWinApp 中,有以下几个关
15、键的可重写的成员数。 InitInstance(): 此函数对文档模板(Document Template)进行创建和初始化,即在这过程中伴随着Document、View 和 Frame 的创建。 Run(): 初始化后,WinMain 就会调用这个成员函数去处理 Message 循环。 ExitInstance(): 每当一个应用程序的Copy (拷贝)终止时,就会调用这个函数,即发生在应用程序退出时。 OnIdle(): 当没有 Windows Message 处理时,就会由Framework调用这个函数,并重写这个函数去执行后台任务。当用户从CWinApp派生一个Application Class 时,必须重写成员函数InitInstance() 去创建应用程序的Main Window Objecto Windows 允许同时运行同一个应用程序的多个“Copy”, 而且该应用程序的每个Instance(包括第一个的)都会被初始化,而初始化时都会用