毕业设计javagui开发俄罗斯方块游戏.docx
《毕业设计javagui开发俄罗斯方块游戏.docx》由会员分享,可在线阅读,更多相关《毕业设计javagui开发俄罗斯方块游戏.docx(31页珍藏版)》请在冰豆网上搜索。
毕业设计javagui开发俄罗斯方块游戏
1前言
Java语言是美国SunMicrosystem的JamesGosling、PratrickNaughton及MikeSheridan等人于1991年精心设计出来的计算机编程语言,其构想在于实现使用同一种编程语言所写出来的程序可以在不同的平台上运作。
这种架构对于消费性电子产品而言是具有革命性的,因为在消费性电子产品中的处理器及操作系统各不相同,要在这些平台上开发程序必须要了解各个平台的特性,以及其提供的API使用方式,分别开发不同的版本才能执行,影响应用程序的普及性。
近几年,由于微处理器性能的大幅提升,加上无线通讯技术的突破,手持式电脑设备开始受到大众的青睐。
短短几年内,电脑已经升级了几代产品,普及率逐年攀升,生产效率不断上升,产品价格比个人电脑的摩尔定律有更惊人的下调,以至电脑是大多是城市居民不可缺少的一件随身设备。
继短信、彩信等服务之后,中国移动提供基于Java的百宝箱业务,应用产品遍及商务应用、信息获取、英汉互译、游戏娱乐等多媒体领域。
为了适应移动数据的发展,推动无线电子商务等业务的发展,J2SE既用于嵌入式系统的Java被引入电脑领域。
J2SE的出现实际上是Java技术的回归。
作为Java2平台的一部分,J2SE与J2ME、J2EE一起,为应用的客户端和服务器端建立了完整的开发、部署环境。
随着J2SE的应用,它为移动互联引入了一种新的模型,既允许电脑可以从互联网上下载各种应用程序,并在电脑创造可执行环境离线运行这些程序。
由于定义了可执行下载的标准,并在电脑上创立了可执行环境和程序开发语言,由此,在电脑业第一次为软件开发商创造了巨大的商业机会,电脑用户在得到丰富应用体验的同时,也大大提高了运营商的网络流量。
随着通信技术的发展和电脑的普及,电脑游戏的开发技术越来越为人们所关注。
以J2SE为开发平台,利用Java提供强大工具,不但可以在电脑上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种电脑游戏。
JAVA语言继承了basic语言易学易用的特点,特别适合于初学者学习windows系统编程。
随着21世纪信息社会的到来,电脑在人们的工作和生活中的深入,要求我们越来越多地与电脑打交道,为了使用户在繁忙的日程工作中得到放松,于是出现了各种各样的休闲软件,如聊天工具,游戏等等。
于是我们小组着手设计开始一个这样的电脑游戏软件。
通过这学期来对J2SE技术的学习,我初步掌握了JAVA语言的最基本的知识,于是在指导老师的指导下动手用J2SE编写俄罗斯方块电脑游戏。
无可争议,《俄罗斯方块》是有史以来最伟大的游戏之一。
它是永恒的娱乐经典,但它实际上又和那些传统的经典娱乐方式不同,因为它的本质是电子化的,所以它的确属于现代产物。
《俄罗斯方块》举世闻名的游戏性,在该游戏新鲜出炉时就显得非常直观。
某些与坠落的玩具碎片和它们的形状有关的东西,使得哪怕新手也会很自然地企图把它们排列起来,并加以适当组合,就好似《俄罗斯方块》触动了我们某些内在的感官,使得哪怕是我们当中最杂乱无章的人也要把事情整理妥当。
在曾经发布过的所有游戏中,《俄罗斯方块》还被认为是仅有的一个能够真正吸引广泛人群的作品。
某些批评家也许会声称,《俄罗斯方块》要比过去二十年间出现的任何东西都要浪费人们的时间。
至于我们,则要欣然提名它为GameSpot评选出的历史上最伟大游戏之一。
为了怀念经典,也为了能够给大多的计算机用户在工作之余找到一个休闲、娱乐的一个方式,我们小组开始着手用JAVA语言开发一个经典的俄罗斯方块游戏。
2工程概况
2.1项目名称:
俄罗斯方块
2.2设计平台
J2SE是Java2的一个组成部分,它与J2ME、J2EE并称。
根据Sun的定义:
J2SE是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
J2SE技术在1999年的JavaOneDeveloperConference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。
Java2平台包括:
标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。
J2SE,J2ME和J2EE,这也就是SunONE(OpenNetEnvironment)体系。
J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
StandardEdition(标准版)J2SE包含那些构成Java语言核心的类。
比如:
数据库连接、接口定义、输入/输出、网络编程
EnterpriseEdition(企业版)J2EE包含J2SE中的类,并且还包含用于开发企业级应用的类。
比如:
EJB、servlet、JSP、XML、事务控制
MicroEdition(微缩版)J2ME包含J2SE中一部分类,用于消费类电子产品的软件开发。
比如:
呼机、智能卡、手机、PDA、机顶盒
简单讲就是:
J2SE:
java2Standardedition(java2标准版)
J2EE:
java2enterpriseedition(Java2企业版)
J2ME:
java2microedition(Java2微缩版)
他们的范围是:
J2SE包含于J2EE中,J2ME包含了J2SE的核心类,但新添加了一些专有类
应用场合,API的覆盖范围各不相同。
笼统的讲,可以这样理解:
J2SE是基础;压缩一点,再增加一些CLDC等方面的特性就是J2ME;扩充一点,再增加一些EJB等企业应用方面的特性就是J2EE。
补充一点J2EE更恰当的说,应该是JAVA2企业开发的技术规范,不仅仅是比标准版多了一些类。
J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。
J2SE商业版本,标准版本(Java2StandardEdition)定位在客户端,主要用于桌面应用软件的编程。
J2SE包含那些构成Java语言核心的类。
比如:
数据库连接、接口定义、输入/输出、网络编程
J2SE是J2EE的基础,他大量的JDK代码库是每个要学习J2EE的编程人员必须掌握的。
可以把Configuration当作是J2SE对于两种类型嵌入式装置的规格,而这些规格之中定义了这些装置至少要符合的运算能力、供电能力、记忆体大小等规范,同时也定了一组在这些装置上执行的Java程序所能使用的类别函式库、这些规范之中所定义的类别函式库为Java标准核心类别函式库的子集合以及与该型态装置特性相符的扩充类别函式库。
比方就CLDC的规范来说,可以支援的核心类别函式库为java.lang.*、java.io.*、java.util.*,而支援的扩充类别函式库为java.microedition.io.*。
区分出两种主要的Configuration之後,J2SE接著在定义出Profile的概念。
Profile是架构在Configuration之上的规格。
之所以有Profile的概念,是为了要更明确地区分出各种嵌入式装置上Java程序该如何开发以及它们应该具有哪些功能。
因此Profile之中定义了与特定嵌入式装置非常相关的扩充类别函式库,而Java程序在各种嵌入式装置上的使用者介面该如何呈现就是定义在Profile里头。
Profile之中所定义的扩充类别函式库是根据底层Configuration内所定义的核心类别函式库所建立。
与J2ME和J2EE相比,J2SE总体的的运行环境和目标更加多样化,但其中每一种产品的用途却更为单一,而且资源限制也更加严格。
为了在达到标准化和兼容性的同时尽量满足不同方面的需求,J2SE的架构分为Configuration、Profile和OptionalPackages(可选包)。
它们的组合取舍形成了具体的运行环境。
Configuration主要是对设备纵向的分类,分类依据包括存储和处理能力,其中定义了虚拟机特性和基本的类库。
已经标准化的Configuration有-ConnectedLimitedDeviceConfiguration(CLDC)和ConnectedDeviceConfiguration(CDC)。
Profile建立在Configuration基础之上,一起构成了完整的运行环境。
它对设备横向分类,针对特定领域细分市场,内容主要包括特定用途的类库和API。
CLDC上已经标准化的Profile有MobileInformationDeviceProfile(MIDP)和InformationModuleProfile(IMP),而CDC上标准化的Profile有FoundationProfile(FP)、PersonalBasisProfile(PBP)和PersonalProfile(PP)。
可选包独立于前面两者提供附加的、模块化的和更为多样化的功能。
目前标准化的可选包包括数据库访问、多媒体、蓝牙等等。
开发JavaME程序一般不需要特别的开发工具,开发者只需要装上JavaSDK及下载免费的SunJavaWirelessToolkit就可以开始编写JavaME程式,编译及测试,此外目前主要的IDE(Eclipse及NetBeans)都支持JavaME的开发,个别的电脑开发商如Nokia及SonyEricsson都有自己的SDK,供开发者在开发出兼容于他们的平台的程序。
2.3程序设计思想
游戏作为人们日常生活的一个重要的娱乐项目,也带动了巨大的游戏相关产业市场的发展。
游戏平台从游戏机、电视游戏,到pc游戏,到电脑游戏,中间经历了很多的技术的变革。
随着新技术的发展和人们生活水平的提高,电脑开始逐渐普及,电脑以其小巧便捷,方便的特性成为人们的必备通讯工具。
而基于电脑平台的电脑游戏也就拥有了巨大的市场空间,随着3g的开通和应用,电脑游戏必将迎来新的一轮游戏热潮。
游戏是用来给大家娱乐的,所以要能在使用的过程中给大家带来快乐,消除大家的疲劳,所以我们在游戏中添加了漂亮的场景,设置了过关升级的功能,激发大家的娱乐激情。
从游戏的基本玩法出发,主要就是俄罗斯方块的形状和旋转,我们在设计中在一个图片框中构造了一个4*4的网状小块,由这些小块组合成新的形状,每四个小块连接在一起就可以构造出一种造型,因此我们总共设计了7种造型,每种造型又可以通过旋转而变化出2到4种形状,利用随机函数在一个预览窗体中提前展示形状供用户参考,然后将展示的形状复制到游戏窗体中进行摆放,在游戏窗体中用户就可以使用键盘的方向键来控制方块的运动,然后利用递归语句对每一行进行判断,如果有某行的方块是满的,则消除这行的方块,并且使上面的方块自由下落,其中,方块向下的速度是有时钟控件控制的,在游戏中,用户也可以使用向下键加快下落速度,定义一个变量,对消除的函数进行记录,最后就可以得出用户的分数,用if语句对分数判断,达到一定的积分就可以升级到下一个档次。
俄罗斯方块游戏设计的主要步骤为以下方面:
(1)游戏界面的设计。
(2)俄罗斯方块的造型。
(3)俄罗斯方块的旋转。
(4)俄罗斯方块的运动情况(包括向左,向右和向下)。
(5)俄罗斯方块的自动消行功能。
(6)游戏级别的自由选择。
(7)游戏速度的自由选择。
(8)游戏得分的计算。
(9)游戏菜单选项的设计及功能实现。
2.4主要实现的功能
我们开发的俄罗斯方块游戏,主要实现了以下几种功能:
1.可以灵活控制方块在图形框中运动。
2.游戏过程中方块可以自由旋转。
3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动,可以支持连续消行。
4.游戏前可以选择游戏的速度和游戏的等级,游戏速度既为方块下落速度,游戏等级为初始游戏时在基层随机生成一定行数的无规律方块,生成的行数由你来选择,每行至少产生5个以上的无规律方块,这样增加了游戏难度,对于游戏高手来说,无疑不是一个新的挑战。
5.游戏的得分支持积分,并且按照公式:
得分=原来分数+100*(2^同时消除的行数-1),这样,你同一时间消除的行数越多,你的得分也就越高,当游戏积分到了一定时可以自动升级,这个升级指速度升级。
6.游戏中提供了一个漂亮的场景,给你带来无限激情。
3开发背景
随着通信技术的发展和电脑的普及,电脑游戏的开发技术越来越为人们所关注。
以J2SE为开发平台,利用Java提供强大工具,不但可以在电脑上实现静态HTML技术所无法实现的计算处理、数据存储、与服务器的通信等功能,而且能够开发各种电脑游戏。
JAVA自从20世纪90年代早期诞生以来,以其强大的功能迅速为广大程序员们所接受。
从2001年开始,日本的国内的移动电话开始搭载Java。
使用本来就是一种程序语言的Java之后,就可以在移动电话上完成以往静态的HTML内容所无法达成的计算处理、数据存储、与服务器的通信等等。
如果能利用Java上其他丰富功能,那么就可以实现更多的功能。
随着电脑游戏的发展,国内外各大开发商纷纷运用Java进行电脑游戏开发。
J2SE作为一种基于Java的便携设备开发平台,在各大电脑开发公司得到了广泛应用。
小游戏制作的目的是满足了人们休闲的需要,在紧张工作之余休闲类的小游戏能够给人带来最大程度的放松,也可以增进人们之间的交流,沟通,方便人们娱乐的目的。
另外也通过本程序将几年来所学的专业知识和其他方面的知识融入到实际应用中。
通过此次课题的设计,掌握如何制作一个俄罗斯方块游戏软件,以及制作游戏软件的整个流程,制作游戏软件的步骤,为以后的就业工作打下基础。
本课题拟研究基于J2SE的电脑游戏开发技术以及其特点,开发一个俄罗斯方块游戏,具体研究内容如下:
1、电脑游戏开发以及J2SE的基本理论和J2SE类库的使用;
2、J2SE体系结构的研究;
3、J2SEAPI的研究;
(1)应用程序的研究;
(2)类库研究;
(3)各事件发生器的应用。
4、开发工具的应用和开发环境的设置。
其中J2SEAPI的研究为重点,本课题将通过一个具体的电脑游戏--俄罗斯方块的开发来研究以上内容。
J2SE简介
现在JAVA-JAVA2Platform大致可分为J2SE、J2EE、J2ME三类。
J2SE为JAVA-JAVA2Platform的标准版,通常在PC上使用的JAVA。
J2EE是在J2SE的API上,扩展了给企业使用EJB与Servlet等主要使用在服务器上的功能。
而J2SE则是面向家电和通信工具等微小设备。
J2SE的目标是微小设备,这类设备有许多种类,在这些设备的J2SE当中,定义了CDC(ConnectedDeviceConfiguration),CLDC(ConnectedLimitedDeviceConfiguration)这两个Configuration。
CDC是以能用在个人网关、下一代移动电话、PDA(个人数字助理)、家电设备、POS终端、车辆导航系统等上运行为前提设计出来的。
CLDC,是以能使用在移动电话、PDA(个人数字助理)、家电设备、POS终端等上面为前提设计出来的。
J2SE体系结构
配置和简表:
配置定义了一个设计在一系列类似硬件上运行的Java平台的能力。
J2SE的目标是家电与嵌入式设备,这类设备有很多种类,对应这些设备的J2SE当中,定义了CDC(连接设备配置)和CLDC(受限接设备配置)两个配置,配置所提供的类函数只有Java.lang,Java.io,Java..util包等J2SE等核心类的子集。
CLDC是与电脑相关的,它实际是定义一个设备制造商用来实现Java运行环境的标准,第三方开发者只需要遵循这个标准。
CLDC主要影响Java开发和软件发布的以下方面:
1)目标设备的特性;
2)安全模型:
安全模型有两个部分,虚拟机和应用程序安全。
虚拟机安全层的目的是保护下面的设备不受任何执行代码可能引起的损害。
开发环境
(1)开发的硬件环境:
CPUC1.7HZ/Maxor40G/DDR256M/CD-ROW40X
(2)开发软件:
JDK1.6
目标硬件环境:
1:
显示:
96*54象素,1位颜色,大约1:
1的象素比例;
2:
输入:
(a)单手键盘或者小键盘;
(b)双手的QWERTV键盘;
(c)触摸屏。
3)内存
(a)128KB非易失性内存,供MIDP组件使用;
(b)8KB的非易失性内存,供应用程序生成的永久数据使用;
(c)32KB的易失性内存,供Java堆使用。
本游戏的操作流程(如图)3.1:
用户在启动后,即进入游戏主画面,屏幕开始显示为欢迎画面。
用户按下[开始]按钮后,就可以开始玩游戏。
当用户想暂停时,再次按一下[开始]按钮,游戏就暂停了,在暂停的情况下再按[开始]按钮,游戏继续运行。
任何时候按[退出]按钮,游戏都会终止。
图3.1游戏流程图
在信息社会中,电脑及其他娱乐设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,电脑及其他无线设备上网络势在必行。
但是传统电脑存在以下弊端:
1.传统电脑出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部电脑。
2.传统电脑访问互联网是通过WAP(WirelessApplicationProtocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。
而Java技术在无线应用方面的优势非常明显:
1.应用程序可按需下载,而不是购买由硬件商提供的套件,可升级空大。
2.Java技术提供了一个类库,它使的应用开发商可以创建更为直觉、丰富的用户界面(GUI);
3.Java技术使网络带宽的应用更为有效,因为应用程序可以下载到器件上,并在本地运行,仅仅是在连接到服务器时才会占用网络带宽。
Java的最大目标和特点,就是“一次编写,到处运行”的平台无关性。
但是,一套标准无法适应各种不同的需求。
因此,Java技术目前共有三套,分别针对不同的平台和应用。
StandardEdition(J2SE,标准版):
针对桌面端PC和工作站的个人和低端商务应用。
EnterpriseEdition(J2EE,企业版):
针对服务器端企业级应用,支持Servlets,JSP和XML等等。
MicroEdition(J2SE,袖珍版):
针对有限内存,显示和处理能力的设备,主要是消费电子和嵌入式设备领域(这实际正是Java语言设计最初的目标领域)。
图3.2 java结构
在消费电子和嵌入式设备领域,内存从几百K到几十M,从没有屏幕Web-TV,CPU从低功耗的嵌入式处理器到206MHz的RISC处理器,硬件条件的差异是相当大的。
这就使得J2SE的标准需要有不同的层次和类别来适应这个复杂的领域,因此相比之下J2SE就比J2SE和J2EE的标准要复杂得多。
因此,清楚的理解J2SE的体系结构的划分才能更好的理解和掌握J2SE。
J2SE的3层体系结构依照各种设备的资源特性,将J2SE技术构架分为简表(Profile)、配置(Configuration)和JavaVirtualMachine(JVM)3层,然后再进一步细分,这使J2SE能够在每一类设备的限制下工作,而同时提供最低限度的Java语言功能性。
关于J2SE的体系结构,可以这样来进行总结:
Configuration的分类是根据计算能力的不同来划分的,同类设备的计算能力相近。
Configuration是一个规范,定义了这类设备的共同Java平台,定义与设备无关的Java虚拟机和核心库,是平台相容性的基础。
Profile的分类是根据设备功能划分的,同类功能的设备其他各种硬件条件和需求也相近。
Profile是一组API,在某Configuration的基础上扩展了针对设备特定功能的API,使得标准能够完全适应特殊的设备,彻底发挥设备的功能。
J2SE体系的一般结构是:
由Configuration定义的Java虚拟机运行于设备的宿主操作系统之上,构成整个平台的基础。
Configuration提供了基本的语言特性,Profile提供针对设备的特殊功能API和扩展类库。
应用程序的运行环境需要一个Configuration和至少一个Profile,多个Profile可以共存,也可以叠加。
MIDP(MobileInformationDeviceProfile)定义了针对移动信息处理设备(主要指智能电脑和一部分具有无线通信功能的PDA)的图形界面,输入和时间处理,持久性存储,无线电话网络连接之上的一些消息处理(例如短消息),安全等等API,并且考虑到了移动信息设备的屏幕和内存限制。
类似于J2SE中的Applet框架,MIDP提供了基于javax.microedition.midlet包的MIDlet应用程序框架。
因为MIDP提出的比较早,目前重要的智能电脑和PDA操作系统上都已有了相应的实现,而且应用的也比较广泛。
针对消费电子和嵌入式设备领域丰富多样的设备和彼此相差极大的计算能力及各种硬件条件,J2SE首先根据最基本的一些特征把它们划分为两类。
具备间断网络通讯能力的个人移动信息设备:
如电脑,双向呼机,PDA(PersonalDigitalAssistant,个人数字助理,也称掌上电脑)等等。
有固定的不间断网络连接的共享连接信息设备:
如置顶盒(set-topboxes),Web-TV,支持Internet的有屏幕电话,汽车娱乐/导航系统等等。
Sun对J2SE有一个很好的概括:
J2SE技术有两个设计中心——手持的设备,和可以插到墙上插座的设备。
第一类设备往往是个人化的,移动的,使用电池,体积和功耗都有限制,因此功能和计算能力有限。
第二类设备一般是固定的,因此体积没有太大限制。
由于固定,可以有持续电源供应,因此功耗没有太大问题,计算能力相对充裕。
计算能力是这两类设备的主要区别,对其上可能的应用和环境显然有着本质影响,不同类别的设备不可能采用同样的Java平台,必须分别定义。
针对这两大类设备的平台规范就是Configuration。
第一类设备的Configuration称为CLDC(Connected,LimitedDeviceConfiguration),第二类称为CDC(ConnectedDeviceConfiguration)。
属于同一类的设备计算能力是相似的,但是其他功能和条件还有非常大的区别。
作为Java平台必须保证相容性,这就必须舍弃所有的设备特殊性。
因此,Configuration就是支持一组通用设备的最小Java平台,作为这些设备的最小公分母来保证不同设备间的平台相容性。
这里的Java平台主要是指Java虚拟机(JVM)和核心库。
在Configuration中舍弃了设备的特殊性来保证Java平台的相容性,但是仅仅有Configuration显然是不够的,特殊的具体设备其独有的功能和硬件条件都没有得到支持。
为此,在Configuration的基础上,根据设备具体功能再进行一次划分,比如智能电脑,PDA等等。
功能的划分也就是其他硬件条件的划分,比如屏幕大小,内存,计算能力,电力供应等等都是从属于功能的,因此同功能的设备的硬件条件都是非常相似的。
Profile(译为简