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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

软件作业俄罗斯方块游戏2.docx

1、软件作业俄罗斯方块游戏2目录一、需求分析 1.电子游戏的发展状况1 2.设计目标.6 3.游戏需求.6 4.软硬件环境7二、总体设计 2.1游戏设计方案的确定82.2系统流程结构设计92.3各个功能图模块设计 9三、详细设计 3.1模型层设计.10 3.2视图层设计.16 3.3控制层设计.183.4游戏演示.18 4、系统测试分析 4.1游戏界面菜单选项的功能测试.21 4.2按键事件的功能测试.22 4.3方块堆砌与消行测试.22 4.4测试结果分析.23五、个人小结23一、需求分析1. 电子游戏发展现状1.1 电子游戏在国外的发展现状电子游戏是最初产生于美国,1971年,一个还在MIT就

2、读的学生设计了世界上第一个业务用游戏机,这个街机游戏的名字叫电脑空间。可以说时至今日,电子游戏仍然是外国的天下。美国至今仍是世界第一大游戏市场,它遵循的是以发行商为主的产业开发链模式,根据美国市场调查公司NPD Group调查统计,美国2004年游戏总销售金额(包括家用、掌上型主机及软件)为99亿美元,占了全球游戏市场的45%。其中游戏软件销售的具体数字是:视频游戏软件的销售额达52亿美元(1.6亿套),PC游戏软件销售额达11亿美元(4500万套),掌机游戏销售额达10亿美元(4230万套)。2004年一共大约有2.48亿套游戏售出。据估计,美国每个家庭平均购买过2部游戏3。日本近20年来疯

3、狂赚电子游戏的钱。从上世纪60年代初的街机,到六七十年代之间的家用游戏机,再到八九十年代的掌上游戏机,日本经过30多年的耕耘,终于把电子游戏这棵“摇钱树”,培育成第一时尚娱乐产业,垄断全球业界长达10余年。对于日本来说,电玩业已是国家经济的重要支柱之一,在GDP中占有1/5的举足轻重地位。日本游戏业在最辉煌的1998年,曾经占领全球电子游戏市场硬件90%以上,软件50以上。韩国号称世界上网络游戏产业最发达国家之一。迄今为止,国内网络游戏市场有超过60%的产品来自韩国游戏软件开发商,韩国网络游戏使国内很多游戏运营公司在游戏营销市场或股票资本市场上获得了巨大的成功。 韩国游戏市场的发展不是偶然,韩

4、国政府不仅给游戏产业以正确的定位和引导,更是将其和本国经济发展紧密地联系到一起,做了很多市场培育方面的工作。韩国政府认识到,靠重型工业来支撑全国经济的做法是片面的,于是将、娱乐产业视为新的经济增长点,开始大力扶持。从那时起,科技含量极高而能源消耗极低的游戏制作及相关产业担负起了“富国兴邦”的重担。由文化观光部出面组建韩国游戏支援中心,向韩国游戏产业提供从资金到技术上的多方面支援;成立游戏投资联盟,政府每年向游戏产业投入的资金多达亿韩元,并为游戏企业提供长期的低息贷款;设立信息化基金和文化产业基金,为游戏产业服务;对指定的风险企业实行各种税制优惠政策,减少甚至免除游戏企业的税务负担;建设游戏产业

5、基地以扶持中小游戏企业的发展;对从事游戏产业的高科技人才免除两年的兵役。 在韩国,从制作到运营,一个网络游戏公司起步门槛较低,主要得益于政府实行的援助计划。此外,在有利的政策形势下,韩国出现了众多的游戏院校,一些原本不涉足此领域的大学也开设了游戏相关专业课程,以大力培养游戏专业人才,从而为游戏生产提供了基础保障。1.2电子游戏在国内的发展现状与电子游戏发达的国家相比,我国在电子游戏方面还存在比较大的差距。目前,我国游戏市场正处于发展阶段,但市场上的游戏软件主要来自日本、美国、韩国等地,但由本土游戏制作人开发创作的游戏正在高速增加,国产原创的游戏即将成为游戏的主流。中国的游戏产业经过80年代初期

