Windows Phone游戏开发毕业设计_第1页
Windows Phone游戏开发毕业设计_第2页
Windows Phone游戏开发毕业设计_第3页
Windows Phone游戏开发毕业设计_第4页
Windows Phone游戏开发毕业设计_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、编号 本科生毕业设计Windows Phone游戏开发俄罗斯方块Game Development based on Windows PhoneTetris学 生 姓 名专 业学 号指 导 教 师学 院2012年 6 月 摘要俄罗斯方块是一个老幼皆宜的小游戏。它的核心是各种不同类型的方块,方块由四块正方形的色块组成,然后存储在一个数组的四个元素中。计算机随机产生不同七种类型的方块,然后程序根据这七种方块堆叠成各种不同的模型。如果某一行被方块完全填充,就利用C#类提供的置换方法,将此行中填充的方块数据清除,并增加相应的积分。论文遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、

2、概要设计、详细设计,整个开发过程贯穿软件工程的知识体系。本文设计实现了一个Windows Phone上可运行的俄罗斯方块游戏。文中涉及到了Windows Phone应用程序制作,以及触摸操作、重力感应的实现和XNA技术的掌握等知识,测试运行良好,实现了预期的功能。关键词:俄罗斯方块 Windows Phone 重力感应 消行AbstractTetris is a game for all ages. At its heart is a variety of different types of squares, four square blocks of color, and then sto

3、red in an array of four elements. The computer randomly generated seven types box, and then stacked into a variety of different models procedures based on these seven boxes. If a line is the box completely fill replacement method using C # class, filled squares in this row data cleanup, and increase

4、 the corresponding points.The paper follows the knowledge of software engineering, start from the definition of a software problem, and then conduct a feasibility study, requirements analysis, preliminary design, detailed design, and the entire development process throughout the software engineering

5、 body of knowledge. This article was designed and implemented a Tetris game can run on Windows Phone. Windows Phone applications involved in production, as well as touch operation, the realization of the gravity sensing and XNA grasp of the technology and knowledge, a good test run to achieve the de

6、sired function.Keywords: Tetris; Windows Phone; Gravity sensing; Eliminate line目录 TOC o 1-3 h z u HYPERLINK l _Toc328390267 摘要 PAGEREF _Toc328390267 h I HYPERLINK l _Toc328390268 Abstract PAGEREF _Toc328390268 h II HYPERLINK l _Toc328390269 目录 PAGEREF _Toc328390269 h I HYPERLINK l _Toc328390270 第1章

7、绪论 PAGEREF _Toc328390270 h 1 HYPERLINK l _Toc328390271 1.1 游戏的意义与内涵 PAGEREF _Toc328390271 h 1 HYPERLINK l _Toc328390272 1.2 俄罗斯方块游戏 PAGEREF _Toc328390272 h 1 HYPERLINK l _Toc328390273 1.3 可行性研究 PAGEREF _Toc328390273 h 1 HYPERLINK l _Toc328390274 1.3.1 设计目的 PAGEREF _Toc328390274 h 1 HYPERLINK l _Toc3

8、28390275 1.3.2 可行性研究前提 PAGEREF _Toc328390275 h 1 HYPERLINK l _Toc328390276 1.3.3 可行性分析 PAGEREF _Toc328390276 h 2 HYPERLINK l _Toc328390277 1.3.4 结论 PAGEREF _Toc328390277 h 2 HYPERLINK l _Toc328390278 1.4 开发环境 PAGEREF _Toc328390278 h 2 HYPERLINK l _Toc328390279 第2章 系统开发的平台 PAGEREF _Toc328390279 h 3 H

9、YPERLINK l _Toc328390280 2.1 C#产生的历史与现状 PAGEREF _Toc328390280 h 3 HYPERLINK l _Toc328390281 2.2 C#语言的特点 PAGEREF _Toc328390281 h 4 HYPERLINK l _Toc328390282 2.3 Microsoft Visual studio 2010 PAGEREF _Toc328390282 h 5 HYPERLINK l _Toc328390283 2.4 Windows Phone PAGEREF _Toc328390283 h 5 HYPERLINK l _To

10、c328390284 2.5 XNA Framework PAGEREF _Toc328390284 h 5 HYPERLINK l _Toc328390285 第3章 需求分析 PAGEREF _Toc328390285 h 7 HYPERLINK l _Toc328390286 3.1 引言 PAGEREF _Toc328390286 h 7 HYPERLINK l _Toc328390287 3.2 总体需求分析 PAGEREF _Toc328390287 h 7 HYPERLINK l _Toc328390288 3.3 分析规划 PAGEREF _Toc328390288 h 7 H

