基于JAVA的俄罗斯方块网络对战游戏Word格式.docx
《基于JAVA的俄罗斯方块网络对战游戏Word格式.docx》由会员分享,可在线阅读,更多相关《基于JAVA的俄罗斯方块网络对战游戏Word格式.docx(10页珍藏版)》请在冰点文库上搜索。
学校有权保留送交论文的复印件及电子版,允许论文被查阅和借阅;
学校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。
(保密论文在解密后应遵守此规定)
学生签名:
年月日
导师签名:
摘要
游戏开发是艺术与编程技术相结合的完美表现。
游戏软件是一种与文化背景密切联系的产品,具有很强的民族性和丰富的文化内涵。
伴随着游戏软件在市场上的销售,与其相关的文化也随之传播。
因此发展我国自主的益智、健康的游戏软件已是当务之急。
游戏是一种基于计算机的应用软件,是新型的休闲娱乐方式。
当前开发的游戏软件应该做到知识性、娱乐性、趣味性、教育性相统一。
俄罗斯方块游戏是一个比较经典的游戏,根据软件工程有关的规范,以合理的开发原则,设计出单机版和网络版的俄罗斯方块游戏,并给人们的生活带来唯美的艺术享受和健康愉快的补充。
该文利用java的"
Writeonce,runanywhere"
的特性,可以真正达到程序只写一次,在任何平台都可以执行。
同时java语言对面向对象的良好支持,使开发具有高效性。
因此首先介绍了俄罗斯方块游戏的规则,使用户对该游戏有个系统的了解,随后介绍了俄罗斯方块游戏的开发过程、算法设计与分析(如下坠物的生成、下坠物随机选择的方法等)。
通过将研究的思路运用于实际,在MyEclipse的开发环境下实现了俄罗斯方块网络对战游戏。
关键词:
俄罗斯方块游戏;
MyEclipse;
多线程;
第1章前言
我们国家正处于全球文化产业日新月异大格局中,电子游戏、网络游戏的发展速度之快,更是令人眼花缭乱,目不暇接。
未来的电子和游戏发展趋势必将是更智能化、更艺术性、更人性味。
在高性能的硬件设备的支持下,游戏的驱动引擎更具威力,控制功能更加完备,在一个错综复杂的极度扩张的游戏大世界中,带着超乎平常人智慧的人工智能的应对力,使得所有要素包括艺术的风格、情感的互动、故事的铺展、视觉的表现、用户的界面,融合为有机的一体,给人们带来更丰富的娱乐和体验。
好的游戏给人们的生活带来了健康愉快的补充,唯美的艺术享受,潜默的教育功效。
本系统采用MyEclipse为主要开发工具设计实现了一个网络板的俄罗斯方块游戏。
与其他程序相比,该作品有两个特色:
一是精心设计的人机界面,不仅友好而且易于操作。
二是该游戏虽然采用的是网络板,但并不给对方添加障碍,大家都知道网络板的游戏大多都是几个玩家通过网络进行较量,在游戏当中为对方制造障碍或使用一定的工具,以增加自己的速度或得分。
本游戏是自己玩自己的,看谁最先自然死亡,谁就是输家。
在其他人看来,跟单机版没什么两样。
第2章俄罗斯方块游戏规则和特征
2.1俄罗斯方块游戏的规则
俄罗斯方块游戏的玩法非常简单易学,游戏界面是一个很高的长方形2D盒子,方块出现在盒子的上方,这些方块都由四个小方块组成,并按照各种方式排列,其中每一个方块都至少和另一个方块相连。
然后,这些积木慢慢地落向盒子底部,玩家可以把这些方块左右移动或旋转。
一旦这个方块碰到阻碍,比如盒底或者另一个方块,它就会停止,而玩家可以对之加以操作。
当屏幕底端的方块拼满一横行时,这个层的方块就会消失,而这一行以上的所有方块都会下降一层。
而当那些没有拼玩的横行填满整个长方形盒子,新的方块无法再出现时,游戏就结束了。
2.2俄罗斯方块游戏的特征
2.2.1单屏游戏
俄罗斯方块全部反映在一个屏幕上。
玩家可以在同一时间看到整个游戏环境,在此基础上决定怎么处理手上的这块积木。
这个游戏当中没有任何探险成分在内,它不会让玩家真正大吃一惊,玩家能够看到让游戏顺利进行下去的所有信息,所以玩家输了的话只能怪他自己。
2.2.2无限游戏
只要积木还没有堆到盒顶,俄罗斯方块就允许玩家一直玩下去,不管他做出了多少错误的决定。
每次游戏都以失败而告终,没有人真正能打败这个游戏。
玩家们总是能找到提高玩俄罗斯方块技艺的方法,这就是俄罗斯方块和传统图游戏的根本不同。
一旦玩家拼好了一幅拼图,只要他还记得他是怎么拼的,那么这个拼图就对他再也无挑战了。
所以人们通常不会多次玩一个拼图,但一个设计精巧的游戏却总能让人玩上一遍又一遍。
俄罗斯方块正是这样一个游戏。
2.2.3最高分机制
俄罗斯方块引入一个计分模式,它给玩家计分并把分数记录在高分排行榜上。
实际上,因为玩家不可能击败这个游戏,所以,取得一个更高分数的可能性就成为玩家反复玩这个游戏真正的动力所在。
2.2.4简单易学,容易操作
俄罗斯方块的真正杰出之处在于它的游戏机制简单平朴,浅显易懂。
玩好这个游戏只需极少的建伟,所有操作都在屏幕上一览无余。
这意味着,不论是否熟悉计算机游戏,任何人都可以走过来并立即开始玩它。
然而,玩家永远不可能完全掌握这个游戏,因为这个游戏的难度与是递增的并且它在理论上可以玩无限长的时间。
2.3本章小结
概述俄罗斯方块游戏的规则和特性。
第3章俄罗斯方块游戏的系统实现
3.1系统实现
俄罗斯方块游戏首先应该能够产生各种各样的图形,这是由图形工厂类ShapeFactory实现的,Shape类主要实现图形的移动和变形;
GamePanel类继承JPanel用来显示各种各样的图形,我们还需要一个类专门用来存放已经下落的图形即Ground类。
各类之间的关系如下所示:
触发按键事件
生产
图形(Shape)是由图形工厂(ShapeFactory)产生的;
GamePanel中要有触发按键事件,目的是为了控制图形的移动和变形,所以应有按键处理器来控制图形(Shape),那么什么时候图形就不能再移动了,什么时候游戏就结束了,所以应有相应的处理逻辑,即根据不同的情况,向Shape,ShapeFactory,Groound或GamePanel发出不同的指令,因此,我们把处理按键事件和处理逻辑的代码放在一个类中,即Controller类。
图形定时下落,每下落一次后都需要重新显示,图形移动和变形后,也需要重新显示,可以通过事件监听建立联系,让Shape每下落一次后,都触发一次事件,事件的处理器是Controller,根据它的需求再重新显示一下,因此需要增加一个接口:
ShapeListener:
voidShapeMovedDown(Shape);
图形还有一个性质就是自己可以不停的下落,我们可以使用线程实现,开启一个线程,让该线程不停的调用Shape的moveDown(),向下移动一次后,让线程休息一段时间,即休息时间为图形的下落速度。
使用一个实现Runnable接口
3.2图形设计与创建
大家知道在程序中有各种各样的图形,我们必须设计一种数据结果来表示和存储各种各样的图形,以及经过这个图形的结构来计算图形和面板的关系。
我们可以把显示的区域想象成一个大大的表格,里面的格子就是组成图形以及障碍物的组成单位,使用坐标表示图形。
因为最宽和最高的图形就是4个宽或4个高,因此可以用一个4*4的方阵表示。
每一个图形都可以有多种状态,变形就是显示图形的下一个状态。
可以用数字来区分,0表示是面板的格子,1表示是图形的格子,用数组表示。
一种图形的多种状态可以用二维数组表示。
所有图形都保存在一个数组中,又因为每种图形的多种状态保存在一个二维数组中,因此构成了一个三维数组。
如图:
一种图形的多种状态:
左边的图形可以表示如下:
{{
{1,0,0,0,1,1,1,0,
0,0,0,0,0,0,0,0}
{1,1,0,01,0,0,0,
1,0,0,0,0,0,0,0}
{1,1,1,0,0,0,1,0,
{0,1,0,0,0,1,0,0,
1,1,0,0,0,0,0,0}
图形的形状是随机产生的,即:
inttype=newRandom().nextInt(shapes.length);
Shapes[type]为二维数组,表示一种图形的一种状态
shape.setBody(shapes[type]);
shape.setStatus(0);
3.3图形移动与显示
图形自己可以下移,因此在图形类里面要保存自己的位置信息,用left表示图形到左边界的距离,top表示图形到上边界的距离,图形移动就是改变left和top的值。
图形左移使left减1,右移使left加1,下移使top加1;
图形左上角坐标为:
x坐标:
left*一个格子的宽度,y坐标:
top*一个格子的高度;
图形中的格子在显示区域中的位置为:
left+格子的x相对坐标,y坐标:
top+格子的y相对坐标
3.4处理游戏边界问题
按键以后,图形不一定都能够移动或变形,如果下一步的动作会使图形超出边界,则该图形不能再向边界移动,只能向下或相反方向移动;
如果图形中有的点与障碍物重叠,则图形将不会再移动,从而也成为障碍物,将再产生一个新的图形。
3.5消除满行的障碍物
每次当产生一个新的障碍物时,都要循环检查一次,看是否有满行(该行没有空白),如果满行则消除该行,让上面的所有行都依次向下移一行。
在控制器产生新的图形时,我们都要判断游戏是否结束,如果没有结束就产生一个新的图形。
又该如何判断游戏是否结束呢?
可以判断第一行是否有障碍物,有但不是满行时,则表示游戏结束。
3.6用户界面
俄罗斯方块游戏的最终用户是喜欢玩该游戏的人,在工作之余,玩玩游戏以缓解一下,所以用户界面必须简洁,直观,方便和易用。
良好的用户界面,要有关数显示和分数显示。
让方块在一定的区域内运动和变形,该区域用一种颜色表明,既用一种颜色作为背景,最好设为黑色。
还需用另一种颜色把黑色围起来,宽度适中,要实现美感。
用户界面
3.7服务器端和客户端
本游戏为网络对战版俄罗斯方块,分为服务器端和客户端两个程序,客户端登陆服务器后选择“备战”后即可与其他对手进行对战。
每一个用户连接进来就产生一个线程为他服务,每个用户不用给对方增加障碍,即自己玩自己的,看谁先自然死亡,谁的图形先到达最顶端,也没有可消除的行,即为输方。
服务器端主要包括数据库服务器和应用程序服务器。
数据库服务器主要存储用户信息,一般可用Oracle等数据库作服务器。
应用程序服务器在接受到用户的请求后,根据用户所选的关数等参数,动态的和数据库服务器连接。
数据库服务器根据传送过来的参数,来设置相应的图形下降速度;
即关数越大,图形下降速度越快,每消除一行增加的分数越多。
3.8本章小结
主要介绍了俄罗斯方块游戏实现的设计架构。
第4章总结
俄罗斯方块游戏是非常传统的游戏,操作简单,难度却不低,广受娱乐界欢迎。
给人们的生活带来了健康愉快的补充,唯美的艺术享受。
本系统是基于java平台的俄罗斯方块网络对战游戏,利用MyEclipse开发工具实现了经典的俄罗斯方块游戏。
本文从俄罗斯方块游戏的规则、俄罗斯方块游戏的特性、俄罗斯方块游戏开发过程、难度选择模块、方块处理等,讨论了俄罗斯方块游戏的实现与为人们带来的好处。
参考文献
[1]JasonLam著.DeabowayChou译.J2ME&
Gaming[M].2004.
[2]肖永亮等.计算机游戏程序设计[M].北京:
电子工业出版社,2005.
[3]袁海燕王文涛著.JAVA适用程序设计100例[M].人民邮电出版社,2005-5.
[4]TomMeigs.顶级游戏设计[M].北京:
电子工业出版社,2004.
[5]陈立伟,张克非,黎秀红著.精通JAVA手机游戏与应用程序设计[M].中国青年出版社,2005-5.
[6]IanSummerville著.程成等译.软件工程[M].机械工业出版社,2003-1-1.
[7]微型爪哇人著.Java手机程序开发[M].中国铁道出版社,2003.
[8]JoshuaBloce著.潘爱民译.EffectiveJava中文版[M].机械工业出版社,2004-7-7.
[9]BruceEckel著.侯捷译.Java编程思想[M].机械工业出版社,2005-3-1.
[10]王森著.Java手机/PDA程序设计入门[M].电子工业出版社,2005-2-3.
[11]JamesKeogh著.潘颖王磊译.J2ME开发大全[M].清华大学出版社,204-2-1.
[12]Frand.M.Carrano,Janet.J.Prichard著.韩志宏译.数据抽象和问题求解----JAVA语言描述[M].清华大学出版社,2005-4.
致谢
本论文是在姜老师的悉心指导下完成的,在此向姜老师表示我衷心的感谢!
感谢姜老师两年多来在各个方面给予我无私的关怀和精心的教诲,正是姜老师渊博的知识和严谨的教学态度,使我在学习等各个方面受益匪浅,能够在姜老师的指导下完成我的大专论文,是我一生难得的机会,在此我向姜老师表示我最衷心的感谢!
最后我要感谢老师对我的帮助和指导,感谢所有全力以赴支持我完成大专学业的老师和同学们。
个人简历
石文月,女,生于1986年6月8日,2006年7考入滨州职业学院,专业为计算机软件技术,研究方向为计算机软件技术。