6、台湾厂商的探索至90年代,开始了自己的研发、发行的历程,直至网络游戏的风行,让中国的网络游戏开始有了飞速的发展。 1983年,智冠科技有限公司在中国台湾成立,为全球第一家签订授权重制中文版产品代理销售合约的公司,2000年智冠在台湾股票上市, 2002年其控股的中华网龙在台湾上市。1996年底,UBI SOFT上海分公司暨上海育碧电脑软件有限公司成立。同年,全球游戏软件领军企业EA在中国上海成立办事处。1997年,由尚洋公司制作的血狮正式上市。 1997年,北京新天地互动多媒体技术有限公司成立,该公司引进了古墓丽影III(TombRaider III)、盟军敢死队等著名欧美游戏,并在1999年

7、在中国率先掀起“游戏软件价格革命”,全面推行50元的价格体系,从此正版游戏价格开始贴近大众消费者。 1999年,业内估算中国电脑游戏市场(正版)约1.5亿元人民币。 2000年,大陆华彩软件代理发行第一款中文MMORPG万王之王正式推出,该游戏于1999年在台湾发行,由台湾雷爵资讯(Lager)开发。也在2000年,继万王之王、石器时代、网络三国在台湾上市之后,游戏桔子推出了天堂,游戏桔子成立于1995年,1999年以便利店在台湾奠定了地位。天堂这款由韩国著名游戏公司Ncsoft研发的网络游戏不但在本国大获成功,也在台湾再次夺冠。 2001年初,北京华义在中国大陆地区正式推出了石器时代,华义国

8、际股份有限公司于1993年在台北成立,2001年在台湾股票上市。石器时代成为大陆当时最流行的网络游戏。2001年,天人互动软件技术有限公司在北京成立。当年与SEGA结成PC游戏业务的战略合作关系,发行了樱花大战文明无冬之夜等经典游戏,2002年,引进在欧美网络游戏魔剑(Shadow Bane),这是首款在中国测试的欧美网络游戏。 2001年5月,“联众世界”经过3年多的迅速成长,以同时在线17万人、注册用户约1800万的规模,成为当时世界用户数量第一的在线游戏网站。2005年1月21日,中央电视台报道:我国网络游戏产业当年增加了50%,今后几年都将以50%以上的速度增长;第一届中国网络游戏年会

9、报道:中国国内网络游戏2004年规模达24.7亿元,2009年规模将达到109.6亿元。2、 设计目标通过本游戏的设计,综合自己在校期间所学的理论知识,设计开发俄罗斯方块游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,初步掌握MVC这种设计模式,进一步巩固和加强自身对j2se基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。3、游戏需求 28种状态的方块随机产生,自由下落,落下时可由玩家用上、下、左、右控制键控制翻转和移动,以便以玩家所需要的形态和位置落下。如果落下时,方块的方格能填满某一行,则这一行可消去。消去一行后

10、,游戏可给玩家加分,若由存在空格的方块填满整个窗口,则游戏失败。游戏功能需求如下: 游戏界面需求:设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,游戏的背景色是黑色,方块用蓝色颜色,在一定的区域内运动和变形,落下后的障碍物用黄色显示,这样看起来会有一定的美感。 游戏形状需求:用数组作为存储方块28种状态的数据结构,即长条形、Z字形、反Z形、田字形、7字形、反7形、T字型,各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。 键盘处理事件需求:方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。 鼠标处理事件需求:通过点击

11、菜单栏中相应的菜单项,可以实现游戏的开始、结束,方块形状的变换,分数、等级的显示,以及游戏帮助等功能。 显示需求:当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。当达到一定分数的时候,会增加相应的等级。 4、软硬件环境操作系统:Microsoft Windows XP Professional Service Pack 2内存:512M硬盘:80GCPU:赛扬2.8交互工具:键盘/鼠标显示器:VGA显示器JDK版本:jdk1.6.0.02Eclipse版本:eclipse-SDK-3.4-win32二、总体设计2.1 游戏设计方案的确定 本游戏的设计采用MVC模式(Model -V

12、iew -Controller),即把本游戏的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样本游戏的设计被分成三个层模型层、视图层、控制层。MVC模型图如下所示:2.2 系统流程结构设计2.3 各个功能模块图设计2.3.1 模型层(Model)功能模块图设计2.3.2 视图层(View)功能模块图设计2.3.3 控制层(Controller)功能模块图设计 三、详细设计3.1模型层(Model)设计3.1.1 图形的产生 通过图形工厂类ShapeFactory的getShape(ShapeListener listener)方法随机产生方块的某种状态,这