11、YPERLINK l _Toc328390289 3.3.1 下坠物及各种变换需求分析 PAGEREF _Toc328390289 h 7 HYPERLINK l _Toc328390290 3.3.2 正常工作和中断操作的需求分析 PAGEREF _Toc328390290 h 7 HYPERLINK l _Toc328390291 3.3.3 主界面需求分析 PAGEREF _Toc328390291 h 8 HYPERLINK l _Toc328390292 3.3.4 记分需求分析 PAGEREF _Toc328390292 h 9 HYPERLINK l _Toc328390293

12、第4章 系统概要设计 PAGEREF _Toc328390293 h 11 HYPERLINK l _Toc328390294 4.1 游戏设计所要遵循的规范 PAGEREF _Toc328390294 h 11 HYPERLINK l _Toc328390295 4.2 设计思想 PAGEREF _Toc328390295 h 11 HYPERLINK l _Toc328390296 4.2.1 游戏总体设计分析 PAGEREF _Toc328390296 h 11 HYPERLINK l _Toc328390297 4.2.2 方块及地图数据模块的设计 PAGEREF _Toc328390

13、297 h 11 HYPERLINK l _Toc328390298 4.3 系统功能模块图 PAGEREF _Toc328390298 h 13 HYPERLINK l _Toc328390299 4.3.1 流程图 PAGEREF _Toc328390299 h 13 HYPERLINK l _Toc328390300 4.3.2 类的结构图 PAGEREF _Toc328390300 h 15 HYPERLINK l _Toc328390301 第5章 系统详细设计 PAGEREF _Toc328390301 h 16 HYPERLINK l _Toc328390302 5.1 方块与地

14、图模块设计 PAGEREF _Toc328390302 h 16 HYPERLINK l _Toc328390303 5.2 得到方块 PAGEREF _Toc328390303 h 17 HYPERLINK l _Toc328390304 5.3 方块的翻转与移动 PAGEREF _Toc328390304 h 19 HYPERLINK l _Toc328390305 5.3.1 方块的移动 PAGEREF _Toc328390305 h 19 HYPERLINK l _Toc328390306 5.3.2 方块的翻转 PAGEREF _Toc328390306 h 20 HYPERLINK

15、 l _Toc328390307 5.4 满行消除 PAGEREF _Toc328390307 h 24 HYPERLINK l _Toc328390308 5.5 升入下一关 PAGEREF _Toc328390308 h 26 HYPERLINK l _Toc328390309 第6章 游戏测试 PAGEREF _Toc328390309 h 29 HYPERLINK l _Toc328390310 6.1 测试的意义及注意事项 PAGEREF _Toc328390310 h 29 HYPERLINK l _Toc328390311 6.2 测试的步骤 PAGEREF _Toc328390

16、311 h 29 HYPERLINK l _Toc328390312 6.3 测试结果 PAGEREF _Toc328390312 h 31 HYPERLINK l _Toc328390313 总结 PAGEREF _Toc328390313 h 32 HYPERLINK l _Toc328390314 参考文献 PAGEREF _Toc328390314 h 33 HYPERLINK l _Toc328390315 致谢 PAGEREF _Toc328390315 h 34 HYPERLINK l _Toc328390316 附录A PAGEREF _Toc328390316 h 35 HY

17、PERLINK l _Toc328390317 附录B PAGEREF _Toc328390317 h 39第1章 绪论1.1 游戏的意义与内涵游戏这个名词一直就存在于每个人的日常生活中,如猜拳游戏、猜谜游戏、大地游戏、球类游戏等,林林总总,不胜枚举,甚至于有些流行歌曲把人生也比喻为游戏,好比“一场游戏一场梦” 。因此,游戏对于现代人的成长历程,绝对是一个不可或缺的重要角色。1.2 俄罗斯方块游戏俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令

18、人上瘾。但是经过时代的变迁,当初简单却变化无穷的俄罗斯方块游戏如今却已失去了它的市场,究其原因,主要是因为游戏硬件以及技术的革新使得优秀的游戏接二连三地推出,而俄罗斯方块游戏作为一款形式、内容过于简单的游戏势必经受不住时间的冲击的。现在笔者将改写这个固定的游戏模式,通过增加一系列的新功能,开发出一种全新的俄罗斯方块游戏,使游戏用户重新燃起对俄罗斯方块游戏的热爱。1.3 可行性研究1.3.1 设计目的综合运用在校期间所学理论知识和技能,设计开发俄罗斯方块,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,提高工程实践能力,为将来实际工作打下坚实的基础。1.3.2 可行性研究

19、前提基本需求:系统开发的总体任务是实现游戏的可操作性、美观性、及时性,及适当的功能扩展。主要开发目标:采用结构化设计方法,开发出一个可操作性、美观性、及时性的游戏,并通过此次软件开发过程全面提高自身的综合素质。13可行性研究所采用的方法和步骤:通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个有一定可玩性的游戏软件。评价尺度:本游戏尽量追求游戏操作的合理性及正确性,但是仍不排除会出现一些偶然性的错误;同时游戏也尽量追求界面的美观性及功能的丰富性,但是基于时间的关系,可能会有极少数的拓展功能不能实现。1.

