1、 毕业设计(论文)年 月 学 生 姓 名学 号所 在 院 系专 业 班 级导师姓名职称完 成 日 期论文题目 基于 Java 的俄罗斯方块游戏的设计与实现Thesis Topic Based on the design and implementation of Java game TetrisI基于 Java 的俄罗斯方块游戏的设计与实现摘 要俄罗斯方块是一款风靡全球,从一开始到现在都一直经久不衰的电脑、手机、掌上游戏机产品,是一款游戏规则简单,但又不缺乏乐趣的简单经典小游戏,上手容易,适用范围广泛,人所共知。俄罗斯方块游戏简单的基本规则是有小方块组成的 7 种不同的规则图形陆续从屏幕上落下
2、,玩家操作移动使其下落拼出一条完整的横条,随即会消失,玩家得分,游戏等级提高,当没有被消除的图形堆积到屏幕顶端时,游戏结束。俄罗斯方块游戏最初是由俄罗斯人阿列克谢帕基特诺夫在 1984 年开发的休闲小游戏,曾几何时它创造了无可匹敌的商业价值,影响了一代休闲小游戏的开发与产业链。随着信息时代科技时代的不断发展和变化,计算机已经普及到每一个人的生活中,在繁忙的工作生活中,这一类休闲小游戏给人们带来了些许的放松。这篇论文详细的描述分析了经典传统的俄罗斯方块实现的基本思路和一些基本游戏规则,在此基础之上,更进一步地开发出俄罗斯方块的创新创意模式,在经典游戏基础上开发出随着分数增高而等级增高难度加大的模
3、式,并且创意性的开发出可操控方块颜色变换的模块,并且增添了游戏声音和音乐模块。本论文对上述功能给出了具体实现流程、详细描述、和一些源代码。本论文阐述了俄罗斯方块游戏的开发和发展历史、开发此游戏的意义以及开发环境并根据软件工程开发软件和 java 编写程序的相关知识,对程序的需求分析、概要设计、详细设计与实现、调试运行进行了一系列描述。此次程序设计是在 Microsoft Windows 7 系统下,以 Java 为开发语言,在 Eclipse 开发平台上进行游戏的设计与实现。关键词:游戏设计;俄罗斯方块;软件工程;Java;Eclipse。IIBased on the design and i
4、mplementation of Java game TetrisAbstractTetris is a popular all over the world, from the beginning to now has been enduring the computer, mobile phone, handheld game machine products, is a game with simple rules, but not the lack of fun, simple classic game, easy to use, wide application scope, bas
5、ic rules of simple Tetris game evident to anyone. There is 7 different to the regular pattern of the composition of the small box on the screen in succession from the fall, the operation of the mobile game player to spell out the whereabouts of a complete bar, then disappear, game player score, game
6、 level, when the accumulation is not eliminated graphics to the top of the screen, the game is over.Tetris game is the first by the Russians in 1984 Alexei Pazhitnov developed a casual game, only a short while ago it creates unmatched business value, affect the development of a generation of casual
7、games and industrial chain. With the information age era of science and technology continuous development and change, the computer has spread to every persons life, in the busy working life, this kind of casual games brought some people to relax.This paper gives a detailed description of the basic i
8、deas of the traditional analysis of classic Tetris and some basic rules of the game, on this basis, further develop the creative mode in Tetris, the classic game developed with the scores increased and the higher rank of difficulty of the model, and develop creative control box color transform the m
9、odule of the game, and add music and sound module. In this thesis the function given the specific implementation process, described in detail, and some of the source code.This paper describes the development history and development of Tetris game, developed this game meaning as well as the developme
10、nt environment and according to the related knowledge of software engineering and software development of Java programming, analysis, outline design of program requirements, detailed design and implementation, debugging and running a series of description.IIIThe program is designed in Microsoft Wind
11、ows 7 system, with Java as the development language, Eclipse development platform for the design and implementation of the gameKey Words: Game design; Tetris, Software engineering, Java;Eclipse。目录基于 Java 的俄罗斯方块游戏的设计与实现 .I摘 要 .IBased on the design and implementation of Java game Tetris .IIAbstract .I
12、I1 绪论 .11.1 程序开发背景及意义 .11.2 开发技术概述 .21.3 俄罗斯方块游戏的研究现状 .21.3.1 国内外研究现状 .21.3.2 文献综述 .32 相关技术 .42.1JAVA 简介 .42.2 Swing 组件简介 .42.3Eclipse 开发平台简介 .52.4 系统平台环境: .62.4.1 硬件平台: .62.4.2 软件平台: .63 系统分析 .73.1 可行性分析 .73.1.1 经济可行性分析 .83.1.2 技术可行性分析 .83.1.3 社会可行性分析 .83.2 需求分析 .83.2.1 功能性需求 .93.2.2 非功能性需求 .93.2.3
13、 接口控制 .94 系统的概要设计 .114.1 系统的功能设计 .114.1.1 手动处理业务的基本流程 .114.1.2 基本流程的功能模块 .125 系统的详细设计与实现 .155.1 游戏主界面显示模块 .155.2 画布、方块显示模块 .165.2.1 背景画布模块设计 .165.2.2 预览方块模块设计 .195.2.3 方块移动、旋转模块设计 .215.3 控制面版模块 .255.3.1 菜单栏模块设计 .255.3.2 控制面板按钮设计 .266 系统的测试运行 .296.1 测试概述 .296.1.1 测试原则 .296.1.2 测试方法 .306.1.3 测试意义及注意事项
14、 .316.2 游戏代码、算法的测试 .316.3 游戏界面菜单选项的功能测试 .326.4 按键事件的功能测试 .346.5 方块的堆砌与消行功能测试 .356.6 测试结果 .35结 论 .36参考文献 .38致 谢 .39附录 A 外文原文 .40The psychology of Tetris .40附录 B 外文翻译 .43俄罗斯方块的心理效应 .4311 绪论绪论从程序的开发背景、开发意义以及所需要开发技术和目前国内外对俄罗斯方块游戏的研究现状进行了简要的叙述。1.1 程序开发背景及意义俄罗斯方块游戏是一款流行于全世界并且经久不衰的游戏,是一款在计算机,手机,电视游戏机,掌上游戏机
15、等一系列产品上都能玩的休闲小游戏,它曾经创造了几乎任何游戏都无可匹敌的轰动和无数的商业价值,是游戏史,软件开发史上的一件重要的大事。在 1984 年 6 月的一天,俄罗斯莫斯科的数学家阿列克谢帕基特诺夫(Alex Pajitnov)在工作地点莫斯科科学计算机中心玩过一个拼图游戏后突然受到启发,而设计出这款游戏,刚开始他只是在 Electronica 60(一种计算机)上进行开发,后来经由瓦丁格拉西莫夫(Vadim Gerasimov)移植到 PC 端,并且在莫斯科的计算机界广泛传播,俄罗斯方块开始大火,成为了有史以来最为畅销的经典休闲小游戏,至今还一如既往保持魅力。俄罗斯方块简单的基本游戏规则
16、是在一个用于摆放小正方形的标准虚拟游戏场地,基本单位为小型正方形;由四个小型正方形组成 7 中不同的规则图形(田字形,Z 字形,反 Z 字形,7 字形,反 7 字形,T 字形,长条形)通过玩家操作上键以 90 度,180 度,270 度,360 度旋转方块一共有 28 种图形方案,通过左键右键左右移动,下键加速下落调整位置,是方块在屏幕底部拼出完整的一条或几条,然后消除,给新落下的方块腾出位置,每消除一条完整横条,玩家等级提高一级,当等级提高到一定等级时刚快下落速度加快,一旦没被消除的方块到达屏幕顶端,游戏结束。随着计算机技术的日益更新和不断发展,俄罗斯方块游戏也不断地推出各式各样的模式,也有
17、许多不同的版本供大家玩耍,因为游戏本身有简单,有复杂,能够很好地锻炼游戏玩家的脑力反应能力,和逻辑思维能力,还能给玩家带来无穷的游戏乐趣,所以深受广大玩家的喜欢。对于开发游戏软件,大多数人都感到触摸不到,很神奇,随着开发方法和工具的不断推陈出新,自己动手开发一些小游戏也并非遥不可及。俄罗斯方块游戏在游戏史上的地位无可匹敌,并且游戏的界面简约,代码并不是很复杂,互联网上也有很多关于俄罗斯方块游戏实现的一些算法和设计,难度并非特别大。俄罗斯方块游戏简单,益智,以其独特简洁的界面和极具玩耍乐趣的模式让众多的游戏爱好者深陷其中,无法自拔,并且老少皆宜。在如今快节奏的生活当中,学生和工作党的学习工作压力
18、也随之越来越大,每个人的任务逐渐繁重,越来越少的自由支配休息时间让人们更加迫切的需要有一些既简单又节省时间的休闲游戏供大家娱乐。毫无疑问,俄罗斯方块是一款简单益智有趣的休闲小游戏,并且可以移植到电脑、手机、平板电脑、电视游戏机、掌上游戏机、电子词典、Mp4 等一系列便携设备上。本次课题研究,无论从技术开发上,还是社会意义上,都是很有价值的,是本人对游戏开发的一次胆大尝试。21.2 开发技术概述软件工程是一门研究用工程化方法构建和维护有效的,实用的和高质量的软件的学科;设计包括程序设计语言,数据库,算法,软件开发工具,系统平台,设计模式等很多方面;在现代社会中,软件应用于电子邮件,嵌入式系统,人
19、机交互界面,办公套件,操作系统,编辑器,数据库,游戏等多个典型方面;同时,在如今社会的各式各样的行业中都有计算机软件的应用,包括工业,农业,银行,航空,政府部门等等,能有效的促进经济和社会的发展,提高人们的工作效率和生活效率。俄罗斯方块游戏开发代码相对来说不是特别复杂,本论文基于 Java 编程语言,采用 Java 语言中常用的 Swing 组件。Swing 是 Java 中的图形用户界面(GUI)工具包,是 Java 基础类的一部分,包括了文本框,分隔窗格,按钮,表等 GUI 器件,使用纯 Java 写成,开发人员可以用少量的代码就可以写出Swing 各式各样的灵活丰富的功能和模块化组件来创
20、建漂亮优美的用户界面。Java Swing 组件中包括以下几个常用的类:JFrame 是屏幕上的图形对象,可以有最大化、最小化、关闭等基本操作,是 Java 的 GUI 程序设计的基本思路;JPanel 能够用来嵌套,对窗体中有相同逻辑功能的组件进行组合,能够加到JFrame 窗体中,是 Swing 中的面板容器类。 JLabel 对象是用来显示文本、图像或同时显示二者并且可以设置其中的一些属性;JTextField 是一个用来编辑单行文本的运行组件;JButton 是一个用来创建按钮的类。除此之外,Java 中的 Swing 组件中还包含有许多功能的类,可以简单的来创建一些优美漂亮的图形界面
21、。1.3 俄罗斯方块游戏的研究现状1.3.1 国内外研究现状进入二十一世纪以来,计算机不断地发展,电竞行业也在不断进入上升阶段,游戏软件的开发越来越火,游戏软件就如同戏剧、电影一样,是一种越来越火的新型的综合型艺术产品。跟一般的网页开发,软件开发不同,计算机游戏软件的开发不仅需要设计开发人员掌握专业的程序设计技巧和软件工程的方法,还需要专业的游戏领域的知识,专业的游戏开发知识,才能有效的开发和实现游戏的生动界面,音效处理,并且跟玩家达成完美的交互等。前苏联科学家阿列克谢帕基特诺夫(Alex Pajitnov)原本开发的俄罗斯方块游戏是作为一种教育用软件的,之后开始提供授权给各个游戏公司,至此以
22、后,各大平台上就出现了各种不同版本的游戏。Game Boy 版的俄罗斯方块游戏在日本本土卖出了 424 万套,成为了 Game Boy 游戏史上卖的最火的游戏。在海湾战争期间,俄罗斯方块游戏成为了前线美军最适合的消磨时间的游戏之一。俄罗斯方块游戏的基本原理对于大多数程序员来说是相对比较简单的,并且俄罗斯方块游戏具有数学性,动态性和很强的知名度。也经常拿来作为游戏程序设计的练习题材。31.3.2 文献综述文献 1和文献 2以零基础讲解为宗旨,用实例引导读者深入学习,采染基础知识核心技术高级应用项目实战的讲解模式,深入浅出地讲解 Java 的各项技术及实战技能。从初学者角度出发,通过通俗易懂的语言
23、、丰富多彩的实例,详细介绍了使用 Java 语言进行程序开发应该掌握的各方面技术。包括:熟悉 Eclipse 开发工具,Java 语言基础,类和对象,包装类,数字处理类,接口、继承与多态,类的高级特性,异常处理,Swing 程序设计,集合类,I/O 输入输出,反射,枚举类型与泛型,多线程,网络通信,数据库操作,Swing 表格组件,Swing 树组件,Swing 其他高级组件,高级布局管理器,高级事件处理,AWT 绘图与音频播放等。这两本文献覆盖了“够用”得 Java 语言和技术,实例丰富,内容详尽,对于初学者和有一定的 Java 基础的学生来说,可以快速的提高学生的开发技术和技能。本课题设计
24、中有关图形界面设计的内容、用户界面构件及设计、事件处理与窗口构造构件以及 Swing 的基础知识及其系列组件等方面的内容都参考了这两本文献,给予了我很大的帮助。文献 3主要讲解了包括 2D 绘图;游戏动画的制作;网络程序基础;强化游戏界面;人工智能与 25D 游戏;扫雷、迷宫、俄罗斯方块等游戏实例;碰撞、粒子系统、5D 立体坐标等绘图算法;多人联机游戏制作。收集了一系列的算法公式,让读者能更方便的利用。以由浅入深的方式,逐步分析游戏设计的过程,带领读者解决游戏开发阶段可能遇到的问题,并总结了 Java 游戏制作的实战经验。本课程设计中游戏的原理、动画的实现、音效的处理、鼠标和键盘事件处理、人工
25、智能等知识都参考了该文献。文献 4探讨了经典的电脑游戏-俄罗斯方块的程序原理及其实现技术,从软件工程的角度描述了程序的功能要求、数据结构以及图形旋转、坐标变换等关键技术。通过这本文献让我了解了更多的关于俄罗斯方块游戏开发的专业领域的知识。文献 5属于进阶性书籍,更加侧重于讲解如何使用 Java 来思考解决问题。这本文献本次课程设计中,给予了我很多关于 Java 在编程时编程思想和技巧上很多的帮助。42 相关技术2.1 JAVA 简介Java 是由 Sun Microsystems 公司推出的 Java 面向对象程序设计语言和Java 平台的总称。是一种能够编写跨平台应用软件的面向对象的程序设计
26、语言。Java 技术具有良好的通用性、高效性、跨平台性和安全性,广泛应用于 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。Java 语言历时近二十年,已发展成为人类计算机史上影响力最深远的编程语言之一,从某种程度上看,它甚至超出了编程语言的范畴,成为了一种开发平台,一种开发规范模式。更甚至于:Java 已经成为了一种信仰,Java 语言所崇尚的开源,自由,等精神,吸引了全世界无数的优秀的程序员。事实上,从人类有记载历史以来,从来没有一种编程语言可以吸引这么多优秀的程序员使用,也没有一种编程语言能衍生出这么多的开源框架。Java 语言是一门非常纯
27、粹的面向对象的编程语言,它吸引了 C 语言和 C+语言的各种优点,又摒弃了 C+语言里难以理解的多继承,指针等概念,因此Java 语言具有功能强大和简单易用两个非常良好的特征。Java 语言作为静态面向对象编程语言的代表,极好地表现了面向对象理论,允许程序员以一种更加优雅的思维方式进行更加复杂的编程开发。不仅如此,Java 语言中相关的 Java EE 规范中包含了当今时下最流行的各种软件工程理念,各种先进的设计思想,都可以在 Java EE 规范、平台以及相关的框架中找见相应的实现原理。从某种程度上来看,学精通了 Java 语言相关的各种方面的知识,相当于系统的学习了软件开发的相关知识,而不
28、是仅仅学完了一门编程语言。时至今日,大部分银行,电信,证券,电子商务,电子政务等各种系统或者已经采用 Java EE 平台构建,或者正在逐渐过渡到采用 Java EE 平台来构建,Java EE 规范是目前最成熟的,也是应用最广泛的企业级应用开发规范。2.2 Swing 组件简介Swing API 是一组可扩展的 GUI 组件,用来创建基于 JAVA 的前端/ GUI 应用程序。它是建立在 AWT API 之上,并且作为 AWT API 的替代者,因为它的几乎每一个控件都对应 AWT 控件。 Swing 组件遵循模型 - 视图 - 控制器架构来满足下面的准则。一个单一的 API 足够支持多种外观和风格;API 是模拟驱动的,这样最高层级的 API 不需要有数据;API 是使用 Java Bean 模式的,这样 Builder Tools 和 IDE 可以为开发者提供更好的服务来使用它。Swing API 架构用下列的方式来遵循基于松散的 MVC 架构。模型表示组件的数据。视图表示组件数据的可视化表示形式。控制器接受用户在视图上的输入,并且在组件的数据上反映变化。Swing 组件把模型作为一个单独的元素,并且把视图和控制器部分组合成用户界面的元素。使用这种方式,Swing 具有可插拔的外观与风格架构。Swing 特点主要有: