ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:90.55KB ,
资源ID:4254593      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4254593.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于Net的俄罗斯方块游戏设计与实现.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于Net的俄罗斯方块游戏设计与实现.docx

1、基于Net的俄罗斯方块游戏设计与实现HUNAN UNIVERSITY毕业设计(论文)设计论文题目:基于.Net的俄罗斯方块游戏设计与实现学生姓名:学生学号:专业班级:学院名称:指导老师:学院院长:2008年5月29日基于.Net的俄罗斯方块游戏设计与实现摘 要俄罗斯方块游戏,从俄罗斯人阿莱克斯帕伊特诺夫在八十年代末制作成功以来,以其规则简单,容易上手,游戏过程变化无穷,且能在娱乐中益智等特点,它已经成为一个家喻户晓老少皆宜的大众游戏。我设计的这款俄罗斯方块游戏,具有丰富的游戏操作功能,用户可以根据自己的操作水平和喜好进行相应的游戏操作设置,从而不仅使游戏初学者也能从中享受到成功的快乐,既便高水

2、平的玩家也能品尝到挑战的刺激。游戏还可以保存前十名高分信息,让用户有不断挑战新高度的乐趣。该游戏在Visual Studio2005环境中使用C#开发实现。C#是基于面对象的开发设计的编程语言,面向对象的开发在近年已广为普及,成为软件开发最基本的方法。Visual Studio2005作为当前功能最为强大的可视化集成开发环境,它不仅支持传统的软件开发方法,更重要的是它能支持可视化的开发风格。同时它还提供了相当优秀的代码编辑、调试、向导、编译和可视化资源编辑等功能,这些强大的功能使它成为当今世界最好的系统开发工具之一。关键字:俄罗斯方块,面向对象的开发,集成开发环境The Design and

3、Implement of Tetris Based on .net AbstractIn the 1980s, a Russian named Alex Pajitnov designed and developed the Tetris game. After that the Tetris game has become a well-known and all ages game because of its simple roles, easy controlling and changeable gaming process.The Tetris game that I design

4、ed allows you to play the game in your own way. Players can change the configuration of controller by themselves, so not only beginners can enjoy the game, but some high level players also can challenge themselves. Besides all above, the game can save the top ten scores, and this function can inspir

5、e players to reach higher peak.The game is developed in C# with Microsoft Visual Studio 2005.C# is a programming language based on OOP. The OOP has been well-known to all these years and it has been a basic software programming method now. As the strongest IDE, the Microsoft Visual Studio 2005 suppo

6、rts classic developing method and visual developing as well. As the same time, it supplies many functions such as outstanding code editor, debugger, Wizard, compiler, visual resource editor and so on. All these strong function make this tool the best one in the world.Key words: Tetris, OOP, IDE1 绪论1

7、.1 课题背景及目的俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人着迷。相信大多数人都还记得为它的规则简单,容易上手,且游戏过程变化无穷。而在“联众俄罗斯方块”中,游戏人既能感受到游戏中的乐趣,也能提供一个展现自己高超技艺的场所。究其历史,俄罗斯方块最早还是出现在PC机上。无数人进入游戏编程的世界都是从编写俄罗斯方块游戏开始的,因为这是检验一个人对开发语言、环境和基本数据结构知识熟练程度的便捷途径。Microsoft Visual Stud

8、io提供了开发Window应用程序的最迅速,最简捷的方法。不论是Windows 应用程序的资深专业开发人员还是初学者,Microsoft Visual Studio都为他们提供了整套的工具,以方便开发应用程序1。本课题的目的是在实现俄罗斯方块基本游戏的前提下,优化其算法与数据结构,并增加一些传统游戏中没有的新特点,最终实现一款小巧精致的益智俄罗斯方块游戏。本课题要求在.net平台下采用C#实现,图形使用GDI,并增添一些传统游戏未有的新特点,如在变换部件块的方位时同时改变其颜色,在游戏中可动态调整游戏的速度,在削去单行及多行时提供不同的音乐提示等。通过对本课题设计的实现,能提高对数据结构与算法

9、的认识,熟悉.net开发环境的使用,并且能提高对一些组件比如winmm与DirectSound中的接口的了解。1.2 国内外研究状况俄罗斯方块红遍世界的各个角落,一个本来是吃大锅饭的人在消极怠工的时候发明的娱乐工具成了造福全人类的宝贝,它的价值远远超越了开发时候的预想。这是一个算法实现比较简单,但又乐趣无穷的游戏。课题用C#实现,这是一种基于面向对象开发方法的编程语言。面向对象的方法正受到全世界越来越强烈的关注和高度重视,针对日趋复杂的软件需求,业界也越来越崇尚利用面向对象的方法和思想进行软件开发2。1.3 课题研究方法俄罗斯方块诞生到现在已经超过20年,无数人都曾设计并实现过自己的俄罗斯方块

10、。本课题完全按照课题要求实现,在保持原有俄罗斯方块规则不变的前提下,尽可能的提高游戏的乐趣。比如可调节的速度,可变化的颜色,多种不同的音效提示,可保存分数等等。本设计在.net平台下采用C#实现,图形使用GDI。游戏区域所选择的控件为PictureBox,而当选择Panel或者其他控件时,重画会有明显的拖慢。游戏的音效与音乐用两种不同的方式实现,音效使用DirectSound,音乐则使用到winmm这个组件,因为在尝试使用同一种方式同时播放两种声音时,出现了不能同时播放的问题,因此用这个办法来解决。在游戏存储方面,对于游戏分数的记录使用了XML文档进行存储,而对于用户配置的存储,使用到了配置文

11、件。1.4 论文构成及研究内容第二章介绍了该设计实现过程中所使用到的技术原理,这些是此课题实现的基本理论。第三章粗略的描述了课题的设计,这其中描述了课题的功能以及对这些功能的分析等。第四章详细描述了课题各个功能的具体设计思想与具体实现的过程。2 技术原理2.1 编程语言C#是一种编程语言,它是为生成在 .NET Framework 上运行的多种应用程序而设计的。C# 简单、功能强大、类型安全,而且是面向对象的3。C# 凭借它的许多创新,在保持 C 样式语言的表示形式和优美的同时,实现了应用程序的快速开发。Visual Studio 支持C#,这是通过功能齐全的代码编辑器、项目模板、设计器、代码

12、向导、功能强大且易于使用的调试器以及其他工具实现的。通过 .NET Framework 类库,可以访问多种操作系统服务和其他有用的精心设计的类,这些类可显著加快开发速度与减少开发周期4。2.2 面向对象面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域5。面向对象的基本概念:1. 对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。2. 对象的状态和行为。对象具有状态,一个对象用数据值来描述它的状态

13、。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中3. 类。具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象6。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。4. 类的结构。在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般-具体结构关系,整体-部分结构关系。(1) 一般具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。(2) 整体部分结