20、3.3 可行性分析管理可行性:本游戏设计的目的只在于提高自身实践水平,并不对外发布,因此完全具有管理可行性。经济可行性:由于本游戏的主要背景是毕业课程设计,不注重直接的经济效益和其后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台电脑便可,所以不用考虑到经济问题。技术可行性:可用与本游戏的编程语言据微软称有120多种,考虑到用于编写程序的困难度,和对语言的了解程度,选择C#作为编程语言。需要对图形界面设计、事件处理、多媒体等有一定了解。社会可行性:本游戏的开发作为毕业课程设计以巩固先前所学的知识,以个人为单位,仅供个人平常娱乐所用,无须考虑有可能造成的社会影响,不用

21、考虑到法律、版权等的社会因素,所以在这方面是完全可行的。1.3.4 结论综上所述,本游戏软件的技术成熟、完备。各方面均无重大问题,因此本游戏软件可开始着手编。1.4 开发环境作为面向对象的程序设计语言,C#语言有着广阔的应用领域,本系统将采用 Microsoft Visual Studio 2010做软件开发环境,结合微软提供的XNA架构,实现相应的功能。第2章 系统开发的平台 C#产生的历史与现状1999年,微软公司开始研发一种名为Cool的新开发语言,而具体内幕一直是个谜。直到2000年6月26日微软公司在奥兰多举行的职业开发人员技术大会(PDC 2000)上,这个谜底才揭晓,这种新的、先

22、进的、面向对象的开发语言就是C#(发音为C Sharp)。那么微软公司为什么要开发C#,C#究竟能给开发者带来什么好处呢?1995年,Sun公司正式推出了面向对象的开发语言Java,并提出了跨平台、跨语言(Write Once and Run Anywhere)的概念,此后Java逐渐成为了企业级应用系统开发的首选工具,而且使得越来越多的基于C/C+的应用开发人员转向了从事基于Java的应用开发。Java的先进思想使其在软件开发领域大有山雨欲来风满楼之势。10很快,在众多研发人员的努力下,微软公司也推出了自己基于Java语言的编译器Visual J+。Visual J+在最短的时间里由1.1版

23、本升级到了6.0版本。这不仅仅是数字上的变化,集成在Visual Studio 6.0中的Visual J+ 6.0的确有了质的变化:不但虚拟机(JVM)的运行速度大大加快,而且增加了许多新特性,同时支持调用Windows API,这些特性使得Visual J+成为强有力的Windows应用开发平台,并成为业界公认的优秀Java编译器。不可否认,Visual J+具有强大的开发功能,但其主要运用在Windows平台的系统开发中。Sun公司认为Visual J+违反了Java的许可协议,即违反了Java开发平台的中立性,因而,对微软公司提出了诉讼,这使得微软公司处于极为被动的局面。11就在人们认

24、为微软公司的局面不可能再有改观的时候,微软公司却另辟蹊径,决定推出其进军互联网的庞大计划-.NET计划和该计划中旗帜性的开发语言-C#。微软公司的.NET是一项非常庞大的计划,也是其此后几年发展的战略核心,在任何时间、任何地点,采用相应的设备以获取所需的信息的梦想并非一朝一夕就能实现。Visual Studio .NET则是微软.NET的技术开发平台,其重要性可见一斑,而C#就集成在Visual Studio .NET中。为了支持.NET平台,Visual Studio .NET在原来Visual Studio 6.0的基础上进行了极大的修改和变更。在Visual Studio .NET 版中

25、你会发现Visual J+消失了,取而代之的就是C#语言。微软公司对C#的定义是:C#是一种类型安全的、现代的、简单的,由C和C+衍生出来的面向对象的编程语言,它牢牢根植于C和C+语言之上,并可立即被C和C+的使用者所熟悉。C#的目的就是综合Visual Basic(简称VB)的高生产率和C+的行动力。这个定义是恰如其分的,因为在Visual Studio .NET中,我们已经可以利用C#极其轻松地开发出强大的企业级分布式应用系统了。2.2 C#语言的特点快速应用开发(RAD)功能支持快速应用开发(Rapid Application Development,RAD)可以说是目前开发语言最为重要

26、的一大功能,这也正是C/C+的致命伤。网络时代应用系统的开发必须按照网络时代的速度来进行。支持快速开发可以使得开发人员的开发效率倍增,从而使得他们可以从繁重的重复性劳动中解放出来。C#的RAD功能之一是垃圾收集机制,它将减轻开发人员对内存的管理负担。利用C#的这些功能,可以使开发者通过较少的代码来实现更强大的应用程序,并且能够更好地避免错误发生,从而缩短应用系统的开发周期。2语言的自由性用C#编写的程序能最大程度地和任何支持.NET的语言互相交换信息。能够继承和使用任何语言所编写的程序可以称得上是知识的继承,这样做的好处是节省了大量的工作,而不必把COBOL等语言强行改成另一种语言,.NET让

27、各种语言真正地互相交流了。9C#和其他.NET语言有着最好的协作,这点对开发人员非常重要。全球从事编写软件的人当中,大约有50%以Visual Basic作为基本的编程工具。在跨入.NET编程时代的时候,这些人轻松地使用了VB.NET开发Web上的应用程序。想想以后你居然可以和你的那些只懂VB的同事真正在一起共同开发.NET的应用程序,这是不是一件让人轻松和高兴的事情呢?强大的Web服务器端组件在C#的Web编程中,最让人兴奋的是Web服务器端的组件,它们不仅包括传统组件,还包括那些能够自动连接五花八门服务的可编程组件。你可以用C#编写自己的服务器端组件。服务器端组件和标准的HTML提供的服务

28、自然是不一样的,使用它们可以更自由、更容易地进行数据绑定。15更多服务器组件很快会出现,有了这些强大的组件,我们可以设计出功能更加强大的企业级分布式应用系统。支持跨平台随着互联网应用程序的应用越来越广泛,人们逐渐意识到由于网络系统错综复杂,使用的硬件设备和软件系统各不相同,因此开发人员所设计的应用程序必须具有强大的跨平台性。C#编写的应用程序就具有强大的跨平台性,这种跨平台性也包括了C#程序的客户端可以运行在不同类型的客户端上,比如PDA、 等非PC装置中。与XML的融合由于XML技术真正融入到了.NET和C#之中,C#的编程变成了真正意义上的网络编程,甚至可以说.NET和C#是专为XML而设

29、计的。使用C#的程序员可以轻松地用C#内含的类来使用XML技术。就这方面而言,C#给程序员提供了更多的自由和更好的性能来使用XML。对C+的继承C#继承并保留了C+的强大功能,例如, C#保留了类型安全的检测和重载功能,C#还提供了一些新功能取代了一些原来的ANSI C预处理程序的功能,提高了语言的类型安全等安全性。2.3 Microsoft Visual studio 2010 HYPERLINK :/baike.baidu /view/28727.htm t _blank Visual Studio是微软公司推出的开发环境。是目前最流行的 HYPERLINK :/baike.baidu /

30、view/4821.htm t _blank Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日上市,其 HYPERLINK :/baike.baidu /view/14867.htm t _blank 集成开发环境(htm t _blank IDE)的界面被重新设计和组织,变得更加简单明了。9Visual Studio 2010同时带来了. HYPERLINK :/baike.baidu /view/1378338.htm t _blank NET Framework4.0、Microsoft Visual Studio 2010 CTP( C

31、ommunity Technology Preview-CTP),并且支持开发面向aike.baidu /view/761518.htm t _blank Windows 7的应用程序。除了 HYPERLINK :/baike.baidu /view/1626075.htm t _blank Microsoft SQL Server,它还支持 HYPERLINK :/baike.baidu /view/1937.htm t _blank IBMu /view/387066.htm t _blank DB2和 HYPERLINK :/baike.baidu /view/15020.htm t _

32、blank Oracle数据库。 Windows PhoneWindows Phone 是微软新发布的新一代 操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至 中。142010年10月11日晚上9点30分,微软公司正式发布了智能 操作系统,微软将谷歌的Android和苹果的IOS列为Windows Phone的主要竞争对手。Windows Phone具有桌面定制、图标拖拽、滑动控制等一系列前卫的操作体验。其主屏幕通过提供类似仪表盘的体验来显示新的电子邮件、短信、未接来电、日历约会等,让人们对重要信息保持时刻更新。它还包括一个增强的触摸屏界面,更方便手指操作;以

33、及一个最新版本的IE Mobile浏览器该浏览器在一项由微软赞助的第三方调查研究中,和参与调研的其它浏览器和 相比,可以执行指定任务的比例超过高达48%。3很容易看出微软在用户操作体验上所做出的努力,而史蒂夫-鲍尔默也表示:“全新的Windows 把网络、个人电脑和 的优势集于一身,让人们可以随时随地享受到想要的体验。2.5 XNA FrameworkXNA中的X表示能够在Windows Xbox和合作伙伴之间达到跨平台的强大的软件工具。N表示“下一代(Next-generation)”,A表示“架构(Architecture)”。XNA是基于DirectX的游戏开发环境,是微软对于 Mana

