目录摘要 (1)关键词 (1)1 前言 (2)2 需求分析 (3)2.1 系统开发环境 (3)2.2 系统玩法及规则 (3)2.3 系统设计分析 (4)2.4 注意事项 (5)3 概要设计 (5)3.1 系统介绍 (5)3.2 系统简单设计 (6)3.3 系统功能设计 (6)3.4 系统流程 (8)4 系统详细设计 (9)4.1 设计游戏框架 (9)4.2 设计游戏界面 (13)4.3 游戏内容设计 (14)4.3.1 方块描述 (14)4.3.2 地图描述 (16)4.3.3 地图方块阻碍描述 (16)4.3.4 满行判断及删除 (16)4.3.5 线程控制的实现 (17)4.3.6 控制游戏开始 (17)4.3.7 控制游戏暂停 (17)4.3.8 控制游戏结束 (17)4.3.9 控制方块自动下降 (18)4.3.10 预备方块区的上移效果 (19)4.3.11 键盘事件处理 (19)4.4 游戏其它功能的实现 (20)4.4.1 添加状态栏 (20)4.4.2 添加关于对话框 (20)4.4.3 添加音响效果 (22)4.4.4 得分情况封装 (23)4.4.5 成绩的录入 (25)5 系统实现 (28)5.1 登入界面 (28)5.2 游戏主界面 (28)5.3 游戏结束显示框 (29)5.4 成绩排行榜 (30)6 系统测试 (30)6.1 测试举例 (30)6.2 测试项目 (31)6.3 测试方法 (32)7 设计小结 (33)7.1 出现的问题及解决方法 (33)7.2 游戏存在的不足 (35)7.3 结论 (35)参考文献 (36)致谢 (37)附录 (38)基于JAVA技术的俄罗斯方块游戏的设计与实现摘要:俄罗斯方块是一款非常经典的游戏,曾经风靡全球,经久不衰,相信不少人都玩过,同时也是我们学习面向对象编程思想的理想实例。
现在面向对象的编程语言很多,都可以通过编程来实现。
本设计介绍的是用Java语言设计一个俄罗斯方块游戏的全过程,整个游戏系统是一个应用程序,不再是嵌入到网页里的那种小应用程序,并使用了 Swing组件,使得界面更具有专业效果。
游戏设计过程中涉及到游戏框架、游戏界面的编写、菜单处理、变量的定义、算法设计以及预览功能的实现。
同时,还为游戏添加了其他功能,如设计About对话框,实现游戏分数的存档,为游戏添加状态栏等。
通过本次毕业设计可以学到如何定义类和类成员及其方法;并如何使用JBuilder来创建工程;如何创建一个对话框,并将对话框和主应用程序联系起来共同使用。
关键词:俄罗斯方块; Java;应用程序; Swing组件The Design And Implementation Of A Tetris Game Based On JavaTechnologyAbstract: Tetris is a classic and durable game, and it has been popular all over the world. Believeing it has been played many of people. and meanwhile it’s an ideal sample for leaning object-oriented programming. It can be implemented by different object-oriented programming languages that exists nowadays. This thesis describes the implementing process of this game in java language, which is implemented in application form instead of applet that embedded in the web pages. The use of swing component makes the interface look more professional.The process of game programming involves the design of game frame and game interface, menu design, the definition of variable, arithmatic design and the implementation of preview function. Meanwhile, others are also added, such as the About dialog, status bar, and the function of game scores saving. A lot can be learned in the process of programming, such as how to define the classes and its members and functions, how to build a project in JBuilder, and how to implement a dialog box, and how to connect dialog box to the main frame of using together.Key words: Tetris; Java; application; swing component1 前言计算机游戏如同戏剧、电影一样,是一种新型的综合性艺术产品,计算机游戏软件的开发和一般的软件产品的开发有着明显的不同,计算机游戏程序设计人员不仅需要掌握程序设计的技巧和软件工程方法,还需要有坚实的专业领域知识,才能有效地生成和实现游戏的画面内容、音效处理等。
近来,Java游戏在提供个人娱乐方面变得越来越流行,这种流行给游戏出版商带来丰厚的利润。
JAVA游戏在给游戏开发者和相关人员带来无数商机的同时,也处于极为重要的枢纽位置。
据估计,到2009年,全世界的Java游戏玩家有望达到两亿两千万之多, Java游戏开发将被规划并扩展到一个更高的层次。
同时,俄罗斯方块可以说是一款非常流行且历久弥新的老游戏,风靡全球,经久不衰。
究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解而喜欢上它的。
它之所以如此耐玩,主要在于它拥有简单的控制(只需上下左右方向键)、简单的游戏规则(有空就移,有满行就删除)及刺激的游玩过程(方块下降的速度因等级而变化)等。
俄罗斯方块这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷。
相信大多数玩家都还记得为它痴迷得茶饭不思的那个俄罗斯方块时代。
这款游戏除了好玩之外,在程序设计上也有多处值得学习的地方,如方块的旋转处理、绘图的应用及双重显示缓冲区的使用等。
整个游戏在设计上偏重逻辑的运算,其次为绘图及使用者接口的控制,在游戏设计过程中可以了解到对象的设定、绘图的技巧等。
俄罗斯方块无论从操作过程或程序设计来看,都是一款既好玩又可以在设计过程中享受成就的好游戏。
一个完整的俄罗斯方块游戏,要求带有多关卡设置、计分统计、伴有音响效果和背景音乐,可以控制游戏的开始、暂停和重玩,并具有一定的自动演示功能。
同时,还要为游戏添加其他功能,如设计About对话框,实现游戏分数的存档,为游戏添加状态栏等,并要求使用图形用户界面,界面色彩、布局要求美观,操作流畅。
主要涉及到图形用户界面的图形绘制,整个程序采用Swing图形界面,要求熟练掌握Java2图形用户界面的事件处理及部分Swing组件的使用。
在代码的编写上要考虑代码重用的思想,要深入理解抽象类和接口的作用等。
2 需求分析2.1 系统开发环境当今,运用Java语言来开发一些小游戏已经非常普遍,而一些中型游戏有时也可在网络上见到。
Java程序本身无论是在绘图、网络、多媒体等方面都提供有相当多的API链接库,甚至包括了3D领域,所以使用Java程序来设计程序可以获得相当多的资源。
而Java程序可以使用Applet来实现的属性,更使得它拥有更大的发挥空间;另一方面,目前有许多桌面游戏,也逐渐用Java来进行开发,这也是我选择Java开发的原因。
Borland JBuilder是一种处于市场领先地位的跨平台开发环境,支持最新的Java 标准,并且缩短了开发周期。
新增的功能有从输入的EJB代码中生成EJB块,并且增强了EJB2.0设计器。
JBuilder一直以其友好的集成开发环境在业界受到广泛的赞誉,这也是JBuilder一直是广大程序员最喜爱的Java开发工具的原因之一。
JBuilder的可视化集成开发环境包括文本编辑器、工程创建工具、对象浏览器和调试器等。
用户可以在集成开发环境中创建工程和打开工程,建立、打开和编辑文件,并可以编译、运行和调试应用程序。
可以说在JBuilder中开发Java程序,快速而且高效。
2.2 系统玩法及规则游戏的玩法及规则,关系着游戏本身的刺激性及耐玩度,本游戏除了基本的控制方式及规则外,还适度地增加了一些控制及规则,以便能更好地操作游戏和增强它的耐玩度。
本游戏在控制上主要采用键盘输入的方式,相关控制键如下表1所示。
表1 玩游戏时使用键盘的相关控制键Table 1 Using related control key of the keyboard to control gameat the play game按键说明↑方块方向变化↓方块下降←方块左移→方块右移Space 方块直接降落到底部续表1按键说明Pause 游戏暂停Esc 游戏结束如表1所列,除了一般的控制外,还新增了space(方块直接降落)等按键,这些按键都是有效加快游戏进行的控制键,其它的助记符和快捷键不再介绍。
游戏的规则如下表2所示。
表2 游戏的规则Table 2 The rules of the game规则说明方块移动方块会持续向下移动直到无法降落为止,使用者可按相应方向键控—制方块向左、向右、向下移动,当按向上方向键方块会作90度的旋—转。
移动时,预备移往的区域必须符合现在方块的方向及所占区域。
计分每次删除行数的立方乘以25再乘速度等级所得积的总和速度等级越高速度越快预备方块一次提示三个如表2所示,计分方面采用线性增加的方式,这样使得游戏设计简便,再搭配3个预备方块提示,玩家更会考虑再排列方块。
2.3 系统设计分析Java为纯面向对象(Object-Oriented,OO)的程序语言,它的诸多优点在此就不作论述了。