基于java语言的游戏开发—俄罗斯方块  毕业论文_第1页
基于java语言的游戏开发—俄罗斯方块  毕业论文_第2页
基于java语言的游戏开发—俄罗斯方块  毕业论文_第3页
基于java语言的游戏开发—俄罗斯方块  毕业论文_第4页
基于java语言的游戏开发—俄罗斯方块  毕业论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学与技术学院毕业设计(论文)论文题目基于JAVA语言的游戏开发俄罗斯方块学生姓名学号093821042专业计算机科学与技术方向软件开发方向指导教师2013年5月论文原创性声明本人郑重声明所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到违反本声明所引起的一切法律责任将由本人承担。学位论文作者签名年月学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密,在_年解密后适用本授权书。2、不保密。(请在以上相应方框内打“”)作者签名年月日导师签名年月日目录摘要1引言31绪论311早期游戏机的诞生312任天堂公司的崛起41316位机争霸时代4143D时代开启51521世纪状况52电子游戏的发展现状621电子游戏在国内的发展现状622电子游戏在国外的发展现状623发展电子游戏产业的意义73可行性研究831软件设计目的832软件设计基本问题833可行性研究的分析934可行性研究的结论94需求分析941游戏功能需求10411游戏界面需求10412游戏控制需求10413图形显示需求1042运行环境及系统性能的需求1043游戏接口需求1144游戏方案论证1145游戏方案选择125详细设计与实现1351游戏客户端设计1352主模块方块与地图模块设计15521如何得到方块18A方块的模型18B方块的颜色18C如何得到一个新方块19D如何得到下一个方块19522方块的翻转与移动20A方块的移动20B方块的翻转22A方块翻转判定22B翻转越界纠正24523满行消除256游戏测试2861测试的意义及注意事项2862游戏测试的步骤28621单元测试28622集成测试28623确认测试28624系统测试2863测试的过程28631游戏界面菜单选项的功能测试29632按键事件的功能测试31633方块堆砌与消行测试3164测试结果32结束语32致谢33参考文献34基于JAVA语言的游戏开发俄罗斯方块学生尚宏佳指导教师汪志勇湖北科技学院计算机科学与技术学院湖北咸宁437100摘要俄罗斯方块是大多数人都熟悉的一款游戏,它玩法简单,乐趣无穷,一直深受各年龄层的玩家喜爱。游戏的实现是由四块正方形的色块组成,存储在一个四维数组之中,根据计算机时钟控制它在一定的时间间隔之内,随机不停的产生七种不同类型的方块,用户根据键盘的三个方向键控制向左、向右和加速操作,通过空格键控制翻转的操作,然后程序根据这七种方块堆叠成各种不同的模型。本文是基于JAVA语言的俄罗斯游戏的开发,首先描述了游戏的历史,开发此游戏的环境,游戏开发的意义。然后从软件问题定义开始,进行可行性研究、需求分析、详细设计与实现,最后对软件进行了测试,整个开发过程贯穿软件工程的知识体系。关键词电子游戏;俄罗斯方块;JAVATHEGAMEDEVELOPMENTBASEDONJAVALANGUAGETETRISSTUDENTSHANGHONGJIASUPERVISORWANGZHIYONGSCHOOLOFCOMPUTERSCIENCETETRISJAVA引言俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。它曾经造成的轰动与造成的经济价值可以说是游戏史上的一个传奇。相信大多数用户都还依稀记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。究其历史,俄罗斯方块最早是出现在PC机之上的,而我国的用户都是通过红白机了解它、并喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏,它深受广大玩家喜爱。这个游戏有的简单,有的复杂,但其根本原理是一样的都是对运动中的各种方块进行组合,已达到训练玩家的反应能力。谈到游戏软件的开发,大多数人都认为其神妙莫测,高不可及。一般游戏软件也确实具有很高的技术难度,但是随着开发工具及软件开发方法学的不断发展,动手开发游戏也并不是十分困难的事了。同时俄罗斯方块游戏是一种古老而又有趣的游戏,各种游戏软件不计其数,网上就有好多关于实现的复杂算法和设计,其难度让一般初学者望而却步。本文利用数组作为方块的数据结构,提出一种用JAVA语言实现的简易方法,让初学者可仿此开发类似游戏,并了解游戏软件的设计与开发过程。1绪论“安多酚”是上帝赋予人类的礼物,所有的游戏都是为了给人带来快乐,电子游戏就是伴随着计算机的出现而出现的一种新的给人带来快乐的形式。自1958年世界上第一个电子游戏诞生以来,游戏软件的发展一直和硬件(各类游戏机和PC)的发展相辅相成。11早期游戏机的诞生1988年,德国人斯托威克根据自动售货机的投币机的原理,设计了一种叫做“自动产蛋机”的游戏机器,只要向机器里投入一枚硬币,“自动产蛋鸡”便“产出”下一只鸡蛋,并伴随有叫声。人们把斯托威克发明的这台游戏机器,看作是投币游戏机的雏形。这种机械玩具产生了各种各样变种,比如点唱机,赌博机等等。随着1946年世界上出现了第一台电子计算机,电子技术成就到各个领域,一个娱乐游戏业革命也在酝酿之中。同时斯托威克为了提高参观纽约BROOKHAVEN国家实验室游客的兴趣,在一台示波器上展示着一款“TENNISFORTWO“双人网球交互式游戏。这是世界上第一款视频游戏。从电子管晶体管再到集成电路,电子计算机技术得到了突飞猛进的发展。一些电子工程师闲极无聊之际,开始制作些电子游戏的雏形自娱。1958年,在一个电子展上,公众见到一台示波器,玩家可以控制上面的光点互相追逐,这是最早可见向公众开放的游戏。从电子管晶体管到集成电路的转变,电子计算机技术得到了突飞猛进的进步与发展。一些电子工程师闲极无聊之时,开始制作一些电子游戏的雏形供自己娱乐。1958年,在一个电子展之上,公众见到一台示波器,玩家可以控制示波器上面的光点互相追逐,这是最早向公众开放的可见的游戏。加利福尼亚的电气工程师诺兰布什纳尔捕捉到了电子娱乐的发展前景所在,他根据自己编制的游戏电脑空间COMPUTERSPACE,设计了世界上第一台商用电子游戏机。这台电子游戏机的成功激励了布什纳尔进一步研制生产电子游戏机的激情,为此他创立了世界上第一个电子游戏公司雅达利公司。12任天堂公司的崛起当全世界电子游戏机行业经历了大起大落之后,电子游戏机也受到了大多数厂商的冷落,大部分的他们放弃了这个市场。1983年,日本玩具业巨星任天堂公司正在冉冉升起,与此同时任天堂第三代家用电脑游戏机问世了。它以高质量的游戏画面,精彩的游戏内容和低廉的价格一下子赢得了全世界不同年龄、层次人士的喜爱、强烈的震撼了整个玩具业。至此,任天堂几乎在一夜之间成为了全世界最大的电子游戏公司。任天堂电视游戏机在全世界玩具市场上整整畅销了近十年,世界玩具市场上的专家们也为此惊叹不已。任天堂除了采取了先进的技术外,在经营策略上他们也有一些成功的秘密第一、任天堂创立了自己产品独有的标准,它的软件都存放在装填式的游戏卡中,与其他普通软磁盘截然不同,既无法与其他机种兼容,也不易被剽窃。第二、任天堂控制了为其生产软件的许可权,从而保证了节目质量,同时他们也亲自研制节目。给玩家留下深刻印象的FC游戏几乎是所有游戏机中最多的,如83年的大金刚和玛莉奥兄弟,85年的超级玛莉,以及恶魔城、勇者斗恶龙、塞尔达传说、魂斗罗等。第三、任天堂十分注重产品的销售策略,他们在世界各地广泛设立了自己的代销商。这些代理商成为了以后游戏机产业的重要基石。1316位机争霸时代当年在雅达利公司衰落时,大多数公司都改辙易道,而如今在任天堂公司再次叩开成功之门时,他们才如梦方醒。这之中包括一些实力雄厚的公司,NEC和世嘉就是它主要挑战者。1987年,NEC推出第四代电视游戏机PCENGINE,向被任天堂公司垄断的电视游戏机市场提出了新的挑战。NEC公司还专门推出了CDROM配件,一下将电子游戏带入了多媒体时代。更棘手的挑战来自于1988年世嘉公司的MD游戏机。MD游戏机采用了街机基板结构,从而使得大量街机游戏能够移植其上。不久之后世嘉推出的索尼克游戏风靡世界,并很快占据了欧美市场半壁江山,一时可以和任天堂分庭抗礼。面对咄咄逼人的NEC和世嘉,任天堂公司不得不认真想办法招架,他们推迟了“超级任天堂”的推出计划,貌似是想一定要使“超级任天堂”性能不比对手差,才能竞争过他们任天堂公司于1990年底终于推出了传闻已久的16位家用游戏机SFC超级任天堂。虽然错过了一段与对手竞争的宝贵时间,但代理该机销售的美国西门子公司大作广告营销,终于为该机打开了市场,任天堂借助RPG在日本市场站稳脚跟后,携第三方反攻欧美。143D时代开启家用游戏机市场到了1994年开始了它的最大的一次变革,从2D画面竞争转向3D性能竞争,而这次变革的基础是所有的家用游戏机进入了32位。世嘉在16位游戏机的竞争中依靠先手才勉强和SFC拼成了平局,这可能在一定程度上影响了SEGA在32位游戏机中的竞争策略。在任天堂还没有准备好进入32位时代的时候,SEGA再次抢先出手,于1994年11月22日发布了SEGASATURN,简称SS。在SEGA推出SS的11天之后,SONY也积极的推出了自己的32位家用游戏机PLAYSTATION。由于都属于32位游戏机,而且推出时间如此接近,所以业界一直把PS和SS作为最主要的相互竞争对手进行比较。与SS不同之处是,PS紧紧抓住了3D功能,开始了与SEGA的竞争,双方在日本销量交替的上升,但在北美由于市场策略的原因世嘉惨败,SONY终于获得胜利。随着第三方纷纷加入SONY,土星再也无还手之力。1998年,SEGA提出DREAMCAST,简称DC世嘉意识到土星惨败后推出了DREAMCAST,这款主机吸取了土星的种种教训,虽然DC在性能上已经不输给当时市场上的任何一款游戏主机,但是DC的游戏软件数量依然太少。与此同时的世嘉已经伤筋动骨无力回天,勉强支撑几年后随着PS2的推出而全面溃败了。世嘉也不再是任天堂、SONY的竞争对手,最终退出主机市场变成了一家纯软件商。之后家用游戏机市场是微软、任天堂和SONY三家的战场了。1521世纪状况PS2是SONY的PLAYSTATION主机的后续产品,一度垄断了游戏机市场,直到2001年才迎接挑战对手微软公司的XBOX和任天堂公司的NGC。然而可惜的是两家的主机已经推出过晚,无法有力动摇PS2的霸主地位。XBOX架构与PC一致,大批PC厂商成功的登陆游戏机市场,第一方大作HALO也为家用机FPS立下了一个标杆,此后FPS也渐渐成为游戏机市场中的显贵。NGC相对XBOX落了下风,任天堂用户已经在N64时代习惯了只接受第一方游戏,虽然任天堂试图吸引第三方,但也于事无补。新时代的战争于2005年底打响了,微软抢先发布了新主机XBOX360,任天堂和索尼也在2006年末分别推出了WII和PLAYSTATION3。任天堂在此时彻底采取了差位竞争政策,WII在性能上只是略高于上一代主机一点点,但是率先推出的体感装置,迅速抢占了大量轻量的玩家甚至是非玩家市场。PS3的发售非常的不顺,其一由于XBOX360先发制人,占领了大量次世代游戏市场;其二由于PS3早期因为开发环境不成熟,导致大量跨平台游戏的画面不如360,微软拉拢第三方的行动也非常的成功,使SONY损失了大量独占的资源。2电子游戏的发展现状随着新年曙光的到临,电子游戏的苦难日子已经持续了相当长的一段时间,然而热情的玩家对当前电子游戏的状态又有何反应呢毕竟,这对我们来说是非常重要,这与那些热衷于体育运动或者电视连续剧的人是一样,那些真正热爱电子游戏的人也不会仅仅将其当成是用于消遣的娱乐活动。那么如今电子游戏的发展现状如何呢21电子游戏在国内的发展现状与电子游戏发达的一些国家相比,我国在电子游戏方面还存在着比较大的差距。目前,我国游戏市场正处于发展的阶段,市场上的游戏娱乐软件主要都来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成为游戏的主流。在中国最早成形的游戏市场的省份是台湾省,到90年代中期台湾省已经拥有大量的游戏研发公司和代理公司,并成立了一套完整的产业链,1995年之后又有不少公司开始开拓大陆市场。但是华人圈市场容量小,盗版严重,游戏产品也异常单一,主流为武侠RPG。虽然游戏市场不断发展但始终限制在一个小格局中,中国游戏的爆发性发展要等到网络游戏的出现。90年代末,除了风靡欧美的网络创世纪和永恒的任务,网络游戏业在东亚的一隅茁壮成长,这种没有盗版的游戏形式一诞生就吸引了广大厂商的注意力。台湾厂商在华人市场又一次扮演了吃螃蟹的角色。万王之王、石器时代、红月等第一批网络游戏开始登陆中国市场。石器时代是早期网络游戏最为火爆的产品,它采用日式RPG常见的组队踩地雷回合制,尽最大可能避免了当时网络游戏的网络拥堵情况,各种“年兽包”,也能看做未来道具收费的先声。到了2004年左右,市面上几乎都是传奇类型的MMORPG,网游市场面临着发展瓶颈。2005年2月,久游劲舞团开服,新的游戏种类吸引了大量的女性玩家,大大拓展了游戏厂商的生存空间,成为网络游戏中的一枝显贵。另一方面,随着征途上市,游戏的推广方式和付费方式也产生了革命性的变化,虽然道具收费已在热血江湖等游戏中崭露头角,但尚未成为网游主流,征途从收费,推广和对玩家心理的把捏都轰动了整个游戏界,一时之间征途成为了各大厂商的教科书,个个试图青出于蓝而胜于蓝。我国的游戏外包制作实力也不可小觑。上世纪90年代中期,如东星,育碧等国际游戏厂商就开始进入中国,把中国子公司作为分支开发基地。随着它们的首批员工不断外流,自主外包公司也开始崛起,在许多国际大作中,我们都能看到维塔士、唯晶等外包公司在背后默默工作,通过这些外包公司,国外先进的制作技术以及管理经验,也将源源不断的进入中国。22电子游戏在国外的发展现状电子游戏最初产生于美国,1971年,一个还在MIT就读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字就叫电脑空间。可以说直到今天,电子游戏仍然是外国人的天下。美国至今仍是世界第一大游戏市场,它遵循的模式是以发行商为主的产业开发链,根据美国市场调查公司的调查统计报告,美国2004年游戏总销售金额(包括家用、掌上型主机及软件)为99亿美元,占了全球游戏市场的45。其中游戏软件销售方面的具体数据是PC游戏软件销售额达11亿美元4500万套,视频游戏软件的销售额达52亿美元16亿套,掌机游戏销售额达10亿美元4230万套。2004年一共售出了大约248亿套游戏。由此据估计,美国每个家庭平均购买过了二部游戏。日本近20年来也在疯狂的赚电子游戏的钱。从上世纪60年代初的街机开始,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本用了接近30多年的时间耕耘,终于把电子游戏这棵“摇钱树”,培育成了第一时尚娱乐产业,并且垄断了全球游戏业界长达10余年之久。而对于日本自己来说,电玩产业已经成为了国家经济的重要支柱之一,在GDP中占有1/5的重要地位。日本游戏业在最辉煌的时候,曾经占领全球电子游戏市场硬件90以上,软件50以上就的辉煌。韩国一直以来号称世界上网络游戏产业最发达国家之一。迄今为止,我国网络游戏市场有超过60的游戏产品来自韩国,同时韩国网络游戏也使国内很多游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的成功。韩国游戏市场的发展不是偶然,韩国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多市场培育方面的工作。韩国政府由此认识到,仅仅依靠重型工业来支撑全国经济的做法是不明智的做法,于是将、娱乐产业视为新的经济增长点,开始大力的扶持它们发展。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了韩国的“富国兴邦”重任。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。23发展电子游戏产业的意义体验业是发达国家新兴的产业,是市场发展到相当高度,市场中的消费者购买力达到相当层次,消费理念从原先的物质主导逐渐向精神主导,个性主导方向演变后的产物。而在体验业中,电子游戏市场发展势头凶猛异常,已经超越了长期以来一直是娱乐业代表的电影业,其可怕的经济效益前文已详细分析,在此不再赘述。电子游戏业一定将是未来体验业最具活力,最有发展前途的行业,电子游戏业潜力无限。当今世界,尤其在市场发达的地区,由于市场的饱和,市场进入者较历史上任何时期都多,以及市场手段和产品技术,产品理念的同质化,致使市场竞争空前激化,市场向买方市场严重倾斜。商家普遍的感受是生意越来越难做,消费者的口味越来越难以满足,市场风险陡增,生存危机感一日比一日深重。比如传统的电视制造业,连日本这样的电视制造业世界第一的大国都面临本国市场的极度不景气。进入21世纪,日本全国的电视制造厂商都已经将其电视机生产工厂迁移到以中国为首的亚洲周边国家,试图以其劳动力的廉价充盈来降低成本,增强市场竞争力。然而即便如此,电视制造业的生存环境仍旧是相当恶劣的。在这样的市场背景下如何生存并图发展答案就是开拓新市场,抓住任何新生的市场机遇。电子游戏市场就是这样的市场,电子游戏不是人与生俱来的需要,电子游戏业创造了人的新需要。而未来市场竞争演变的趋势是,谁能够对市场的发展方向有最敏锐的嗅觉,谁能够在消费者身上创造出新的需要,谁就是业界规格的制订者,就是业界的执牛耳者。虽然难度以及风险非常大,但是这是商家打破市场僵局,获得真正意义上的发展的最佳方法。尊重人才,加强电子游戏产业后备人才的培养。由于电子游戏“处于科学和艺术的交汇点”,因此游戏的主创人员就有了艺术家的身份,理应受到社会的尊重,国家应该以适当的形式确认这一点。电子游戏作为新生代的文化产业,正在世界各国蓬勃发展,同文化产业的其他领域例如电影、音乐和图书出版相比,电子游戏有着更强的参与性和互动性,深受各个年龄层次人群的喜爱,发展前景广阔。所以,有实力和远见的商家,一定会不约而同的盯上电子游戏这片年轻而富有活力的土地,以此为切入点开拓自己的新天地,目前在QQ游戏和KELE8等多种网络游戏上都有它的身影,而它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。笔者通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发俄罗斯方块游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,初步掌握MVC这种设计模式,进一步巩固和加强自身对J2SE基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。本次课题,可以说是对游戏开发的一次偿试,无论从技术上,还是社会意义上看,都是很有价值的。3可行性研究31软件设计目的通过对游戏软件的设计的学习,结合自己在校期间所学的理论知识,设计开发俄罗斯方块游戏,使自己能够对应用系统的开发过程有一个比较深的认识,培养自己的独立思考能力,检验学习效果和动手能力,初步掌握软件工程的相关系统理论,初步掌握MVC这种软件设计的模式,进一步巩固和加强自身对J2SE相关基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。32软件设计基本问题基本要求本游戏软件开发的总体任务是实现游戏的可操作性,以及界面的美观性。整个开发过程遵循软件工程规范的要求,采用JAVAGUI编程来实现界面以及对事件的控制,用户根据键盘的三个方向键控制向左、向右和加速下降的操作功能,通过菜单栏中的相应菜单选项实现游戏的开始、结束、暂停、继续以及游戏帮助中的一些功能,同时通过空格键来控制方块在下降过程中的翻转操作。而系统开发的总体任务是实现游戏的可操作性、美观性、及时性,及适当的功能扩展。目标通过本游戏的开发,主要实现游戏的可操作性以及美观性,同时使自己对JAVA语言能有一个更进一层的理解,从而为自己将来的实际工作打下坚实的基础。条件和限制由于知识水平以及实际能力等方面的限制,本游戏所实现的功能还不够强大,可对本游戏进行相应改善,从而增强游戏的功能。可行性研究的方法通过研究分析俄罗斯方块所必须具备的能力及实现各个功能的方法、从而确定主体的结构。利用现阶段我所能达到的能力,以最简洁、最容易的方法,边开发边测试边修改,从而实现一个初级游戏软件。评价尺度由于本软件只是一个初级游戏产品,再加上对其要求也不是非常的太苛刻,所以只要能够达到俄罗斯游戏的一般功能就可以了。本游戏将尽量追求游戏操作的合理性及正确性,但是仍不排除会出现一些偶然性的错误;同时游戏也尽量追求界面的美观性及功能的丰富性,但是基于时间的关系,可能会有极少数的拓展功能不能实现。33可行性研究的分析管理可行性本游戏设计的目的只是在于提高自身实践操作的水平,并不需要对外发布,因此完全具有管理可行性。经济可行性由于开发本游戏的主要背景是为了毕业课程设计,不需要注重直接的经济效益和其后的发展方向,只需要注重自身能力的提高,从而对自身的经济要求也不是很高,只要有一台电脑即可,所以就不用考虑到经济问题。技术可行性可用于本游戏的编程语言有VB,VC,JAVA,DELPHI等,考虑到用于编写程序的困难程度,和自身对语言的了解程度,最终选择JAVA作为编程语言。需要对图形界面设计、事件处理、多媒体、网络编程等有一个比较深的了解。社会可行性本游戏的开发作为毕业课程设计以巩固先前所学的知识,以个人为单位,仅供个人平常娱乐所用,无须考虑有可能造成的社会影响,不用考虑到法律、版权等的社会因素,所以在这方面是完全可行的。34可行性研究的结论综上所述,本游戏软件的技术成熟、完备。各方面均无重大问题,因此本游戏软件可开始着手编写。4需求分析在系统工程及软件工程中,需求分析指的是在创建一个新的或改变一个现存的系统或产品时,确定新系统的目的、范围、定义和功能时所要做的所有工作。同时需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定顾客的需要。只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。对软件需求分析就是通过调查研究,建立系统的数据模型、功能模型、行为模型,用户和开发人员在“系统必须做什么”这个问题上实现相互理解,达到共识,从而形成双方认可的软件产品的需求规格。41游戏功能需求本软件是用JAVA语言开发的俄罗斯方块电脑小游戏,主要实现俄罗斯方块游戏的一些基本功能,28种状态的方块随机产生,自由下落,落下时可由玩家用下、左、右控制键控制方块的加速和移动,通过空格键控制方块的旋转,以便以玩家所需要的形态和位置落下。如果落下时,方块的方格能填满某一行,则这一行可消去。由此可以得出本游戏的各种游戏功能需求411游戏界面需求本游戏要求用于良好的用户界面设计。主要有两个界面,一是用于主游戏区的游戏画布,用来显示游戏时运动和落下去的方块,二是用于显现游戏信息的一些组件,这是一个面板,还有一个菜单栏,用于实现对游戏的开始、暂停、继续、退出以及游戏帮助相关功能。412游戏控制需求当方块在下落的过程中,可通过键盘方向键(下、左、右键)对该方块进行向下(加速)、向左、向右移动,通过空格键实现对方快的变形操作。413图形显示需求通过随机函数的控制,随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,并记分。同时为了美观,本游戏选择了两种颜色,当方块还没有下落到最低端的时候显示为蓝色,当下落到最低端接触到了障碍物就会变成绿色。42运行环境及系统性能的需求本游戏对运行环境及系统性能的需求如表31所示表41游戏对运行环境及系统性能需求分析表操作系统WINDOWS7/XP内存容量64MB显卡要求8M声卡要求支持DIRECTX80声卡交互工具键盘/鼠标CPU奔腾133以上光驱8倍速以上硬盘空间400MB显示器VGA以上显示器开发及运行软件JDK15以上版本43游戏接口需求本软件要求通过键盘来对方块进行相关的操作,在WINDOWS的操作系统下,利用键盘的下、左、右键对方块进行移动,利用空格键对方快实现变形,要使用键盘的接口事件。44游戏方案论证从我们已经学了的可用于比较好地实现俄罗斯方块的编程语言有C、VB、JAVA,因此从客观上说来,可用JAVA,VB和C这三种语言编写俄罗斯方块程序。下面结合自身实际情况分别论述三种语言的优缺点并从中选择一种适合的编写语言。VB的特点全称VISUALBASIC,它是以BASIC语言作为其基本语言,发展而来的一种可视化编程工具。在中国乃至全世界都能看到它的身影,它曾是在中国最为流行的编程工具,到现在还占据着非常重要的地位。它所提供的可视化数据管理器能帮助用户构造多种类型的数据库。用户自定义类型可以作为参数或作为公共属性和方法的返回值,函数可以返回数组变量,动态数组可以赋值,文件系统对象,按名调用,增强创建对象函数。应用程序安装向导能帮助用户自动生成具有一定功能的应用程序,加快了程序的开发速度。但是由于VB不能实现备跨平台的功能,从而也决定了VB在未来的软件开发中将会逐渐地退出其历史舞台;它对组件技术的支持是基于COM和ACTIVEX,然而对于组件技术不断完善与发展的今天,它也逐渐显出了它的落后性;而且又由于其面向对象的特性差;网络功能和数据库功能也没有非常突出的表现。综上所述,VB作为一种可视化的开发工具,但是由于其本身的局限性,导致了它在未来软件开发中会逐步被其他工具所代替。C的特点C是对C语言的扩充,扩充的绝大部分来自著名语言中的最佳特性从SIMULA67中吸取了类,从ALGOL68中吸取了运算符一名多用、引用和在分程序中任何地方说明变量,综合了ADA的类属和CLU的模块特点,从BCPL中吸取异常处理,从BCPL中吸取了用/表示注释。C保持了C的紧凑、灵活、高效和易移植强的优点,它对数据抽象的支持主要在于类概念和机制,对面向对象风范的支持主要通过虚拟函数。C既有数据抽象和面向对象能力,语言运行性能高多,加上C语言的普及,而从C至C的过渡较为平滑,以及C与C的兼容程度可使数据巨大的C程序能方便地在C环境中重用。尽管C当初的设计本意是帮助管理大型程序,但其用途并不仅限于此。C的面向对象的特性可有效地用于实际的程序设计工作。C常常用于设计编辑器、数据库、个人文件系统以及通讯程序等。而且,由于C共享C的效率,所以用C可以构成很多高性能的系统软件。JAVA的特点JAVA是定义位于网络计算的计算机语言,它几乎所有的特点也是围绕着这一中心展开的并为之服务的,这些特点使得JAVA语言特别适全于用来开发网络上的应用程序;另外,作为一种面世较晚的语言,JAVA也集中体现和充分利用了若于当代软件技术新成果,如面向对象、多线程等,这些也都在它的特点中有所反映。(1)面向对象JAVA是纯面向对象的编程语言。面向对象技术较好地适应了当今软件开发过程中新出现的种种传统面向过程语言所不能处理的问题,包括软件开发的规模扩大、升级加快、维护量增大经及开发分工日趋细化、专业化和标准化等,是一种迅速成熟、推广的软件开发方法。面向对象技术的核心是以更接近人类思维的方式建立计算机逻辑模型,它利用类和对象的机制将数据与其上的操作封装在一起,并通过统一的接口与外界交互,使映现实世界实体的各个类在程序中能够独立、自治、继承;这种方法非常有利于提高程序的可维护性和可重用性,大大提高了开发效率和程序的可管理性,使得面向过程语言难于操纵的大规模软件可以很方便的创建、使用和维护。(2)平台无关性如前所述,JAVA语言独特的运行机制使得它具有良好的可移植性,利用JAVA,开发人员可以编写出与具体平台无关、普遍适用的应用程序,大大降低了开发、维护和管理的开销。(3)多线程机制多线程是当今软件技术的又一重要成果,已成功应用在操作系统、应用开发等多个领域。多程序技术允许同一个程序有两个执行线索,即同时做两件事情,满足了一些复杂软件的需求。JAVA不但内置多线程功能,而且提供语言级的多线程支持,使得开发具有多线程功能的程序变得简单、容易和有效。(4)简单易学如前所述,衍生自C的JAVA语言,出于安全稳定性的考虑,去除了C中不容不得易理解和掌握的部分,如最典型的指针操作等,降低了学习的难度;同时JAVA还有一个特点就是它的基本语法部分与C语言几乎一模一样。这样,无论是学过JAVA再学C,还是已经掌握了C语言再业学JAVA,都会感到易于入门。45游戏方案选择面向对象是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。它是一种认识世界的方法,同时也是一种程序设计得方法。面向对象的观点认为,客观世界是由各种各样的实体,即对象组成的。每种对象都有自己的内部状态和运动规律,不同对象间的相互联系和相互作用就构成了各种不同的系统,并进而构成整个客观世界。按照这样的思想设计程序,就是面向对象的程序设计。面向对象的程序设计吸取了结构化程序设计的先进思想,并把它们同几个支持用户用新方法进行程序设计的有力概念结合在一起。所有面向对象的程序设计语言一般都包含三个概念封装、多态性和继承性。这种方法要求语言必须具备抽象、封装、继承和多态性这几个关键要素。面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。C和JAVA在面向对象这方面比VB要强,所以我排除了用VB做的可能性。但是C主观上在校期间学校并没有这方面的授课内容,虽然自学了一些内容,对C也有一定了解,但是若用C实现,必定是基于WINDOWS应用程序的VISUALC设计,但是对于WINDOWS编程,我还有待提高,而我对JAVA的掌握,相对而言,是比较熟悉的。面向对象的程序设计,是通过数据和代码建立分块的内存区域,以便提供对程序进行模块化的一种程序设计方法,这些模块可以被用作样板,在需要时再建立其副本。C和JAVA在面向对象这方面比VB要强,所以我排除了用VB做的可能性。但是C为了与C语言兼容,其是包含了些面向过程的成分;JAVA除了C中非面向过程的部分,其程序编写过程就是设计、实现类,定义其属性、行为的过程。还有JAVA特有的“沙箱”机制是其安全性的保障,同时它去除了C中易造成的错误指针,增加了自动内存管理等措施,保证了JAVA程序运行的可靠性。所以,经过再三比较了三种语言后,本文决定采用JAVA语言编写俄罗斯方块。5详细设计与实现51游戏客户端设计客户端是游戏之中非常重要的一个部分,它是所有游戏给用户的第一印象以及游戏功能的开关,上面集合了许多的图像用户接口,客户端的实现应该确定一种合理的组织架构。图61是客户端的组织结构图游戏客户端游戏控制器游戏开关游戏定时控制左移键盘控制加速下降旋转右移退出新游戏暂停图51客户端的组织架构图游戏客户端采用SWING组件开发,并且向其注册监听器,以实现各种控制功能,综合游戏前面的设计,客户端上至少要注册三个监听器,分别是窗口监听器WINDOWLISTENER、动作监听器ACTIONLISTENER、键盘监听器KEYLISTENER、选项监听器ITEMLISTENER。根据初步设计,可以确定客户端上所要用到的SWING组件对象有FRAME对象、TIMER对象、MENU对象、GAMEMENU对象、NEWITEM对象、PAUSEITEM对象、CONTITEM对象、EXITITEM对象、HELPMENU对象、ABOUTITEM对象、WRITEITEM对象、ADVIITEM对象,至少十二个SWING组件对象。JFRAME组件用以创建窗体,考虑到本游戏仅仅是备单机游戏,JFRAME对象的大小并不是不变的。在主界面上,可以确定有三个JPANEL组件对象。第一个JPANEL组件对象是用来绘制方块的游戏地图,第二个JPANEL组件对象是用来排列其它各种组件的容器组件,做游戏信息显示面板,可以放在游戏地图的右边,第三个JPANEL组件对象是用来显示下一个方块的,应该画在第二个JPANEL组件对象上。由此可以得到主要实现代码FINALJFRAMEFRAMENEWJFRAME“俄罗斯方块。“FINALTETRISBLOKANEWTETRISBLOKFRAMEADDKEYLISTENERAFRAMEADDAFINALTIMERTIMERNEWTIMER400,ANEWTIMERLISTENERTIMERSTARTJMENUBARMENUNEWJMENUBARFRAMESETJMENUBARMENUJTEXTAREA组件对象用来显示游戏时的相关信息,比如玩家的比得分等信息。JTEXTAREA应该放在游戏信息面板的最上面。本游戏主界面上的JLABEL组件对象三个。首先,应该为下一个方块画布添加一个标签,然后,在显示分数的文本框左边也应该添加一个标签,最后,在游戏主界面的顶端要添加一个菜单栏,菜单栏上添加几个菜单对象。可以确定,主界面上,本游戏有一个菜单栏,位于主界面的最上方,菜单栏上的按钮有二个,一个是“游戏控制”按钮,排列在游戏信息显示面板的左上角“游戏控制”按钮下面又有“新游戏”“退出”“继续”“暂停”四个选项按钮。开始时只显示“游戏控制”按钮,当按下“游戏控制”按钮后就会出现四个选型按钮。由此可以得到游戏控制实现的主要代码/定义游戏菜单项JMENUGAMEMENUNEWJMENU“游戏(G)“JMENUITEMNEWITEMNEWJMENUITEM“新游戏(N)“GAMEMENUADDNEWITEMFINALJMENUITEMPAUSEITEMNEWJMENUITEM“暂停(P)“GAMEMENUADDPAUSEITEMJMENUITEMCONTITEMNEWJMENUITEM“继续(C)“GAMEMENUADDCONTITEMJMENUITEMEXITITEMNEWJMENUITEM“退出(E)“GAMEMENUADDEXITITEM另一个按钮是“游戏帮助”按钮,紧跟在“游戏控制”按钮的后面,“游戏帮助”按钮下面又有“关于游戏”“关于作者”“游戏忠告”三个选项按钮,开始的时候也只显示“游戏帮助”按钮,当按下“游戏帮助”按钮后会出现三个选项按钮。由此可以得到游戏帮助实现的主要代码/定义帮助菜单项JMENUHELPMENUNEWJMENU“帮助(H)“JMENUITEMABOUTITEMNEWJMENUITEM“关于游戏(G)“HELPMENUADDABOUTITEMJMENUITEMWRITEITEMNEWJMENUITEM“关于作者(W)“HELPMENUADDWRITEITEMHELPMENUADDSEPARATORJMENUITEMADVIITEMNEWJMENUITEM“游戏忠告(A)“HELPMENUADDADVIITEM综合以上信息,可以大概确定本游戏的主界面,如图62所示图52游戏主界面效果图52主模块方块与地图模块设计方块与地图模块是游戏中最主要的模块,本模块存储了游戏最重要的两个数据结构方块四维数组和地图坐标二维数组,以及对这两个数据结构的操作。这些操作就构成了游戏中最基本也是最主要的功能,如得到方块、方块的翻转移动、满行消除等等。(1)方块的不同状态的表示本模块中方块的数据结构用一个四维数组存储,数组的第一维代表方块的形态,方块形状类型有S、Z、L、J、T、O、I这7种,第二维代表某种方块的一个翻转状态,即翻转几次,第三维和第四维代表的是具体的方块。在实际的实现过程中我们定义一个四维数组INTSHAPESBLOCKTYPETURNSTATEIJ,方块数据存储了七种不同形态的方块,以及每个方块的四种形态,可用一个7X4X4X4的四维数组表示,假定,BLOCK00IJ的值如以下1,1,0,00,1,0,00,1,0,00,0,0,0则,BLOCK00IJ代表“7”字型的方块。当方块翻转时,只需改变第二维的下标即可,即,BLOCK00IJ变为BLOCK01IJ。而如果更改方块形态,就改变数组第一维坐标。虽然我们为每种方块都定义了四种状态,但是,这其中有一些方块的几种翻转状态是一样的,例如,长条形的方块,就只有两种翻转状态,田字形的方块,只有一种翻转状态,这些方块在方块数组中存储的多种状态也就都是一样的。(2)将方块绘制到地图中如何将方块绘制到地图中去,可以说是游戏主模块中最大的难题,有了良好的方块数据结构和地图数据结构,这个难题也就变得简单多了,只要得到方块数组在游戏地图中的坐标,然后遍历这个方块数组,将方块数组中值为1的地方全部绘上一个单位的正方形格子,当方块数组遍历完毕后,也就在地图上绘制出了形状不规则的方块。(3)建立游戏的坐标系统俄罗斯方块,最终是要将方块绘到游戏地图中,如何确定方块在地图上的位置,就需要一个方块数组与游戏地图数组的映射关系。建立一个合理的坐标系统,对于游戏的设计有莫大的方便。结合JAVA的坐标系统,综合游戏设计上的考虑,本程序最终确定了将游戏地图的左上角坐标表示为0,0,同样,方块在游戏地图中表示为记录方块左上角在游戏地图中的坐标。(4)方块在地图中的移动表示确定了方块数据与地图数据的映射关系,对方块和游戏数据的操作就变得简便了。对方块的操作包括方块的左移、右移、下移等,当方块左移时,只需将方块数组左上角的坐标往左方向移动一个单位即可,同理,方块右移、下移时,只需将坐标往右、往下移动一个单位。如果以X代表方块左上角的横坐标,以Y代表纵坐标,方块左移,执行的操作是X,方块右移,执行的操作是X,方块下落,执行的操作是Y。例如,方块往下移,需要将游戏地图的横坐标也随着往下移动一个单位,当发现再向下就会遇到障碍物,就停止继续向下移动,方块到达最底端。往左往右移动需要将游戏地图的纵坐标也随着往左或者往右移动一个单位,但是首先要判断是否有障碍物,当有障碍物的时候就不能移动。(5)方块在地图中的消行方块满行消除,需要遍历游戏地图数组,当发现某一行数值全为2,即认为这一行被方块填满,应该立即消去该行,行消去之后,应该把这行以上的所有数据全部向下移动一行,然后再继续往下检测,有满行也立即消行,再把上面的数据整体往下移动一行,如此重复,直到将所坠下方块占据的行数检测完为止,同时要记下此时的分数。最后得到的就是消行之后方块的堆积状况和游戏地图数据了,也就实现了方块的行消除。由此可以得到本模块的主流程图如图53所示是是否移动方块游戏是否结束方块是否能够移动游戏开始初始化屏幕移动后是否越界否是方块是否已落下否是否是否能够消行是是产生新方块,并产生新的下一个方块越界自动纠正否计算得分方块控制线程进入WAIT状态方块控制线程进入WAIT状态删除满行接受控制信息开始结束图53方块和地图数据模块流程图521如何得到方块如图63所示,游戏中得到方块分两种,一是当方块落下后得到一个新方块,显示在游戏地图中,接着得到一个下一个方块,显示在下一个方块画布中。这里,将要解决的问题就是怎么得到一个新方块,怎么得到一个下一个方块,又怎么将下一个方块作为下一个新方块。方块是有模型和颜色的,在方块的下落过程中,还得先得到要出现的方块的模型和颜色,然后才能在画布中绘制出指定模型、指定颜色的方块。A方块的模型每得到一个新方块,都是随机从七种形态的方块中选取一种。由概要设计中可以得出分析,可以定义一个变量,代表新方块的模型。比如定义INT型变量BLOCKTYPE代表方块模型,方块的模型只有七种,所以BLOCKTYPE的取值也只有七个,可以设定BLOCKTYPE取值从0到6。即,00DFORINTE0E11EMAPEDMAPED1C0/确定消行分数SWITCHICASE1SCORESCORE1BREAKCASE2SCORESCORE3BREAKCASE3SCORESCORE6BREAKCASE4SCORESCORE10BREAKDEFAULTBREAK6游戏测试61测试的意义及注意事项如前所述,衍生自C的JAVA语言,出于安全稳定性的考虑,去除了C中不容不得易理解和掌握的部分,如最典型的指针操作等,降低了学习的难度;同时JAVA还有一个特点就是它的基本语法部分与C语言几乎一模一样。这样,无论是学过JAVA再学C,还是已经掌握了C语言再业学JAVA,都会感到易于入门。62游戏测试的步骤通常,软件测试的过程可以划分为单元测试、集成测试、确认测试和系统测试,本游戏将以这四个步骤进行测试。621单元测试单元测试又称为模块测试,是针对软件设计的最小单位程序模块进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。可以应用人工测试和计算机测试两种不同类型的测试方法。单元测试需要从程序的内部结构出发设计测试用例,即采用白盒测试技术。多个模块可以平行独立地进行测试。在这个测试过程中所发现的往往是编码和详细设计中的错误。传统的最小可编译单元通常指模块、函数或子程序等,而在面向对象技术中通常是指类。单元测试的重点是模块接口测试、局部数据结构测试、重要的执行通路测试、出错处理通路测试、边界条件测试。622集成测试系统测试是在单元测试的基础上,将所有模块按照设计要求组装进行测试。一般包括逻辑关系检查、数据关系检查、业务关系检查、模块间接口检查、外部接口检查。就是把经过测试运行正常的子系统组装成完整的系统后再进行测试。系统测试是测试整个软件和硬件系统,验证系统是否满足规定的要求。这个阶段发现的问题往往是需求说明和软件系统设计时产生的错误。623确认测试确认测试是在软件开发过程结束时对软件进行评价,模拟用户运行的业务环境,运用黑盒测试方法,验证软件系统是否满足用户需求或软件需求说明书中指明的软件特性(功能、非功能)上的。624系统测试系统测试是在所有单元、集成测试后,对系统的功能及性能的总体测试,就是将通过确认测试的软件作为真个基于计算机系统的一个元素,与计算硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。63测试的过程631游戏界面菜单选项的功能测试1“控制”菜单测试点击“游戏”“新游戏”点击“游戏”“暂停”输出游戏开始输出游戏暂停结果正常结果正常图61游戏开始效果图图62游戏暂停效果图点击“游戏”“继续”点击“游戏”“退出”34输出游戏继续输出游戏退出结果正常结果正常图63游戏继

温馨提示

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

评论

0/150

提交评论