34、ged DirectX 的修正及扩充版本。XNA Framework 是建置于 HYPERLINK ://wiki/.NET_Framework o .NET Framework 上,XNA 将 HYPERLINK ://wiki/DirectX o DirectX DirectX的功能以 HYPERLINK ://wiki/%E5%8F%97%E6%8E%A7%E4%BB%A3%E7%A2%BC o 受控代码 受控代码的方式封装运作(因此微软终止了Managed DirectX 9.0的开发,所以

35、有人称XNA为Managed DirectX 2.0),另外还加入了一些专注于游戏开发上 HYPERLINK ://wiki/%E5%87%BD%E5%BC%8F%E5%BA%AB o 函式库 类别库,在指定的平台上使“程式码重用”达至最大效果。XNA Framework 在一个特别为有管理式游戏运行的 HYPERLINK ://wiki/%E9%80%9A%E7%94%A8%E8%AA%9E%E8%A8%80%E9%81%8B%E8%A1%8C%E5%BA%AB o 通用语言运行库 通用语言运行库(Common Language

36、 Runtime)版本上运行。这个执行层支援 HYPERLINK ://wiki/Windows_XP o Windows XP Windows XP、Windows Vista、windows 7、windows phone 7、 HYPERLINK ://wiki/XBox_360 o XBox 360 XBox 360和将要到来的Windows 8。由于游戏是开发在执行层上,使得游戏能在所有支持XNA Framework 的平台上只要很少甚至不需要任何更改便能运行。现时所有在XNA Framework 上的游戏必需使用 HY

37、PERLINK ://wiki/C_Sharp o C Sharp C #和XNA Game Studio Express IDE开发。XNA 的程式都是继承自Game class,它包含了所有重要的游戏组件,比如图形设备(Graphic Device)、窗口设置以及内容管理器,你也可以添加Game Component class到你的Game class。XNA Framework 把所有用作游戏编程的低阶技术封装起来,例如XNA提供了Effect(Basic Effect)类别来处理大部分绘图着色相关的工作,开发人员不需再理会“矩阵变量”相乘,只要指定物件的

38、World、View、Projection即可,其相乘效果由Shader档自动处理。Effect 本身还能用于加载和编译Shader, Effect .Current Technique 可用于指定technique, 像是Ambient Light; Effect .Set Value可以用来设定Shader的参数。一个effect包含一个或多个technique,一个technique包含一个以上的pass。在pass里面可能还有Vertex Shader, Pixel Shader,这些元素构成一份effect文件, 这也就是极简化后的HLSL程式码。因此,游戏开发人员就可以专注于游戏内

39、容开发而不用关心游戏移植至不同平台上的问题,游戏只要开发于XNA 的平台上,所有硬件只要支援XNA都能运行。XNA Framework 还内置一些工具,例如 HYPERLINK ://wiki/XACT o XACT XACT以帮助游戏内容开发。这些工具还能帮助开发视觉和听觉效果拟真度很高的模型制作。XNA Framework 同时支持2D 和3D 的游戏开发也支援Xb格式,而且被用来加载纹理(Texture)、3D模型、 HYPERLINK ://wiki/%E7%9D%80%E8%89%B2%E5%99%A8 o 着色器 着色

40、器(Shader)。Shader指令经过编译之后,直接加载到显卡上的 HYPERLINK ://wiki/GPU o GPU GPU来执行。5 HYPERLINK ://wiki/Xbox_Live o Xbox Live Xbox Live卖场可以升级开发者的XNA Game Studio Express 以使能把他们开发的游戏用于 HYPERLINK ://wiki/Xbox_360 o Xbox 360 Xbox 360上。第3章 需求分析3.1 引言对软件需求完全理解对于软件开发工作的成功是

41、至关重要的,需求说明的任务是发现、规范的过程,有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。3.2 总体需求分析剖析游戏的实质,可以发现:首先,该游戏需要一个良好且可控的界面,能够接受鼠标(手指按下)和键盘(手指滑动或者重力感应)的响应,可以供玩家选择自己想要的游戏级别、背景颜色和是否开启背景音乐,实现个性化设置;其次,由于游戏涉及到许多不同种类的下坠物,所以需要来构造这些下坠

42、物并且设置一种旋转规则实现下坠物的各种旋转;再者,在游戏过程中,必须要处理好下坠物的一些事件,例如自动下落,消除满行,下一个下坠物的显示以及游戏的自主升级。3.3 分析规划3.3.1 下坠物及各种变换需求分析本游戏需要有7种下坠物,而每种下坠物还可以进行旋转。每种下坠物每行每列最多只有4个小下坠物。可以将它们放在一个n*m的区域内,该区域可以看作是有许多个等面积小下坠物构成的区域,而这些区域的状态只有两种,被下坠物占据或空闲,因此,对于整个游戏区域的空间是占据或空闲,可以用一个函数来标识。对于7种下坠物和它们旋转后的形态我们可以用不同的标识进行标记。对于旋转,游戏中所有下坠物都是按照逆时针旋转

43、的规则进行的,而且在旋转过程中它们不会因为旋转而下降,总会保持在同一高度。任何下坠物经过一个旋转周期还会变回原型。3.3.2 正常工作和中断操作的需求分析在无人操作时,游戏开始后会随机产生一个下坠物,先显示在界面右上角的显示区域,然后转到游戏区域,右上角又随机产生一个新的下坠物,当该下坠物下落到底后,新的下坠物再次进入游戏区域,如此循环,直到游戏结束暂停,这就是游戏的正常工作。上述过程是在无人操作时游戏自动运行的,当用户进行一定的操作交互的时候,运行程序可以根据用户的操作指示进行当前下坠物的控制。而这些操作都是响应相关的功能键而执行的,所以这里可以把它看成一种“中断”的操作。在中断过程中,可以

44、通过键盘包括按某些键进行操作。为了便于用户操作,用户可以自主选择操作键,但他们的作用不变。但还是应该设置默认键来方便操作。例如:光标向上键(手指向上滑动),光标向下键(手指向下滑动),光标向左键(手指向左滑动、 左边框向下),光标向右键(手指向右滑动、 右边框向下),空格键。按光标向上键 此事件产生下坠物旋转操作,下坠物并非任何情况都能旋转,如果旋转后与小方格矩阵显示的下坠物有冲突或超出边界时,均不能发生旋转。因此首先要判断是否有足够的空间进行旋转,然后选择是否旋转。按光标向下键此事件产生下坠物加速下落操作,如果下坠物已经到达游戏区域底部或者已经有其他方块遮挡,则下坠物停止下降。按光标向左键此

45、事件产生下落下坠物左移操作。首先要判断此下坠物是否能够发生左移,当越界或被其他显示下坠物阻挡时,则不能左移。按光标向右键此事件产生下落下坠物右移操作。首先要判断此下坠物是否能够发生右移,当越界或被其他显示下坠物阻挡时,则不能右移。按空格键此事件产生下坠物一键到底的操作,如果下坠物已经到达游戏区域底部或者其下方已经有其他方块遮挡,则下坠物不能再下降。3.3.3 主界面需求分析主界面需求分析主要包括界面的显示,快捷键的使用。首先,根据游戏本身的需要,应该在游戏界面里设置三个选项,分别为游戏、选项和帮助,在“游戏”里应该同时设置开始游戏、游戏暂停、游戏结束、游戏设置和退出系统五个选项,以便于玩家轻松

46、的控制这个游戏。而在“选项”里应该根据玩家对这个游戏的掌握程度的不同设置不同的游戏级别,大致设想分为六级,即入门级、初级、中级、中高级、高级和顶级,这样玩家就会根据自己的情况选择不同的级别。同时在这个“选项”里还有其他选项,以供用户实现个性化设置。例如玩家可根据喜好选择是否要开启背景音乐,是否在游戏中开启音效,还可以根据自己喜欢的颜色选择背景颜色等。在“帮助”的菜单项里应该有对游戏的文字描述和设计者的一些情况,这样可以极大方便从来没玩过此游戏的玩家。如果玩家对游戏规则有任何不理解,在这里可以找到相应的用户帮助。其次,我们为了方便玩家还应该为这个游戏增加了一个放置常用功能的快捷键,以便用户可以通

47、过鼠标点击而直接对相应的选项功能进行实现。这些常用功能选项可以分别是游戏的“开始”、“暂停”、“结束”、“设置”,这样就简化了用户的操作,为了美观,我们还应对按键添加相应的按钮图标。最后,我们还应该会在界面的右方出现游戏的具体信息,例如当前游戏的级别、目前所得的分数和游戏区域设置。并会在界面的右上方出现下一个将要下落下坠物的形状,这样可以方便玩家更轻松的完成这个游戏。“开始”按钮点击“开始”,游戏即开始运行。区域右上角随机显示下一个下落的下坠物还有级别、分数、区域大小。另外,应该把“开始”和“设置”菜单设置成灰色,“暂停”和“结束”菜单恢复显示。“结束”按钮应该将当前程序中止,并将状态恢复至初

48、始状态。“暂停”按钮暂停即要停止当前下坠物的下落,将程序状态保存。同时应该使“暂停”菜单变成灰色,“开始”菜单恢复显示。“设置”按钮为了方便操作,可以添加这样一个按钮,从而可以进行区域大小,游戏级别,下坠物样式,背景音乐,任意键的设置。而且它的进行必须在开始游戏之前,在游戏中不可以对其进行设置。3.3.4 记分需求分析计分需求主要是描述游戏中的得分规则以及英雄榜的排列规则,得分要看具体一次的消行数X,根据公式X*(X*100)来计算。消除一行100分,消两行400分,消三行900分,消四行1600分。级数可以根据玩家的初始选择和玩家的表现共同决定。游戏的级数选择可以有入门级、初级、中级、中高级