13、里运用了工厂设计模式,这种设计模式是为了实现高内聚低耦合而存在的,这种设计模式的通俗解释就是:你想要一个产品,你需要让工厂给你生产一个,你要告诉工厂你要生产什么产品,就把你需要生产的这个产品当做参数传给工厂类的生产产品的方法,然后根据你传进来的产品,而决定工厂人生产什么产品,产生出来产品后,最后要返回您要的这个东西。3.1.2 图形的数据结构 定义一个4x4方阵,共16个小格。用“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,

14、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个方向的方块,在不同旋转角度显示不同方向的方块来完成的。所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。本游戏是用一个三维数组int shapes = new int;作为存储方块的数据结构来保存方块的28种状态的。3.1.3 图形的移动图形类Shape保存了自己的位置信息,用left表示图形到左边界的距离,top表示图形到上边界的距离,图形移动就是改变left和top

15、的值。向上移动:top减1,向下移动:top加1,向左移动:left减1,向右移动:left加1。图形的移动分为图形的自动下落以及通过按键事件实现图形的左移、右移以及加速下移。通过多线程ShapeDriver类来实现图形的自动下移,由于游戏中方块的动态性,每个方块有一定的生命周期,所以选用线程来实现方块。一个方块用一个线程类对象实现,该类继承与Thread类,当一个方块出现时也就表示一个线程对象产生并开始运行。通过对按键事件的响应,实现图形的左移、右移以及加速下移。3.1.4 图形的变形通过int type = new Random().nextInt(shapes.length); shap

16、e.setBody(shapestype);shape.setStatus(0);实现初始图形的初始化,通过status = (status + 1) % body.length;实现图形的变形功能。3.1.5 存储和表示障碍物用一个和显示区域的面板大小相对应的二维数组保存障碍物的位置信息,如果对应的位置是障碍物,则这个数组中相应的元素就为1,否则就为0。如何把图形变成障碍物呢?只要把属于图形的格子对应的位置都变成障碍物即可。代码如下:public boolean isMember(int x, int y, boolean rotate) int tempStatus = status; i

17、f(rotate) tempStatus = (status + 1) % body.length; return bodytempStatusy*4 + x = 1;public void accept(Shape shape) System.out.println(Grounds accept); for(int x=0; x4; x+) for(int y=0; y4; y+) if(shape.isMember(x, y, false) if(shape.getLeft() + x)Global.WIDTH & (shape.getTop() + y)=0; y-) boolean f

18、ull = true; for(int x=0; x0; y-) for(int x=0; xGlobal.WIDTH; x+) zawxy = zawxy-1; for(int x=0; xGlobal.WIDTH; x+) zawx0 = 0; deleteFullLine(); 利用循环语句从屏幕最底行依次向上对有方块的每一行进行判断,判断某一行中是否有空白,如果没有空白的话,则将当前的行号传递给deleteLine(int lineNum)方法,由该方法实现消除当前行,并将上面的方块依次下移一行,最后再重新调用deleteFullLine()方法进行查找,直到所有行都检查一遍结束。3.