14、构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。5. 消息和方法。对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。面向对象的特征:1. 对象唯一性。每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。2. 分类性。分类性是指将具有一致的数据结构(

15、属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。3. 继承性。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。在软件开发中,类的

16、继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。4. 多态性(多形性)多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式去响应共同的消息7。多态性增强了软件的灵活性和重用性。面向对象的要素:1. 抽象。抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行

17、为。使用抽象可以尽可能避免过早考虑一些细节。类实现了对象的数据(即状态)和行为的抽象。2. 封装性(信息隐藏)。封装性是保证软件部件具有优良的模块性的基础。面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。3. 共享性面向对象技术在不同级别上促进了共享同一类中的共享。同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。在同一应用中共享。在同一应用的类层次结构中,存

18、在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也是面向对象的主要优点之一。在不同应用中共享。面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享8。4. 强调对象结构而不是程序结构2.3 GDI+色彩鲜艳漂亮的高品质图像,一个个形象生动的Windows图标,高速运动、活灵活现的三维动画,这些无一不显示出程序设计者的艺术才华。在程序设计中,图像处理已经成为每个程序员的必修课9。在VC中编程显示一幅位图,下列步骤是不可缺少的:装入位图、获得位图的大小信息、启用

19、设备环境、位传输等,所需的程序代码一般比较冗长而且复杂。如果想将装入的位图另存为其他格式的图像文件,代码就更长了。这一切都是因为GDI本身的局限性造成的。GDI+技术使程序员不必了解每种图像格式的具体含义,照样可以写出多格式图像浏览或转换程序。和传统的GDI不同,GDI+中引入了对COM(组件对象模型)技术的支持,通过COM技术,GDI+简化了对图像文件的访问(打开、保存)。它是通过调用COM组件来实现的,GDI+扮演的只是指挥者,而非操作员。对于图像文件,GDI+所关心的不是图像文件的文件头信息,不论要打开的文件格式是什么类型,GDI+首先要做的是在注册表中查看该图像格式的编码(或解码)信息

20、是否已经注册(HKEY_CLASSES_ROOTMIMEDatabaseContentType)。如果已经注册,就通过该编码信息调用COM组件,就这么简单。有了GDI+之后,只需简单地创建一个图形对象(Graphicsobject),然后直接调用该对象的方法(methods)进行绘图即可。图形对象是GDI+中的核心,正如DC之于GDI那样。图形对象和DC有许多相似的地方,在使用上遵循着相同的使用规则,但是两者在本质上已经有很大的区别10。一个是基于句柄的GDI,一个是基于组件对象模型的GDI+。使用GDI+的SDK编程,必须按照下面的规范来进行:使用GDI+的命名空间(namespaceGdi

21、plus),在使用GDI+函数时必须进行GDI+的初始化,使用完毕要销毁GDI+。2.4 .net Framework Framework是一个可以用来快速开发、部署网站服务及应用程序的开发平台。这个架构是两个项目的结果:第一个项目的目的是用来改善Windows 作业平台上的程序开发,特别是改善COM(Component Object Model,组件对象模块。一种微软所制定的软件技术;让对象的功能可以被其它软件所叫用,可以让组件重复使用、容易更新及维护);第二个项目则是制作一个以发展服务(Service)软件为目标的开发平台。这两个项目团队三年多前就已经在一起工作,他们希望可以发展出一种可

22、以快速开发出以因特网为基础,而且易学易用的开发平台。.net Framework 具有两个主要组件:公共语言运行库和.net Framework 类库11。公共语言运行库是.net Framework 的基础。您可以将公共语言运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。这类似于Java的虚拟机。事实上,代码管理的概念是公共语言运行库的基本原则。以公共语言运行库为目标的代码称为托管代码,而不以公共语言运行库为目标的代码称为非托管代码。.net Framework 的另一个主要组件是

23、类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于 ASP.net 所提供的最新创新的应用程序(如 Web 窗体和 XML Web services)12。.net Framework 旨在实现下列目标:提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。提供一个将软件部署和版本控制冲突最小化的代码执行环境。提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。提供一个可消

24、除脚本环境或解释环境的性能问题的代码执行环境。使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。按照工业标准生成所有通信,以确保基于.net Framework 的代码可与任何其他代码集成。2.5 DirectSound组件 DirectSound是DirectX API的音频组件之一,它可以提供快速的混音、硬件加速功能,并且可以直接访问相关设备,当然,最主要的是它提供的功能与现有的设备驱动程序保持兼容性13。DirectSound允许进行波型声音的捕获、重放,也可以通过控制硬件和相应的驱动来获得更多的服务。DirectSo

25、und的优势当然和DirectX的其它组件一样速度,它允许你最大效率的使用硬件,并拥有良好的兼容性。使用DirectSound可以做到什么呢?1、很方便的了解硬件能力,并且根据当前计算机硬件配置硬件来决定最好的解决问题的方法。2、弥补驱动程序的不足通过属性设置以便硬件能力可以完全发挥,即便是驱动程序没有很好的支持该功能。3、短传输延迟时间的混音为了快速的响应流。4、3-D声音5、声音的捕获DirectSound播放音频文件开发的基本流程:第一步,创建一个设备对象,设置设备对象的协作度。 第二步,创建一个辅助Buffer,也叫后备缓冲区。第三步,获取PCM类型的数据。第四步,将数据读取到缓冲区。

26、第五步,播放缓冲区中的数据。2.6 配置文件在应用系统开发时,管理配置是必不可少的。例如数据库服务器的配置、安装和更新配置等等14。传统的配置文件ini已有被xml文件逐步代替的趋势,但对于简单的配置,ini文件还是有用武之地的。ini文件其实就是一个文本文件,它有固定的格式,节Section的名字用括起来,然后换行说明key的值:sectionkey=value2.7 XML语言扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用15。XML与Access,O

27、racle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。 XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows、Mac OS, Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。

28、XML(可扩展标记语言)是从称为SGML(标准通用标记语言)的更加古老的语言派生出来的。SGML的主要目的是定义使用标签来表示数据的标记语言的语法。标签由包围在一个小于号()之间的文本组成,例如。起始标签(start tag)表示一个特定区域的开始,例如;结束标签(end tag)定义了一个区域的结束,除了在小于号之后紧跟着一个斜线(/)外,和起始标签基本一样,例如。SGML还定义了标签的特性(attribute),它们是定义在小于号和大于号之间的值,例如中的src特性。如果你觉得它看起来很熟悉的话,应该知道,基于SGML的语言的最著名实现就是原始的HTML。在XML中,采用了如下的语法:1.

29、 任何的起始标签都必须有一个结束标签。2. 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如。XML解析器会将其翻译成。3. 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a sample string。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。4. 所有的特性都必须有值。5. 所有的特性都必须在值的周围加上双引号。如今,XML已经是世界上发展最快的技术之一。它的主要目的是使用文本以结构化的方式来表示数据。在某些方面,XML文件

30、也类似于数据库,提供数据的结构化视图16。2.8 多线程每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行17。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立18。线程又称为轻

31、量级进程,它和进程一样拥有独立的执行控制,由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”19。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此将带来的线程调度,同步等问题20。使用线程的好处有以下几点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快。在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。3 系统设计3.1 系统设计思想

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1