49、、高级、顶级。通过每一个级别的关卡后,游戏应该会自动为其升级,游戏会自动进入下一级。升入下一级后,速度自然加快,经过分析,速度通过设置一个触发器在根据不同的级别选择选择方块下落的间隔时间。当升到最高级后,程序不再为其升级,但分数将会继续累加。为了方便用户,游戏可以不设置通关,玩家可以玩到尽兴。为了吸引玩家,在游戏过程中,我们应该为不同的游戏情况增添了有不同的音效。例如,下坠物销行时,会产生一个特别音效;下落时会产生另一个特别音效;在游戏晋级时,也会产生一个“祝贺”的音效。我们还应设置俄罗斯方块英雄榜,它可以纪录得分最高的前八名,记分榜保存在一个文件当中。当游戏结束后,如果玩家的得分进入前八名,

50、游戏会请玩家输入他的姓名并且显示他的得分,录入成绩后游戏会自动进行排名,记分显示在游戏界面的上方。每次在玩家开始于游戏之前,玩家可以通过菜单栏打开一个对话框来查看榜单记录情况。第4章 系统概要设计4.1 游戏设计所要遵循的规范一个良好的程序,在编写之前,必须要制定各种编写规范,以便组内各成员协调工作。当然,本游戏只是一个小程序,过多的规范制定显得没有必要,但是,也必须制定一个对于变量的命名规则,这有利于设计出一个可读性高的程序。本程序变量的命名规则为:所有变量一律使用相应的英文单词命名如果同一类中需要创建多个同一类型,功能相似的变量,变量的前缀应使用统一的英文单词,后缀为下划线“_”加数字。比

51、如,从JButton对象创建开始按钮,可以命名为:startbutton。再如,创建多个道具按钮,可以命名为toolbutton_1,toolbutton_2等等。方法命名尽量使用能够描述本方法功能的英文单词。比如,游戏初始化可以用gameinitial。类名的命名也应当使用能够描述本类功能的英文单词。比如方块类,可以用class block。4.2 设计思想 游戏总体设计分析C#为纯面向对象的程序语言,它的诸多优点在此就不作论述了。从面向对象的观念出发,本程序主要可分为以下几个模块:方块及地图数据模块游戏操作模块系统运行支撑模块配置模块分析对象的技巧在于它的功能的扩展性及维护效率。试想,如果

52、因为外部环境或者用户需求的变化需要对程序进行功能扩展或者维护,就要对代码作大幅度的更动甚至重写,这样就失去了面向对象的优势,所以在本程序分析时将独立性高的模块作为一个对象,以提高程序的可扩展性和可维护性。4.2.2 方块及地图数据模块的设计这是俄罗斯方块游戏最基本的功能模块,本游戏的设计思想是只要有客户端控制器及方块地图数据模块,就能实现游戏的基本功能。本模块其实可以分开为方块和地图两个模块,但考虑到二者联系紧密,需要共享数据结构,属于公共耦合,耦合性过高,将二者分开也有悖于作者设计的游戏算法,增加了程序的编写难度,故把它们并作了一个对象。方块数据方块数据存储了七种不同形态的方块,以及每个方块

53、的四种形态,可用一个7x4x4x4的四维数组表示,例如,定义一个四维数组block7444,数组block的第一维表示七种不同形态的方块,第二维代表方块的四种不同翻转状态。数组的第三维和第四维代表某一种形态的方块的某一状态。假定,block00ij的值如以下:1,1,0,00,1,0,00,1,0,00,0,0,0则,block00ij代表“7”字型的方块。当方块翻转时,只需改变第二维的下标即可,即,block00ij变为block01ij。而如果更改方块形态,就改变数组第一维坐标。 地图数据本游戏的游戏地图为25x15格,故应当用一个25行15列的二维数组存储游戏地图数据,但是考虑到本游戏嵌

54、入了方块越界自动纠正功能,而方块越界,实际上就是游戏地图数组越界。假定,方块数据有以下数据模式,代表长条形的一种方块:0,0,0,10,0,0,10,0,0,10,0,0,1当以上数据模式所代表的方块处在游戏的左边界区,并且发生翻转时,方块可能翻出游戏地图外,在这种情况下,就发生了游戏地图数组越界,C#异常处理系统会抛出Array Index Out Of Bounds Exception,为避免这种情况的发生,游戏地图数组应当适当增大,故本游戏将地图数组长度和宽度各扩大了三个单位,定义成为28x18模式的数组。建立游戏的坐标系统俄罗斯方块,最终是要将方块绘到游戏地图中,如何确定方块在地图上的