19、2视图层(View)设计3.2.1 方块的显示通过视图层的GamePanel类的paint(Graphics g)方法调用Shape类的drawMe(Graphics g)方法,从而实现方块的绘制,代码如下:public void drawMe(Graphics g) g.setColor(Color.BLUE); for(int x=0; x4; x+) for(int y=0; y4; y+) if(getFlagByPoint(x, y) g.setColor(new Shape().shapeColor); g.fill3DRect(left + x)*Global.CELL_SIZE

20、, (top + y)*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true); 3.2.2 障碍物的显示 通过视图层的GamePanel类的paint(Graphics g)方法调用Ground的drawMe(Graphics g) 方法,从而实现障碍物的绘制,代码如下:public void drawMe(Graphics g) for(int x=0; xGlobal.WIDTH; x+) for(int y=0; yGlobal.HEIGHT; y+) if(zawxy = 1) g.fill3DRect(x*Global

21、.CELL_SIZE, y*Global.CELL_SIZE, Global.CELL_SIZE, Global.CELL_SIZE, true); 3.3 控制层(Controller)设计控制层主要是实现图形工厂生产图形,图形按键事件的处理,方块、障碍物显示的控制,图形自动下落和障碍物生成的控制。通过控制层这个大管家最终实现此俄罗斯方块的按键事件的处理以及各种逻辑的处理。3.4 游戏演示3.4.1 游戏界面显示3.4.2 开始和结束控制菜单3.4.3 分数和等级查看菜单 3.4.4 变换方块菜单3.4.5 帮助菜单4、系统测试分析4.1 游戏界面菜单选项的功能测试(1) “控制”菜单测试点

22、击“游戏”“开始”输出:游戏开始结果:正常点击“游戏”“结束”输出:弹出游戏结束提示框结果:正常(2) “查看”菜单测试点击“查看”“分数”输出:在游戏面板中间跳出分数显示框结果:正常点击“查看”“级别”输出:在游戏面板中间跳出级别显示框结果:正常(3) “变换”菜单测试点击“变换”“改变方块”输出:在游戏面板中显示随机产生的某种方块结果:正常4.2 按键事件的功能测试 (1) 方块移动测试 游戏过程中,点击“左、右、下”方向键输出:方块正常移动,不会移出边界结果:正常 (2) 方块反转测试 游戏过程中,点击向上方向键输出:方块无边界和障碍物阻挡的情况下可反转结果:正常4.3方块堆砌与消行测试

23、(1) 当方块下落到最底面或与障碍物接触时输出:方块成功堆砌在底部结果:正常 (2) 当出现满行现象时输出:所有满行被消除,方块依次下移结果:正常4.4 测试结果分析 经过测试,本游戏实现了基本的功能,不过整体功能还不是很强大,作为开发的第一个版本,游戏在很多方面还需要进一步完善。五、个人小结游戏设计与实践是一项复杂而且庞大的工作,在选题之后,我才意识到过程的艰难,因为以前从来没有接触过游戏设计,刚开始时有点迷茫和彷徨。后来通过看书和在网上查找资料,逐渐找到了一些感觉。本次设计让我初步懂得了电子游戏所涉及到的有关技术、方法,包括电子游戏分类、选题、构思等。并实现几个可演示的游戏软件,其中有很多

24、应用了学习的相关技术,并且做到了图、文、声并茂,能实际演示。此次设计过程中印象最深的收获有:1、学到了很多新知识,并且对老知识进行了回顾。经过长时间的学习,更进一步熟悉了Java语言。2、通过不断上机实验,调试程序,总结经验,从对课题的不理解到能够开始动手去做,提出问题并自己想办法解决问题,自己多实践,所以增强了动手能力。3、提高了中、英文资料的检索能力。这次毕业设计过程中我查阅了很多资料,不但有图书馆的期刊、杂志、馆藏图书,还有网络中的电子文档、电子书籍、网页及下载的视频教学课程;不但有中文资料还有英文资料。这些资料,使我的眼界更开阔,对课题的认识更加深刻,编写程序的时候思路更加清楚,少走了很多弯路。回顾这个设计过程,我学到了许多书本上没有学到的知识。通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,使我受益非浅,同时也体验到了搞软件开发的困难度。在这次设计的同时,我又从中学到了许多东西。但由于我对这样的软件开发还只是一个开始,了解的不多,这其中或许还有很多的不足,有些模块做得不是很好,有些功能还不能够完全的实现,如不能把要装载的方块提前显示出来。因此做得不是很好,界面的设计及整体的布局还比较简单,没有突出特色出来,这也可能是我这个系统的不足之处。

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

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