1、1毕业设计论文题目JAVA的俄罗斯方块界面设计与实现2目录摘要4ABSTRACT51绪论611开发背景612俄罗斯方块的开发意义72可行性研究821设计目的922软件问题定义923可行性分析93需求分析931引言932方案论证错误未定义书签。4游戏的开发与编译1241编译工具简介1242硬件及软件开发平台1243功能设计1244系统功能模块1345功能流程图1846详细设计185游戏演示21351开始游戏2152系统测试2453按键时间功能测试246结论2561问题2562解决方法257参考文献264基于JAVA的俄罗斯方块摘要在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为
2、老少皆宜的娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件,所以并不是人人皆知。直到今天,在中国从事游戏设计的人仍然很少,但是游戏行业的发展之快,远超如家电、汽车等传统行业,也正因为如此,游戏人才的教育、培养远落后于产业的发展。俄罗斯方块是个老幼皆宜的小游戏,它实现由四块正方形的色块组成,然后存储在一个数组的四个元素中,计算机随机产生不同七种类型的方块,根据计算机时钟控制它在一定的时间不停的产生,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,(控制键的实现是由键盘的方向键的事件处理实现)。然后程序根据这七种方块堆叠成各种不同的模型。论文描述了
3、游戏的历史,开发此游戏的环境,游戏开发的意义。遵循软件工程的知识,从软件问题定义开始,接着进行可行性研究、需求分析、概要设计、详细设计,最后对软件进行了测试,整个开发过程贯穿软件工程的知识体系。此次设计在MICROSOFTWINDOWSXP系统下,以JAVA为开发关键词游戏设计算法,数组,事件5BASEDONLINUXREADWRITECONTROLOFEERROMABSTRACTINTHERAPIDDEVELOPMENTOFTHEELECTRONICINFORMATIONERA,COMPUTERGAMEHASPENETRATEDINTOPEOPLESDAILYLIFE,BECOMEAFAMI
4、LYFRIENDLYENTERTAINMENTBUTWITHTHETECHNOLOGYCHANGERAPIDLYINGAMEDESIGN,SOPHISTICATEDDESIGN,ART,AUDIOANDSOFTWAREINTEGRATIONINAPRODUCT,SONOTALLTHEWORLDKNOWSUNTILTODAY,INTHEGAMEDESIGNINCHINAARESTILLRARE,BUTTHEGAMEINDUSTRYISTHEDEVELOPMENTOFFAST,FARMORETHANTHEHOMEELECTRIC,AUTOMOBILEANDOTHERTRADITIONALINDUS
5、TRIES,BUTALSOBECAUSEOFTHIS,THEEDUCATIONOFTALENTSTRAININGGAME,DEVELOPMENTISFARBEHINDTHEINDUSTRYTETRISISAYOUNGANDOLDSAFEGAME,ITCONSISTSOFFOURSQUAREBLOCKSOFCOLOR,ANDTHENSTOREDINTHEFOURELEMENTOFANARRAY,THECOMPUTERRANDOMLYGENERATEDSEVENDIFFERENTTYPESOFBOXES,ACCORDINGTOTHECOMPUTERCLOCKCONTROLITATACERTAINT
6、IME,THEUSERACCORDINGTOTHEFOURKEYTOCONTROLTHEDIRECTIONOFTURNING,KEYBOARDLEFT,RIGHTANDDOWNOPERATION,CONTROLKEYISCOMPOSEDOFAKEYBOARDDIRECTIONKEYEVENTPROCESSINGTHENTHEPROGRAMBASEDONTHESEVENKINDSOFBOXESSTACKEDUPINTOVARIOUSMODELTHISPAPERDESCRIBESTHEHISTORYOFTHEDEVELOPMENTOFTHEGAME,THEGAMEENVIRONMENT,THEME
7、ANINGOFGAMEDEVELOPMENTACCORDINGTOSOFTWAREENGINEERINGKNOWLEDGE,FROMASOFTWAREPROBLEMDEFINITION,FEASIBILITYSTUDY,THENDEMANDANALYSIS,OUTLINEDESIGN,DETAILEDDESIGN,FINALLYAFTERTESTING,THEENTIREDEVELOPMENTPROCESSTHROUGHOUTTHESOFTWAREENGINEERINGBODYOFKNOWLEDGETHEDESIGNINMICROSOFTWINDOWSXPSYSTEM,DEVELOPEDBYJ
8、AVA6KEYWORDSARRAYINCIDENTALGORITHM7引言游戏是人们活动中一项非常重要的内容,有人认为如果哪一天人类对所有的游戏都失去兴趣,恐怕世界的末日就要到了。电脑对游戏的贡献有目共睹,现在摸过电脑的人很少有没玩过电脑游戏的,喜欢游戏的人也很少有不玩电脑的。俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人ALEXPAJITNOV制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早还是出现在PC机上,
9、而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在“联众俄罗斯方块“中,更有一些联众网络游戏所独有的魅力有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏,深受广大玩家喜爱。这个游戏有的简单,有的复杂,但其根本原理是一样的都是对运动的方块进行组合,来训练玩家的反应能力。谈到游戏软件,大多数人都认为其神妙莫测,高
10、不可及。而一般游戏软件也确实具有很高的技术难度,随着开发工具及软件开发方法学的不断发展,动手开发游戏也不是十分困难的。俄罗斯方块游戏是一种古老而又有趣的游戏,游戏软件不计其数,网上就有好多关于实现的复杂算法和设计,其难度让一般初学者望而却步。本文利用数组作为方块的数据结构,提出一种用JAVA语言实现的简易方法,对初学者可仿此开发类似游戏,并了解游戏软件的设计与开发过程。1绪论11电子游戏及其分类电子游戏,也就是运行在家用电脑、家用电子游戏机或是掌中宝游戏机及街机上的电子游戏程序。电子游戏是一种结合剧情故事、美术、音乐、动画、程序等技术于一身的互动型娱乐软件,涉及到多个行业。从电子游戏的分类来看
11、,有着多种分类方式。传统的游戏分类是按照游戏类型,将其分为即时战略游戏、第一人称射击游戏、角色扮演游戏、策略型游戏等类别。根据游戏运行平台的不同,可将电子游戏分为游戏机游戏、单机版PC游戏、互动电视游戏、在线游戏和手机游戏。此外,韩国政府将电子游戏业分为家用游戏机游戏、单机版PC游戏、网络游戏和街机游戏四大类。考虑到中韩游戏业比较接近,论文采用韩国的分类标准。“网络游戏”也就是人们一般所指的“在线游戏”,是指通过互联网进行的电脑游戏,通过人与人之间的互动达到交流、娱乐和休闲的目的。在互联网(局域网)技术出现之前,电子游戏都可以归于单机版游戏,即“人机对战”游戏,或最多是双人对战游戏。而随着互联
12、网技术的出现,通过连接游戏服务器,上百、上千、乃至上万的游戏玩家同时连线娱乐成为了现实,这就大大增加了游戏的互动性、真实性,丰富了电子游戏的内涵。从网络游戏的分类来看,目前业界还没有一个比较统一规范的分类。随着计算8机设备和网络技术的发展,电子游戏在全球得到了迅猛的发展,取得了巨大的成功,已成为当今世界上不可缺少的精神粮食。12电子游戏发展现状121电子游戏在国外的发展现状电子游戏是最初产生于美国,1971年,一个还在MIT就读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间。可以说时至今日,电子游戏仍然是外国的天下。美国至今仍是世界第一大游戏市场,它遵循的是以发行商为主的产
13、业开发链模式,根据美国市场调查公司NPDGROUP调查统计,美国2004年游戏总销售金额(包括家用、掌上型主机及软件)为99亿美元,占了全球游戏市场的45。其中游戏软件销售的具体数字是视频游戏软件的销售额达52亿美元16亿套,PC游戏软件销售额达11亿美元4500万套,掌机游戏销售额达10亿美元4230万套。2004年一共大约有248亿套游戏售出。据估计,美国每个家庭平均购买过2部游戏3。日本近20年来疯狂赚电子游戏的钱。从上世纪60年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过30多年的耕耘,终于把电子游戏这棵“摇钱树”,培育成第一时尚娱乐产业,垄断全球业界
14、长达10余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在GDP中占有1/5的举足轻重地位。日本游戏业在最辉煌的1998年,曾经占领全球电子游戏市场硬件90以上,软件50以上。韩国号称世界上网络游戏产业最发达国家之一。迄今为止,国内网络游戏市场有超过60的产品来自韩国游戏软件开发商,韩国网络游戏使国内很多游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的成功。韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多市场培育方面的工作。韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是将、娱乐产业视为新的经济增长点
15、,开始大力扶持。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了“富国兴邦”的重担。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游
16、戏院校,一些原本不涉足此领域的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。122电子游戏在国内的发展现状与电子游戏发达的国家相比,我国在电子游戏方面还存在比较大的差距。目前,我国游戏市场正处于发展阶段,但市场上的游戏软件主要来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成为游戏的主流。9中国的游戏产业经过80年代初期台湾厂商的探索至90年代,开始了自己的研发、发行的历程,直至网络游戏的风行,让中国的网络游戏开始有了飞速的发展。1983年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售
17、合约的公司,2000年智冠在台湾股票上市,2002年其控股的中华网龙在台湾上市。1996年底,UBISOFT上海分公司暨上海育碧电脑软件有限公司成立。同年,全球游戏软件领军企业EA在中国上海成立办事处。1997年,由尚洋公司制作的血狮正式上市。1997年,北京新天地互动多媒体技术有限公司成立,该公司引进了古墓丽影III(TOMBRAIDERIII)、盟军敢死队等著名欧美游戏,并在1999年在中国率先掀起“游戏软件价格革命”,全面推行50元的价格体系,从此正版游戏价格开始贴近大众消费者。1999年,业内估算中国电脑游戏市场(正版)约15亿元人民币。2000年,大陆华彩软件代理发行第一款中文MMO
18、RPG万王之王正式推出,该游戏于1999年在台湾发行,由台湾雷爵资讯LAGER开发。也在2000年,继万王之王、石器时代、网络三国在台湾上市之后,游戏桔子推出了天堂,游戏桔子成立于1995年,1999年以便利店在台湾奠定了地位。天堂这款由韩国著名游戏公司NCSOFT研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。2001年初,北京华义在中国大陆地区正式推出了石器时代,华义国际股份有限公司于1993年在台北成立,2001年在台湾股票上市。石器时代成为大陆当时最流行的网络游戏。2001年,天人互动软件技术有限公司在北京成立。当年与SEGA结成PC游戏业务的战略合作关系,发行了樱花大战文明无冬之
19、夜等经典游戏,2002年,引进在欧美网络游戏魔剑(SHADOWBANE),这是首款在中国测试的欧美网络游戏。2001年5月,“联众世界”经过3年多的迅速成长,以同时在线17万人、注册用户约1800万的规模,成为当时世界用户数量第一的在线游戏网站。2005年1月21日,中央电视台报道我国网络游戏产业当年增加了50,今后几年都将以50以上的速度增长;第一届中国网络游戏年会报道中国国内网络游戏2004年规模达247亿元,2009年规模将达到1096亿元。2可行性研究21设计目的通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发俄罗斯方块游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检
20、验学习效果和动手能力,初步掌握软件工程的系统理论,初步掌握MVC这种设计模式,进一步巩固和加强自身对J2SE基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。22软件问题定义基本要求本游戏开发的总体任务是实现游戏的可操作性,以及界面的美观性。整个开发过程遵循软件工程规范,采用JAVAGUI编程来实现界面以及事件的控制,用户根据键盘的四个方向键控制翻转、向左、向右和向下操作,通过菜单栏中的相应菜单选10项实现游戏的开始、结束、变换方块、积分以及等级的功能。目标通过本游戏的开发,主要实现游戏的可操作性以及美观性,同时使自己对JAVA语言的了解更进一层,为将来的实际工作打下坚实的基
21、础。条件、假定和限制由于知识以及能力的限制,本游戏所实现的功能不够强大,可对本游戏进行改善,从而增强游戏的功能。可行性研究的方法通过研究分析俄罗斯方块所具备的能力及实现的方法、确定主体结构。利用现阶段我所能达到的能力,以最简洁、最容易的办法,边开发边测试边修改,实现一个初级游戏软件。评价尺度由于本软件是一个初级产品,对其要求不是太苛刻,所以能够达到俄罗斯游戏的一般功能即可。23可行性分析技术可行性开发本游戏的编程语言有多种,考虑到自身对语言的掌握程度,选择JAVA语言进行游戏的开发,采用JAVAGUI编程来实现界面以及事件的控制。经济可行性本游戏的开发旨在完成毕业设计,不注重直接的经济效益和其
22、后的发展方向,只在注重自身水平和能力的提高,对自身的经济要求也不高,只要有一台能运行相应JAVA程序的电脑便可,所以不用考虑到经济问题。社会可行性本游戏的开发主要为了完成毕业设计,开发的主体是个人,不存在法律上的侵权行为,也不会为社会造成影响,这方面是完全可行的。3需求分析31引言对软件需求分析就是通过调查研究,建立系统的数据模型、功能模型、行为模型,用户和开发人员在“系统必须做什么”这个问题上实现相互理解,达到共识,从而形成双方认可的软件产品的需求规格说明书。这样有益于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,便于采用工程方法开发软件,提高软件的质量,便于开发人员、维护人
23、员、管理人员之间的交流、协作,并作为工作成果的原始依据,并且在向潜在用户传递软件功能、性能需求,使其能够判断该软件是否与自己的需求相关。32方案论证学校现已开设的课程有C语言、C,JAVA,自己本身自学了JAVA,通过网上以及图书馆的资料,知道可以通过C,C,VB,DELPHI,JAVA实现俄罗斯方块游戏的设计。下面简单介绍下VB、C、JAVA各自的优点331VB的优点11全称VISUALBASIC,它是以BASIC语言作为其基本语言的一种可视化编程工具。在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占据着非常重要的地位,对于它的好坏大家都有一定的了解,VB作为一种
24、较早出现的开发程序以其容易学习,开发效率较高,具有完善的帮助系统等优点曾影响了好几代编程人员,但是由于VB不具备跨平台这个特性,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和ACTIVEX,对于组件技术不断完善发展的今天,它也显出了它的落后性;同时VB在进行系统底层开发的时候也是相对复杂的,调用API函数需声明,调用不方便,不能进行DDK编程,不可能深入RING0编程,不能嵌套汇编;而且面向对象的特性差;网络功能和数据库功能也没有非常突出的表现,综上所述,VB作为一种可视化的开发工具由于其本身的局限性,导致了它在未来软件开发中逐步被其他工具所代替。
25、332C的优点C是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性从SIMULA67中吸取了类,从ALGOL68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了ADA的类属和CLU的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用/表示注释。C保持了C的紧凑、灵活、高效和易移植强的优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟函数。C既有数据抽象和面向对象能力,语言运行性能高多,加上C语言的普及,而从C至C的过渡较为平滑,以及C与C的兼容程度可使数据巨大的C程序能方便地在C环境中重用。尽管C当初的设计本意是帮助管理大型程序,但其用途
26、并不仅限于此。C的面向对象的特性可有效地用于实际的程序设计工作。C常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。而且,由于C共享C的效率,所以用C可以构成很多高性能的系统软件。333JAVA的优点1安全性JAVA是一种安全的网络编程语言,不支持指针类型,一切对内存的访问都必须通过对象的实例来实现。这样能够防止他人使用欺骗手段访问对象的私有成员,也能够避免在指针操作中易产生的错误。此外,JAVA的安全性体现在多个层次上在编译层,有语法检查;在解释层,有字节码校验器,可进行代码段格式测试和规则检查、访问权限和类型转换合法性检查、操作数堆栈的上溢和下溢检测、代码参数类型合法性检查等;在平台
27、层上,通过配置策略,可设定访问资源域,无须区分本地或远程。2可移植性JAVA具备有很好的移植性,这主要得益于它与平台无关的特性。同时,JAVA的类库中也实现了与平台无关的接口,这使得这些类库也能移植。同时,JAVA编译器主要是由JAVA本身来实现的,JAVA的运行系统(解释器)由标准C语言实现,因而整个JAVA系统都具有可移植性。3多线程机制JAVA具有多线程机制,这使得应用程序能够并行地执行。它的同步机制也保证了对共享数据的共享操作,而且线程具有优先级的机制,有助于分别使用不同线程完成特定行为,也提高了交互的实时响应能力。JAVA的多线程技术使网上实时交互实现很容易,从而为解决网上大数量的客
28、户访问提供了技术基础。124跨平台通常,在WINDOWS下编写的程序是不能直接拿到UNIX上运行的,因为程序的执行最终必须转换成为计算机硬件的机器指令来执行,专门为某种计算机硬件和操作系统编写的程序是不能够直接放到其他类型的计算机硬件上执行的,至少要做移植工作。要想让程序能够在不同的计算机上运行,就要求程序设计语言能够跨越各种软件和硬件平台,而JAVA恰恰满足了这一需求。JAVA编译器能够产生一种与计算机体系结构无关的字节指令,只要安装了JAVA虚拟机,JAVA就可以在相应的处理机上执行。334方案的选择面向对象的程序设计吸取了结构化程序设计的先进思想,并把它们同几个支持用户用新方法进行程序设
29、计的有力概念结合在一起。所有面向对象的程序设计语言一般都包含三个概念封装、多态性和继承性。这种方法要求语言必须具备抽象、封装、继承和多态性这几个关键要素。面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。C和JAVA在面向对象这方面比VB要强,所以我排除了用VB做的可能性。但是C为了与C语言兼容,其是包含了些面向过程的成分;JAVA除了C中非面向过程的部分,其程序编写过程就是设计、实现类,定义其属性、行为的过程。还有JAVA特有的“沙箱”机制是其安全性的保障,同时它去除了C中易造成的错误指针,增加了
30、自动内存管理等措施,保证了JAVA程序运行的可靠性。所以经过再三比较了三种语言后,决定采用JAVA语言编写俄罗斯方块。4游戏的开发与编译41编译工具简介ECLIPSE是一个开放源代码的、基于JAVA的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括JAVA开发工具(JAVADEVELOPMENTKIT,JDK)。1342硬件以及软件开发平台CPUINTELCORE2T5870内存2G硬盘250G操作系统MICROSOFTWINDOWS7JDK版本JDK150_09ECLIPSE版本ECLIPSESDK36
31、1WIN3243功能设计本项目是为了实现俄罗斯方块的基本功能而设计的,基本能够达到俄罗斯方块的各种游戏性。项目需求分析如下1)由方块组成的不同的随机图形会从区域上方开始缓慢落下。2玩家可以做的操作有以90度为单位旋转方每一格块。以格子为单位左右移动方块,让方块加速落下。3方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。4当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得14分。5当固定的方块堆到区域最上方,则游戏结束。44系统功能系统模块具体模块划分算法1,主要板设计,主面板为CONTAINER其面积为600480,其
32、下添加子面板GAMECRC,CONTROLSRC,并且采用GRIDLAYOUT的布局方式,如下图俄罗斯方块游戏区游戏控制显示玩家操作显示操作结果分数级数开始游戏提高级数减低级数游戏暂停退出游戏15代码如下SETSIZE600,480SETLAYOUTNEWGRIDLAYOUT1,2GAMESCRNEWGAMECANVASGAMESCRADDKEYLISTENERGAMESCRTIMERNEWMYTIMERGAMESCRTIMERSETDAEMONTRUETIMERSTARTTIMERSUSPENDADDGAMESCRTITLEGAMESRCCONTROLSRCSDS16PANELRIGHTSC
33、RNEWPANELRIGHTSCRSETLAYOUTNEWGRIDLAYOUT2,1,0,30RIGHTSCRSETSIZE120,500ADDRIGHTSCR2GAMESRC面板中包含15行和10列的小方块,用于显示内容如图3CONTROLSRC中有5个功能模块和2行显示信息的模块17代码如下/定义按钮LEVELUPBUTTONLEVEL_UP_BNEWBUTTON“提高级数“LEVEL_UP_BSETSIZENEWDIMENSION50,200LEVEL_UP_BADDACTIONLISTENERNEWCOMMANDCOMMANDBUTTON_LEVELUP,GAMESCR/定义按钮LEV
34、ELDOWNBUTTONLEVEL_DOWN_BNEWBUTTON“降低级数“LEVEL_DOWN_BSETSIZENEWDIMENSION50,20018LEVEL_DOWN_BADDACTIONLISTENERNEWCOMMANDCOMMANDBUTTON_LEVELDOWN,GAMESCR/定义按钮LEVELPAUSEBUTTONPAUSE_BNEWBUTTON“游戏暂停“PAUSE_BSETSIZENEWDIMENSION50,200PAUSE_BADDACTIONLISTENERNEWCOMMANDCOMMANDBUTTON_PAUSE,GAMESCR/定义按钮QUITBUTTONQ
35、UIT_BNEWBUTTON“退出游戏“QUIT_BSETSIZENEWDIMENSION50,200QUIT_BADDACTIONLISTENERNEWCOMMANDCOMMANDBUTTON_QUIT,GAMESCRCONTROLSCRADDPLAY_BCONTROLSCRADDLEVEL_UP_BCONTROLSCRADDLEVEL_DOWN_BCONTROLSCRADDPAUSE_BCONTROLSCRADDQUIT_BSETVISIBLETRUEGAMESCRREQUESTFOCUS1945功能流程图46详细设计1首先要随机产生一个图形202图形数据结构定义一个4X4方阵,共16个小
36、格。用“0”和“1”来表示每个方格是绘制还是空白,由此可以组合出多种图形,如图所示其中图一表示为0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0其中图二表示为0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0其中图三表示为0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0其中图四表示为0,0,0,0,0,1,0,1,0,1,1,0,0,0,1,0方块的旋转是通过绘制4个方向的方块,在不同旋转角度显示不同方向的方块来完成的。所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。本游戏是用一个三维数组INTSHAPESNEWINT;作为存储方块的数据结构来
37、保存方块的28种状态的。代码如下PUBLICFINALSTATICINTSTYLES/共28种状态0X0F00,0X4444,0X0F00,0X4444,/长条型的四种状态0X04E0,0X0464,0X00E4,0X04C4,/T型的四种状态0X4620,0X6C00,0X4620,0X6C00,/反Z型的四种状态0X2640,0XC600,0X2640,0XC600,/Z型的四种状态0X6220,0X1700,0X2230,0X0740,/7型的四种状态0X6440,0X0E20,0X44C0,0X8E00,/反7型的四种状态0X0660,0X0660,0X0660,0X0660,/方块的
38、四种状态图形的移动图形类SHAPE保存了自己的位置信息,用LEFT表示图形到左边界的距离,TOP表示图形到上边界的距离,图形移动就是改变LEFT和TOP的值。向上移动TOP减1,向下移动TOP加1,向左移动LEFT减1,向右移动LEFT加1。21图形的移动分为图形的自动下落以及通过按键事件实现图形的左移、右移以及加速下移。通过多线程SHAPEDRIVER类来实现图形的自动下移,由于游戏中方块的动态性,每个方块有一定的生命周期,所以选用线程来实现方块。一个方块用一个线程类对象实现,该类继承与THREAD类,当一个方块出现时也就表示一个线程对象产生并开始运行。通过对按键事件的响应,实现图形的左移、
39、右移以及加速下移。图形的变形通过INTTYPENEWRANDOMNEXTINTSHAPESLENGTHSHAPESETBODYSHAPESTYPESHAPESETSTATUS0实现初始图形的初始化,通过STATUSSTATUS1BODYLENGTH实现图形的变形功能。判断满行及消行如果某一行没有空白,则这一行就是满行。满的那行上面所有的行整体下移一行就是消除这个满行。代码如下VOIDDELETEFULLLINEINTFULL_LINE_NUM0INTK0FORINTI0IROWNUMIBOOLEANISFULLTRUEL1FORINTJ0JCOLUMNNUMJIFSCRARRIJ0KISFUL
40、LFALSEBREAKL1IFISFULLFULL_LINE_NUMIFK0JCOLUMNNUMJ22IFSCRARRIJ0DRAWUNITK1,J,0ELSEDRAWUNITK1,J,2SCRARRK1JSCRARRIJFORINTIK1IROWNUMIFORINTJ0JCOLUMNNUMJDRAWUNITI,J,0SCRARRIJ0ERS_BLOCKSCOREFULL_LINE_NUMERS_BLOCKSCOREFIELDSETTEXT“ERS_BLOCKSCORE235游戏演示51开始界面511点击开始24512按键的应用点提高等级速度加快2552系统测试1点击“开始游戏”按钮效果游戏开
41、始结果正常2点击“提高级数”按钮效果下落速度加快结果正常3点击“降低级数”按钮效果下落速度降低结果正常4点击“游戏暂停”按钮效果暂停结果正常5点击“退出游戏”按钮效果游戏退出结果正常53按键事件的功能测试1方块移动测试26游戏过程中,点击“左、右、下”方向键输出方块正常移动,不会移出边界结果正常2方块反转测试游戏过程中,点击向上方向键输出方块无边界和障碍物阻挡的情况下可反转结果正常3当方块下落到最底面或与障碍物接触时输出方块成功堆砌在底部结果正常4当出现满行现象时输出所有满行被消除,方块依次下移结果正常6结论61问题写程序的时候,由于对有些JAVA知识不懂,所以有些想要表达的意思无法用JAVA
42、代码准确的表达出来,老是出错或者无法写下去;一开始,自己准备的参考资料不足,无法在遇到问题时有效的利用参考资料解决,遇到不懂的问题和不会用程序语言表达的问题时,只能留在那里,无法解决,结果问题最后越积越多,导致我无法再把程序写下去;一开始,对于老师布置的作业题目,我不太懂,无法进行有效而且清晰的分析,自然也无法继续下去写程序了,耽误了较多的时间;对于要写流程图,一开始我并不懂是什么意思,也不知道怎么去写。62解决方法对于那些不懂的JAVA知识和不会写的程序,我通过向同学寻求帮助和利用参考资料书,最终都解决了;对于自己参考资料不足的缺点,我在下课后,去了图书馆借阅有关方面的JAVA参考资料书,并且向同学借阅了他们所拥有的资料书,然后又利用自己的电脑上网查找了一些有关方面的参考知识,终于在最后解决了资料不足的缺点;对于不懂的题目,我也通过向多个同学进行询问,最终弄懂了老师布置的题目所要求的内容;至于流程图,在我向同学询问过,并且上网进行了一番查找和咨询后,也总算弄懂了流程图的含义,并努力写了出来。277参考书目1美克罗夫特著,彭晖译JAVA游戏高级编程清华大学出版社20052精通JAVAJDK、数据库系统开发、WEB开发3JAVA进阶教程4零起点JAVA应用编程5JAVA程序设计应用基础教程