基于Java的游戏俄罗斯方块的设计与实现毕业设计.docx
《基于Java的游戏俄罗斯方块的设计与实现毕业设计.docx》由会员分享,可在线阅读,更多相关《基于Java的游戏俄罗斯方块的设计与实现毕业设计.docx(103页珍藏版)》请在冰豆网上搜索。
基于Java的游戏俄罗斯方块的设计与实现毕业设计
基于Java的游戏“俄罗斯方块”的设计与实现毕业设计
第1章绪论
1.1本设计的目的和意义
俄罗斯方块游戏具有广泛的用户群,因为它比较简单有趣,无论老少都比较适合。
俄罗斯方块的设计对每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。
俄罗斯方块游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。
在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类的继承机制以及一些设计模式。
因此,如何设计和开发好这个俄罗斯方块游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。
在设计开发过程中,需要处理好各个类之间的继承关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。
正是因为如此,本次毕业设计的目的在于学习Java程序设计基本技术,学习用JBuilder开发Java程序的相关技术,熟悉游戏“俄罗斯方块”的需求,熟悉项目开发的完整过程。
学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握Java程序设计的基本技术和方法,熟练地掌握JBuilder环境的使用方法,培养起初步的项目分析能力和程序设计能力。
1.2国内外研究现状
Java是当今企业级计算和应用中相当成熟和稳定的平台,在这个领域中不可否认地占据着领导地位。
不但如此,Java在学术界也获得了强有力的支持:
在国外的大学中,Java已经成为多数科学研究和计算使用的首选语言;越来越多的尖端学术研究完全使用Java语言;各行业的公司都有很多的Java程序员在开发他们的项目。
Java作为软件开发的一种革命性的技术,其地位已经被确立。
首先,计算机产业的许多大公司都购买了Java的许可证,包括:
IBM、Apple、DEC、Adobe、HP、SiliconGraphics、Oracel、Toshiba以及最不情愿的Microsoft等。
其次,众多的软件开发商都支持Java的软件产品。
今天是以网络为中心的计算机时代,不支持HTML和Java,应用程序的应用范围就只能局限于相同的硬件平台。
Borland公司开发的基于Java的快速应用程序开发环境Latte已在1996年中期发布,Borland公司的这一举措推动了Java进入PC机软件市场。
Sun公司自己的Java开发环境JavaWorkshop已经发布。
许多知名的数据库厂商都在开发CGI接口,支持HTML和Java。
再有,Intranet正在成为企业信息系统最佳的解决方案,而其中Java将发挥不可替代的作用。
Intranet的工作方式可以描述为不同类型的Intranet用户通过界面统一的Intranet浏览器访问位于不同环境中的Intranet服务器上的信息。
这一过程在基于Java的解决方案支持下实现将使无论是开发人员还是管理人员,抑或是用户都受益无穷。
Java语言正在不断地发展和完善,Sun公司是主要的发展推动者。
Sun公司开发的较为统用的编译环境有:
JavaDevelopKit和JavaWorkshop。
还有许多其它公司也开发了或正在开发Java语言的编译器与集成环境。
如,Borland公司的JBuilder、Microsoft公司的VisualJ++等。
随着Java语言的大行其道,Java开发工具也如雨后春笋般纷纷涌现。
据一些权威机构的调查,国外Java开发工具已经有上百种之多。
这些工具各有侧重点,也各有优势,其中以Eclipse、NetBeans、RationalDeveloper和JBuilder最具代表性。
与日、韩等国相比,中国的基于Java的游戏市场起步比较晚,但中国有一个巨大的游戏用户群,它拥有广阔的市场前景。
随着Java游戏产业发展环境的日益成熟,其发展速度将一日千里。
Java是一个受业界重视的、面向对象的语言。
它支持继承性、封装、多态性、多线程、动态连接与接口。
而Java之所以会赢得专业开发者如此热烈的拥护是因为:
首先,Java很像C++,很容易为有经验的程序员掌握使用,但它比C++有很大的改进。
Java更容易编写可移植、可重用、无错误的程序。
其次,Java的交叉平台的兼容性是它迅速获得成功的主要因素。
随着技术的发展,Java语言的正确性与效率都将会有更大的提高,用户用Java编程将会比用能够C++编程更加方便。
1.3设计研究的主要内容、目标与工具
1.3.1设计的主要内容
俄罗斯方块游戏设计与实现,主要分为以下四个模块:
游戏主界面模块、游戏设置模块、游戏控制模块以及游戏排行榜模块。
实现游戏的开始、暂停、退出、记录分数、游戏方块下落速度调整、游戏新生方块的预览以及游戏排行榜等功能。
1.3.2设计要达到的目标
本次设计要达到的目标分别从以下模块进行阐述:
✧游戏主界面模块:
游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、新生方块的预览、游戏开始按钮、暂停游戏按钮、退出游戏按钮以及游戏排行榜按钮。
从很大程度上决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。
✧游戏设置模块、游戏控制模块:
这两个模块是游戏的中心环节,主要完成设置游戏的方块下落速度、显示游戏分数、以及控制游戏的开始、暂停、退出等功能。
为了能够给玩家一个很好的游戏环境,这两部分应该做到易懂、易操作。
✧游戏排行榜模块:
游戏的排行榜用来显示游戏结束后,玩家所得分数的排名情况。
这一模块应该尽量做到美观且准确。
1.3.3设计方法介绍
本次设计采用基于Java的程序设计技术,以及用JBuilder开发Java程序的相关技术,其中JBuilder主要用来做游戏的主界面模块。
下面简单介绍一下Java和JBuilder开发环境。
✧Java语言的特点
Java最初叫Oak,是由Sun公司开发的面向对象的编程语言,从表面上看,它有许多地方和C,C++类似,但比它们更简洁和更容易设计。
1)Java是纯面向对象语言:
Java语言不能在类的外面定义数据和函数。
所有对象都派生自同一个基类——Object,并共享它所有的功能。
Java只支持单一继承,但通过接口可支持有限形式的多重继承。
2)平台无关性:
用Java写的应用程序不用修改就可在不同的软硬件平台上运行。
平台无关分为两种:
源代码级和目标代码级。
3)分布式:
分布式包括数据分布和操作分布。
数据分布是指数据可以分散在网络的不同主机上,操作分布是指把一个计算分散在不同主机上处理。
Java支持WWW客户机/服务器计算模式,因此,它支持这两种分布性。
对于前者,Java提供了一个叫做URL的对象,利用这个对象,你可以打开并访问具有相同URL地址上的对象,访问方式与访问本地文件系统相同。
对于后者,Java的applet小程序可以从服务器下载到客户端,即部分计算在客户端进行,提高系统执行效率。
Java提供了一整套网络类库,开发人员可以利用类库进行网络程序设计,方便地实现Java的分布式特性。
4)可靠性和安全性:
Java最初设计目的是应用于电子类消费产品,因此要求较高的可靠性。
Java虽然源于C++,但它消除了许多C++不可靠因素,可以防止许多编程错误。
首先,Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,这杜绝了内存的非法访问;第三,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题;第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界,最后,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务便于恢复。
Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。
当Java字节码进入解释器时,首先必须经过字节码校验器的检查,然后,Java解释器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏。
最后,客户端用户还可以限制从网络上装载的类只能访问某些文件系统。
上述几种机制结合起来,使得Java成为安全的编程语言。
5)多线程:
Java在两方面支持多线程。
一方面,Java环境本身就是多线程的。
若干个系统线程运行负责必要的无用单元回收,系统维护等系统级操作;另一方面,Java语言内置多线程控制,可以大大简化多线程应用程序开发。
Java提供了一个类Thread,由它负责启动、运行、终止线程,并可检查线程状态。
Java的线程还包括一组同步原语。
这些原语负责对线程实行并发控制。
利用Java的多线程编程接口,开发人员可以方便地写出支持多线程的应用程序,提高程序执行效率。
✧Java平台
Java平台是一种全新的软件平台,它主要由两部分组成:
JavaVM和JavaAPI(应用编程接口)。
Java虚拟机是Java平台的核心,它可以用软件实现,也可以用硬件实现。
Java虚拟机屏蔽了底层的操作系统,给所有Java程序员一个完全相同的虚拟平台。
JavaAPI为Java小应用程序和应用软件的标准接口,是应用开发的基本框架,是开放的和可扩展的。
它为各个关键领域规定了一系列的基本接口,让程序员开发Java应用。
JavaAPI包括两部分:
Java基本API和Java标准扩展API。
Java基本API包括了Java语言的基本部分、实用程序、I/O、网络、图形用户接口等。
开发多种JavaAPI,使Java成为更强有力的平台。
除了已在JDK1.02中发表的标准API外,还开发了JDBC,用来增强Java访问众多不同数据源的能力,从此Java将以统一的接口访问35种以上不同数据源,如Foxpro、Oracle、Sybase、Informix、DB2等等。
✧Java开发工具JDK
Java开发工具(JDK)是许多Java专家最初使用的开发环境。
尽管许多编程人员己经使用第三方的开发工具,但JDK仍被当作Java开发的重要工具。
JDK由一个标准类库和一组建立、测试及建立文档的Java实用程序组成。
其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。
JavaAPI包括一些重要的语言结构以及基本图形、网络和文件I/O。
一般来说,JavaAPI的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现。
作为JDK实用程序,工具库中有七种主要程序。
Javac:
Java编译器,将Java源代码转换成字节码。
Java:
Java解释器,直接从类文件执行Java应用程序字节代码。
Appletviewer:
小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javadoc:
根据Java源码以及说明语句生成HTML文档。
Jdb:
Java试调器,可以逐行执行程序,设置断点和检查变量。
Javah:
产生可以调用Java过程的C过程,或者建立能够被Java程序调用的C过程的头文件。
Javap:
Java反汇编器,显示译类文件中的可访问功能和数据,同时显示字节代码含义。
✧介绍JBuilder开发环境
JBuilder是最强大的、最易于使用的Java快速开发工具。
JBuilder把Java编程语言的威力和图形用户界面化的快速开发环境的易用性有机地结合在一起。
JBuilder的向导可以使创建应用程序、类和工程的过程变得非常简单。
设计器与双向开发工具的使用使图形界面的设计变得很容易。
JBuilder中使用GUI环境来创建基于关系数据库的客户机/服务器应用程序。
方便地创建类和JavaBean,以提高当前应用程序或小程序的开发进度,并提高以后的工程的性能。
第2章可行性分析
随着人们生活水平的不断提高,人们对精神生活水平的要求也随之提高。
游戏,不但可以放松身心,有的还可以开发智力。
它作为一种娱乐项目也在不断地发展,并在我国逐渐地发展壮大。
现在的市场上,已经出现了各种各样,适合不同年龄段和不同人群的游戏。
比如:
极品飞车、大富翁、魔兽、星际争霸,再比如连连看、蜘蛛牌、扫雷等一些小游戏,都是现在比较受到大家欢迎的娱乐休闲游戏。
并且,随着互联网的发展,许多游戏不但有单机版的,而且还有网络版的。
迄今为止,游戏产业在我国已经发展为一个庞大的产业,为许多相关行业带来了巨大的经济收益。
本次毕业设计所开发的基于Java的俄罗斯方块游戏,具有操作简单,界面较美观等优点,可以作为休闲和智力开发之用,有一定的实用性。
下面从几个方面来分析本游戏的可行性。
2.1可行性分析
本可行性分析的目的在于在该项目投资决策前,通过对项目有关工程技术、经济、社会等方面的条件和情况进行调查、研究、分析,对各种可能的技术方案进行比较论证,并对项目建成后的各方面效益进行预测和分析,可行性分析是考察所开发软件的可能性和可行性,继而确定项目投资建设是否可行的科学分析方法。
2.1.1可行性研究的前提
2.1.1.1要求
✧功能:
本设计所开发的是基于Java的一个俄罗斯方块游戏软件,主要实现游戏的开始、暂停、退出、方块下落速度改变以及游戏排行榜等功能,分为:
游戏主界面模块、游戏设置模块、游戏控制模块以及游戏排行榜模块四个模块。
✧性能:
本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
2.1.1.2目标
✧游戏主界面模块:
主要包括游戏图形区域界面、游戏的速度选择更新界面、游戏分数的显示更新界面、游戏方块预览界面、游戏开始按钮、暂停游戏按钮、关闭按钮以及查看分数按钮。
游戏的主界面应该力求美观,爽心悦目。
✧游戏设置模块:
主要用来设置游戏的方块下落速度、显示游戏分数,这部分应该做到易懂、易操作而且准确率高,不易出错。
✧游戏控制模块:
主要完成控制游戏的开始、暂停、退出等功能,这部分应该做到易懂、易操作而且准确率高,不易出错。
✧游戏排行榜模块:
游戏的排行榜用来显示游戏结束后,玩家所得分数的排名情况。
这一模块应该尽量做到美观且结果准确。
2.1.1.3条件、假定和限制
✧硬件配备不齐,内存不够,需升级到512MB。
电脑的性能相对不够稳定,对Java和JBuilder等开发工具运行有不利影响。
✧可利用的信息和资源比较单一,需求分析主要来源于对学校玩游戏同学的询问,以及自身对俄罗斯方块游戏的体会。
而技术方面,对Java编程语言的掌握和JBuilder开发工具的运用还有待提高。
其余包括经济效益、社会效益分析则靠网上查阅资料获得。
2.1.2对现有软件的分析
经过调查分析,现有的很多单机版的俄罗斯方块游戏存在以下几个不足:
✧大多都没有游戏排名这一功能:
许多玩家在游戏结束以后都习惯查看自己的分数以及排名,以便下次再进入时有新的目标。
而现有的许多单机版小游戏都缺少这一功能,这样的游戏是不完整的,可行性不高。
✧采用的编程语言可移植性较差,不能解决平台异构问题:
游戏的可移植性直接决定了所开发游戏的用户群大小。
现有的很多俄罗斯方块游戏,多不用Java这一平台无关性较好的编程语言来开发。
使游戏很难在不同的软硬件平台上运行,给用户造成了一些不便。
✧程序的出错率较高:
C++有很多不可靠因素,发生许多编程错误。
比如:
C++中的指针会可能会造成内存的非法访问;大多编程语言没有自动单元收集,不能防止内存丢失等动态内存分配导致的问题;没有自己的安全机制,不能有效防止病毒程序的产生和下载程序对本地系统的威胁破坏。
现有的很多单机版的俄罗斯方块游戏已经不能很好的解决用户的需求。
基于用户对游戏的更高要求,用Java这种更适合游戏开发的语言,来编写出功能更加完善的俄罗斯方块游戏是非常有必要的。
2.2所建议的软件
本次毕业设计所涉及和实现的是用Java编程语言和JBuilder开发工具开发的俄罗斯方块游戏。
由于采用Java编程语言,解决了一些2.1.2这一目中所叙述的现有游戏的不足。
本次设计的系统环境及工具如下:
运行环境:
平台无关的Java2运行环境
编程语言:
Java
使用工具:
JBuilder2005
2.2.1游戏处理流程
本次游戏设计的处理流程如图2-1所示。
2.2.2社会可行性分析
就大多数玩家而言,由于玩家玩本游戏时,不会也不必关心游戏内部的结构及实现方法,即对用户来说是透明的,所以本游戏对用户而言,是定位在界面友好、操作方便、功能齐全的原则上的,用户只需一台电脑,简单地用鼠标点击各页面上的链接或按钮就能执行相应的功能,从而顺利地上手本游戏。
对于游戏软件维护者而言,由于本游戏所运用的开发技术安全性很高,因此本游戏在维护方面也不存在很大问题。
2.2.3技术可行性分析
2.2.3.1执行平台方面
Java程序具有跨平台的能力,相信这句话对于大多数的程序执行员来说都没有异议。
所谓跨平台功能,指的是Java程序可以在不重新编译的情况下,直接运行于不同的操作系统上。
这个机制之所以可以运行的原因在于“字节码”与“Java执行环境”的良好配合。
Java程序在编写完成之后,第一次使用编译器编译程序时,会产生一个与平台无关的字节码文件,其扩展名为*.class字节码是一种贴近于及其语言的编码,这个文件若要加载到内存中执行,则计算机上必须装有Java执行环境,Java执行环境与平台兼容,会根据该平台对字节码进行第二次编译,而成为平台上可理解的机器语言,并加载到内存中加以执行,如图2-2所示为Java程序执行流程。
图2-2Java程序执行流程
Java执行环境是构建于操作系统上的一个虚拟机器,程序设计人员只要针对这个执行环境进行程序设计,而无需理会执行环境如何与操作系统进行沟通的问题。
程序设计人员只要利用Java所提供的类别库与API,基本上就可以达到跨平台的目的。
程序设计人员与Java执行环境之间的关系如图2-3所示。
图2-3程序设计人员与Java执行环境之间的关系
Java程序若应用在游戏上,有两种显示方式。
一种是窗口应用程序,另外一种是使用Applet内嵌于网页之中。
本次设计采用的是第二种方式。
综上所述,在设计游戏方面,Java将是一个良好的设计平台。
2.2.3.2执行速度方面
执行速度永远是游戏设计时考虑的一个重要因素,而这也是对Java程序最不利的地方。
程序员对Java程序执行速度的普遍评价就是“慢”,这是因为Java程序在执行前必须经过第二次编译,且Java程序只有在需要使用到某些类别库功能时才加载相关的类别,虽然考虑了资源的使用,但动态加载多少造成了执行速度的延迟。
后来的Java版本,在编译与加载的速度上作了极大的改善。
而且计算机速度的提高也弥补了速度慢的缺点。
所以在本次设计中,用Java开发俄罗斯方块游戏在执行速度上影响不大。
2.2.3.3语言特性与功能方面
Java程序是以C++的关键字语法为基础,但过滤了C++中的一些容易犯错或者忽略的功能,例如指针的运用,并采用“垃圾收集器”机制来管理无用的对象资源。
这些都使得Java程序极为容易编写且较不容易发生错误。
Java程序无论是在绘图、网络、多媒体等各方面都提供了相当多的资源,使其在游戏开发方面有很大的发展空间。
2.2.3.4开发环境方面
为Java设计的整合开发环境相当多,例如商业软件的VisualJ++、JBuilder,非商业软件的forte、NetBeans等。
本次开发的游戏属于小游戏,所以其整合式开发环境对游戏设计的影响并不大。
2.2.3.5JBuilder开发工具
JBuilder开发工具是最强大的、最易于使用的Java快速开发工具。
JBuilder把Java编程语言的威力和图形用户界面的化的快速开发环境的易用性有机地结合在一起,它使图形界面的设计变得很容易,并能够提高以后的工程性能。
因此Java和JBuilder的结合,将使本次设计的技术可行性大大提高。
总结:
通过几方面的分析,用Java编程语言,结合JBuilder开发工具开发俄罗斯方块游戏在技术方面的可行性是相当高的。
2.2.4经济可行性
Java平台的自由和开放性使得开发人员投资很少,但却提供给他们必需的灵活性以及大量的支持。
游戏的易于维护性也使本游戏的开发投资大大减少。
第3章需求分析
需求分析工作是软件生存周期中重要的一步,也是起决定性的一步。
通过它可以全面了解整个系统的功能和性能方面的要求,为软件设计打下坚实的基础。
该部分的目标主要有:
获得目标系统的物理模型,了解目标系统是如何运行的;抽象出目标系统的逻辑模型,对物理模型进行筛选,得到与软件系统有关的部分;建立目标系统的逻辑模型,得出数据流图和数据字典;补充目标系统的逻辑模型,对目标系统的用户界面,至今尚未考虑的细节进行说明。
3.1任务概述
3.1.1目标
采用基于Java的程序设计技术,以及用JBuilder开发Java程序的相关技术开发出具有良好用户界面,操作简单易学,游戏功能齐全且有益于智力开发的俄罗斯方块游戏。
从游戏的设计与实现中锻炼自己的Java编程水平,熟悉JBuilder开发工具的使用。
由于本次设计是我第一接触Java编程语言和第一次使用JBuilder开发工具,也是第一次与开发游戏打交道。
因此在本次俄罗斯方块游戏的开发过程中,我力求代码准确,界面尽量美观,按照需求实现游戏的各个功能。
3.1.2用户的特点
游戏开发成功后,最终用户为各个年龄段的人群,用户范围相当广泛。
本游戏友好的用户界面,简单易学的按钮操作以及简单通俗的游戏规则,使广大的用户不需要专门进行培训,就可以立即学会如何使用。
3.2具体需求
3.2.1功能需求
3.2.1.1游戏主界面模块需求
游戏界面主框架主要包括游戏图形区域界面、游戏速度选择更新界面、游戏分数的现实更新界面、新生方块的预览界面、游戏开始按钮、游戏暂停按钮、关闭按钮以及排行榜查询按钮。
3.2.1.2游戏图形区域界面的需求
游戏画布区主要应该包括游戏画布中方块的显示更新、整行方块的删除和更新、新生方块的预览区域。
正在下落方块的颜色和已经落下的方块颜色应当不同,且每个方块颜色应当尽量美观且变化明显。
方块的整行删除应当不影响游戏的进程。
3.2.1.3方块下落速度需求
方块的下落速度应该可以通过简单的按钮或者菜单进行自如调节。
速度等级分为0—10这十一个等级,并且在游戏进行一段时间后,游戏等级应该自动加高。
调节等级时,应该在相应易见的区域显示玩家调整以后的当前等级。
3.2.1.4游戏分数需求
游戏的分数方面需求如下:
游戏开始后,进行满行删除,每删除一行方块分数就增加,直到游戏结束后,分数停止增加。
分数增加的同时,应该在相应的易见的区域显示增加后的分数。
3.2.1.5游戏排行榜需求
游戏结束后,如果进入前十名则提示输入姓名,玩家愿意进行本轮游戏的排名,则进行肯定选择,然后输入玩家姓名便可以查看刚结束那轮游戏分数的排名。
如果不愿意参加排名,则退出对话框,然后退出游戏或者按开始按钮,重新开始游戏。
刚进入游戏界面,没有开始游戏时,也可以查看以往前十名万家排名表,以便玩家在开始游戏之前有奋斗目标。
游戏排名只取分数排在前十位的玩家。
3.2.2属性需求
在可使用性方面,要求各个功能实现简单,操作方便,系统处理正确;整个系统恢复性能好,连接速度快,以确