55、位置,就需要一个方块数组与游戏地图数组的映射关系。建立一个合理的坐标系统,对于游戏的设计有莫大的方便。结合C#的坐标系统,综合游戏设计上的考虑,本程序最终确定了将游戏地图的左上角坐标表示为(0,0),同样,方块在游戏地图中表示为记录方块左上角在游戏地图中的坐标。对方块数据和游戏数据的操作确定了方块数据与地图数据的映射关系,对方块和游戏数据的操作就变得简便了。对方块的操作包括方块的左移、右移、下移等,当方块左移时,只需将方块数组左上角的坐标往左方向移动一个单位即可,同理,方块右移、下移时,只需将坐标往右、往下移动一个单位。如果以X代表方块左上角的横坐标,以Y代表纵坐标,方块左移,执行的操作是X-

56、,方块右移,执行的操作是X+,方块下落,执行的操作是Y+。游戏绘图俄罗斯方块具有七种不同形态的方块,而方块又分别有正在下落和已经落下固定两种不同状态,如何在游戏地图中实现静态和动态地绘制出七种不同形态的方块,具有一定的挑战性。经过反复思考论证,本游戏决定采用不同的绘制模式来分别实现绘制动态和静态方块。游戏地图数组实现坠下方块的消行绘制当坠下的方块有满行需要重新绘制时,需要进行消行绘制。首先,可用一个数值代表游戏地图数组的某一个区域是否有方块填充,假定这个数值是2,即如果地图数组中某一个元素的值为2,则表示这个元素所代表的地图区域存在方块。进行消行绘制时需要判断地图数组的某一行是否全为2,如果全

57、为2,则可以认为这行被方块填满,需要进行消行,然后再继续往下判断下一行,直到所有满行被消除为止。 系统功能模块图 流程图图4-1 时钟处理流程图图4-2 主窗口处理流程4.3.2 类的结构图图4-3 类列表图4-4 Block类图图4-5 BasePage类图图4-6 Button类图第5章 系统详细设计5.1 方块与地图模块设计方块与地图模块是游戏中最主要的模块,本模块存储了游戏最重要的两个数据结构方块四维数组和地图坐标二维数组,以及对这两个数据结构的操作。这些操作就构成了游戏中最基本也是最主要的功能,如得到方块、方块的翻转移动、满行消除等等。本模块中方块的数据结构用一个四维数组存储,数组的

58、第一维代表方块的形态,即是哪一种方块,第二维代表某种方块的一个翻转状态,第三和第四代表的是具体的方块。例如,定义一个四维数组,int blockblocktypeturnstateij,这就是七种方块、四种状态,一共二十八个方块的模型。当然,这其中,有一些方块的几种翻转状态是一样的,比如,长条形的方块,只有两种翻转状态,田字形的方块,只有一种翻转状态,这些方块在方块数组中存储的多种状态也就是一样的。4如何将方块绘制到地图中去,可以说是游戏主模块中最大的难题,有了良好的方块数据结构和地图数据结构,这个难题也就变得简单了。只要得到方块数组在游戏地图中的坐标,然后遍历方块数组,将方块数组中值为1的地

59、方绘上一个单位的正方形格子,方块数组遍历完毕后,也就在地图上绘制出了形状不规则的方块。良好的数据结构让方块的移动,满行消除等操作变得简单。方块的移动和满行消除,涉及到的是对游戏地图数据的操作,例如方块往下移,需要将游戏地图的横坐标也随着往下移动一个单位,往左往右移动也同样如此。方块满行消除,需要遍历游戏地图数组,发现某一行数值全为2,即认为这一行被方块填满,应该消去,行消去之后,应该把这行以上的数据全部向下移动一行,然后再继续往下检测,有满行就消行,再把上面的数据整体往下移动一行,如此重复,直到将所坠下方块占据的行数检测完为止。最后得到的就是消行之后方块的堆积状况和游戏地图数据了。本模块的主流

60、程图如图5-1所示:图5-1 方块和地图数据模块流程图5.2 得到方块如图5.1所示,游戏中得到方块分两种,一是当方块落下后得到一个新方块,显示在游戏地图中,接着得到一个NEXT方块,显示在NEXT方块画布中。这里,将要解决的问题就是怎么得到一个新方块,怎么得到一个NEXT方块,又怎么将NEXT方块作为下一个新方块。方块是有模型和颜色的,在得到一个方块前,还得先得到要出现的方块的模型和颜色,然后才能在画布中绘制出指定模型、指定颜色的方块。方块的模型每得到一个新方块,都是随机从七种形态的方块中选取一种。由概要设计中可以得出分析,可以定义一个变量,代表新方块的模型。比如定义int型变量blockt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论