




已阅读5页,还剩234页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于j2me的俄罗斯方块手机游戏软件著作权登记申请文档及源程序材料申请人:河海大学 电子信息工程 本软件通过采用蓝牙技术使手机用户能在小区内进行联网俄罗斯方块游戏。在进行设计时通过netbeans ide 5.0和mobility pack搭建的j2me编程软件,编写了游戏程序,通过对系统和蓝牙技术的分析研究,确定了系统的架构为:cldc(connect limited device configuration)有限制的连接设备网络,使用的蓝牙激素和标准为:java开发社区(jcp)发布了基于j2me平台的蓝牙api规范jsr82(java蓝牙无线技术apis,java apis for bluetooth wireless technology)。下面介绍一下该软件的开发环境、软件功能、设计过程以及软件的操作使用。开发环境:j2me技术通过对手机的增值应用的开发,java的跨平台应用就被完整的移植到手机应用上。java对于手机的支持也在很久就提出了,java sun早期对系统应用就定义出三个java平台,每一项都定义给不同的使用环境,而这三种平台的应用环境分别为:1、java标准版java 2 standard edition(j2se);2、java企业版java 2 enterprise edition(j2ee);3、java微型版java 2 micro edition(j2me)。这三个平台分别应用于企业和个人平台,且这三种平台环境技术发展的很完善。如图所示三种环境的关系。图j2ee、j2se、j2me之间关系在提出j2me平台时,将它定义为“一种以广泛的消费性产品为目标的高度优化的java运行环境”。这样的定义是因为j2me应用起源与一些需要支持类似计算机功能的电子消费性产品和嵌入式终端的开发,由于这些小型终端设备与普通大型设备相比较没有统一的硬件配标准,并且外观、操作方式也是千差万别,同时这些终端设备通常是使用有限电源、有限网络连接以及有限图形用户界面能力的设备。为了在应用这些终端设备的时候能够及时考虑到整体设备的发展与规划,进而创造出能实际描绘兼容性终端设备的j2me平台应用环境,所以j2me跟j2se平台标准版规范、j2ee平台企业版标准规范相比,j2me不是一个单独的技术规范,为是一系列的技术规范总称。j2me所包含的应用环境可以为: 个人化与移动式的终端设备:具有能够处理间断性的网络连接能力,列入移动电话、寻呼机、个人数字助理、个人数字移动式设备; 固定式连接信息设备、不间断网络连接:如机顶盒、网络电视、网络视频电话、高级终端通信设备、车载娱乐系统、车载导航系统等。在实际应用中,其应用能力是区分这两种类型设备的最主要条件。j2me平台能够给市场上具有不同功能的终端设备提供不同的服务。j2me的设计证明了主要的机器标准设计方式能够支持多种类型的终端设备。j2me平台的开发环境配置由于j2me平台应用的针对性,对它的配置也有别于其他java语言程序开发平台,且其支持的java类库等也与其他开发平台有所区别。所以需要使用一些专用的软件对其进行配置,以下就对这些用于配置的开发软件和其所支持的java语言和类库进行介绍。jdk、wtk及开发工具简介jdk(java development kit)是sun microsystems针对java开发员的产品。自从java推出以来,jdk已经成为使用最广泛的java sdk(software development kit)。jdk是整个java的核心,包括了java运行环境(java runtime environment),一堆java工具和java基础的类库(rt.jar)。不论什么java应用服务器实质都是内置了某个版本的jdk。因此掌握jdk是学好java的第一步。最主流的jdk是sun公司发布的jdk,除了sun之外,还有很多公司和组织都开发了自己的jdk,例如ibm公司开发的jdk,bea公司的jrocket,还有gnu组织开发的jdk等等。jdk包含的基本组件包括:(1) javac 编译器,将源程序转成字节码;(2) jar 打包工具,将相关的类文件打包成一个文件;(3) javadoc 文档生成器,从源码注释中提取文档;(4) jdb debugger,查错工具;(5) java 运行编译后的java程序(.class后缀的);(6) appletviewer:小程序浏览器,一种执行html文件上的java小程序的 java浏览器;(7) javah:产生可以调用java过程的c过程,或建立能被java程序调用的c过程的头文件;(8) javap:java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义;(9) jconsole: java进行系统调试和监控的工具。wtk 的全称是sun j2me wireless toolkit sun的无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化j2me的开发过程。使用其中的工具可以开发与java technology for the wireless industry (jtwi, jsr 185)规范兼容的设备上运行的j2me应用程序。wtk是用来开发midp的,为了让midlet可以顺利编译和执行,wtk必须具有cldc和midp的类库,wtk可以帮助我们省去额外安装调试这些类库的时间。该工具箱包含了完整的生成工具、实用程序以及设备仿真器。现在人们可以获取的有四个版本,分别是1.0.4、2.0、2.1和2.2。每个版本都包括英语、日语、简体中文、繁体中文4个语种包。 1.0.4版只能够开发midp1.0应用程序; 2.0版只能够开发midp2.0应用程序; 2.1版则可以同时开发midp1.0、jtwi(cldc1.0,midp2.0,wma1.1)可改用cldc1.1或加入mmapi1.1),自定义(自己随机组合configuration, profile以及optional package)三种环境下的应用程序。在2.2版中,wtk全面的支持jtwi规范。具体的说,即midp2.0、cldc1.1、 wma 2.0、mmapi 1.1、web services (jsr172)、file和pim apis (jsr75),bluetooth 和obex apis (jsr 82)以及3d graphics (jsr 184);同时在开发时也可以使用该版本开发面向cldc1.0和midp1.0的应用程序。而不同版本的wtk包含的程序库内容是不一样的,比如说2.0中包含了midpapi.jar、wma.jar、mmapi.jar,而在2.1中则变为了cldcapi10.jar、cldcapi11.jar、midpapi10.jar、midpapi20.jar、wma.jar以及mmapi.jar;在2.2中,wma.jar又细分为wma11.jar和wma20.jar。常用的package:(1) java.lang:这个是系统的基础类,比如string等都是这里面的,这个package是唯一一个可以不用import就可以使用的package;(2) java.io:这里面是所有输入输出有关的类,比如文件操作等;(3) :这里面是与网络有关的类,比如url,urlconnection等;(4) java.util:这个是系统辅助类,特别是集合类collection,list,map等;(5) java.sql:这个是数据库操作的类,connection,statememt,resultset等;(6) javax.servlet:这个是jsp,servlet等使用到的类。配置j2me开发环境 j2me开发环境可以由jdk加上jbuilder或netbeans或者eclipse进行配置,由于本课题是采用jdk加上netbeans ide进行配置开发环境的,所以主要介绍这种配置方法。在上节以对jdk进行了详细的介绍,下面就对先对本课题采用netbeans ide和mobility pack软件进行介绍。 netbeans ide是由sun建立的开放源码的软件开发工具,是一个开放框架,可扩展的开发平台,可以运行在windows、mac、linux、和solaris平台下,可以用于java、c/c+等的开发,其本身是一个开发平台,并且可以通过扩展插件来扩展功能。netbeans ide包含以下功能:(1) ava桌面应用程序使用 netbeans java gui builder(支持swing应用程序框架和bean绑定)创建专业桌面应用程序;(2) php开发快捷的轻量级php ide,具有代码完成和快速修复功能,集成了ftp和xdebug,并支持常用的web服务;(3) java ee和web应用程序使用ajax、javascript和css生成web应用程序。支持包括jsf、struts、spring和hibernate在内的框架。用于进行ejb开发的完整工具集;(4) ruby和ruby on rails开发具有代码完成功能的强大ruby编辑器和调试器,完全支持ruby on rails。包括jruby运行时;(5) 可视移动开发创建、测试和调试在移动电话、机顶盒和pda上行的gui应用程序;(6) c和c+开发功能完备的c/c+编辑器、调试器、项目模板,支持多项目配置、远程开发以及对已完成项目进行打包。 mobility pack是netbeans ide的扩展无线开发模块,mobility pack用于开发、测试和调试midp应用程序。同时mobility pack还可以很容易地与第三方模拟器集成为开发者提供所需的运行环境。本课题就是通过mobility pack 5的无线应用开发进行设计的。netbeans ide mobility pack具有的一些特性为:(1) 流程设计器:支持drag-and-drop方式,可以自由定制执行流程,显示窗口以及执行动作;并且自动生成相应的代码;(2) 无线连接向导:通过midlet与web service和服务器端代码进行连接,支持jsr-172;(3) 用户定义配置:当开发与配置相关的应用时,可以使用项目模板一次性创建配置,然后在不同的项目当中重复使用;(4) 部署向导:通过webdav、ftp、scp等方式将midlet上传到设备上进行部署;(5) 本地化midp:允许加入本地化的一些midp模块;(6) cdc项目向导:添加了对cdc项目的直接支持;(7) 可以利用matisse进行cdc开发时的界面编辑;(8) 支持sony ericsson cdc platform 1和nokia s80平台;(9) 支持第三方模拟器:netbeans ide 5.0可以支持几乎所有主流手机厂商的开发平台模拟器,包括:motorola、nokia、samsung、iemens、benq和sony ericsson;(10) junit支持:可以使用junit测试cdc应用程序。在配置j2me环境时,首先安装jdk,在安装netbeans ide 5.0然后在安装mobility pack 5.0,最后安装所需的开发平台模拟器。在进行本课题设计时,针对本课题需求选择环境架构。j2me配置层和简表层 配置层(configuration)和简表层(profile)是构建j2me标准设计的主要元素,这两种元素能够为j2me提供支持多样性的终端设备的能力。j2me定义了家庭式终端设备的最小java平台,其需求是内存和处理器的能力,而简表层则是真正规范与定义出系统设备的可用程度。图 j2me平台所组成的基本层次在配置层(configuration)中规范出三个基本元素: 规定了java的编程语言特性; 规定了java虚拟机特性; 规定了所支持的java类库和应用程序接口(api)。j2me的设计者之定义了两个架构层,为了避免分隔出两个不兼容的平台,定义了两个架构,这两个架构层为:(1) 个人的、间歇性连接的移动设备:有限连接设备配置(cldc);(2) 经常性连接的网络终端设备:连接设备配置(cdc)。application应用程序application应用程序foundation基础规范类midp移动信息设备规范类cdc连接设备配置cldc有限连接设备配置host operation system主机操作系统host operation system主机操作系统device hardware硬件设备device hardware硬件设备图 cdc与cldc平台框架连接设备配置连接设备配置(the connected device configuration,cdc),这是第一个j2me架构。这种配置取决于终端设备所提供的必要支持,目标是设备要有2mb以上内存,包含ram和rom。配置层中包扩设置jvm的性能要能支持其所设置的类库。cdc规范中使用java 2平台的虚拟机内存,这里统称为简易虚拟内存(compact virtual machine,cvm)。而简易虚拟内存(compact virtual machine,cvm)产品的主要特性为:(1) 可移植性,快速同步化;(2) 提升内存系统,可在rom外执行java类;(3) 最小的平均垃圾收集暂停时间;(4) 内存系统与虚拟机完全分离;(5) 模块化的垃圾收集;(6) 插入式垃圾收集机制;(7) 支持本地线程,java 线程直接对应到本地线程中;(8) 提供接口支持实时性系统服务。通过如上所述,从基本架构来看,通过被创建的类的使用情况,指出了cdc规划出最小的类库和api,它所提供的java package标准如表所示:表 cdc架构提供的java包标准java 目录包说 明 java.lang java虚拟机系统类 java.util 底层的公用java类 普通数据封装包通信协议(udp)和输入/输出 (i/o)类 java.io jav文件的(i/o)使用类 java.text 支持最小的国际化类库集合 java.security 最小的对象序列化所需安全集合加密机制在上表中可以发现许多的api并不包含java2的sdk。而有一些package与class是从java2中的sdk中延用的,其使用的条件是必须要移除j2se多余的package和class,而不是要移除j2se的api。下表列出了cdc所支持的package。表 2-2 cdc所支持的包文件cdc 目录名称描 述 java.io 标准io类和接口 java.lang 虚拟机类 java.lang.ref 参考类 java.lang.reflect 参考类和接口 java.math 数学运算类库 网络类和接口 java.security 安全类与接口 java.security.cert 安全认证类 java.text 文字目录 java.util 底层公用类 java.util.jar java文件(jar)公用类 java.util.zip zip压缩公用类 java.microedition.io cdc一般连接架构类和接口上表中的java.microedition.io的开发包中的几个接口和类实现了应用程序通用连接框架。文中提到的api的全称为:application programming interface,即应用程序接口。有限连接设备配置有限连接设备配置(connected limited device configuration,cldc)是第二个j2me架构。cldc规范也定义了终端设备具有以下特性:(1) 60kb512kb以下内存用于java运行;(2) 16-bit或32-bit处理器;(3) 有限能源供应(通常使用电池作为供能设备);(4) 有限或间断的网络连接。有限连接设备配置的目标是给终端设备定义一个标准平台,主要移动电话上会有不同的系统软件,同时要在现存的环境中使用最小的配置环境。cdc规范和cldc规范所支持java程序语言层度有所不同,在cldc的java语言支持部分移除了部分java语言的功能特性:1、浮点运算能力;2、对象实例的销毁;3、不支持java.lang.error的大多数子类。而有关java虚拟机的和支持库,cldc要求必须有虚拟机,因为它定义了高可移植性并且是为有设备限制小型终端设备所设计。所以有些在标准的环境定义的compliant vm特性不予支持。以下为不支持在cldc下的compliant vm的特性: 不支持java本地接口jni; 不支持用户定义的java类加载; 不支持反射特征; 不支持线程组和守护线程; 不支持类实例的销毁(在cldc类库无object.finalize方法); 不支持弱引用; 在错误处理上的限制(j2se小型错误自己是支持的); 不支持类文件验证。有限连接设备配置包含一个基本的j2me运行环境,包括了虚拟机和核心的java类库。有限连接设备配置是专门针对小型设备所设计,对j2se类库进行了大量的简化。cldc保留java规范中所定义的核心3个包,即java.io、java.lang、java.util,并且重新定义一个新的目录javax.microedition.io,用来支持通用框架(gcf,generic connection framework)。这里可以用前缀来进行区分,如java.表示核心的java目录,而javax.表示为java的扩展目录。cldc中目录所对应的功能如表所示。 cldc 目录 描 述 java.io 标准java io类和j2se目录的子集 java.lang vm类和接口,j2se目录子集 java.util 实用类的j2se标准子集 javax.microedition.io cldc的通用连接框架类和接口 表 cldc所支持包文件移动信息设备简表移动设备信息简表(mobile information device profile,midp)是位于cldc上层的简表层。cldc因为资源受限的关系,不足以支持标准的虚拟机开发环境和类库以及java语言程序的一些应用。在使用只有cldc提供的api来进行编程是几乎不可能实现的,因为cldc中并没有提供给使用者与用户、相关存储设备或网络做直接交互的工具,cldc是一个基础层次,为了满足个用户使用特性,在cldc层次上构建一系列简表层(profiles)来支持cldc所不足的功能。其中“移动性息设备简表”就是简表层中的一种。midp位于cldc上层的简表层,是目前j2me平台中发展最成熟的部分。midp针对的是移动信息设备类,这类设备通常指手机或者是pda,它们在屏幕、内存或处理器等硬件特性上有很多限制。因此在mid上开发应用程序或游戏,就必须考虑相关的问题。从midp的规范中定义出移动信息设备的最小特征: 显示屏最小尺寸为96*54像素; 显示色彩深度为1位; 设备核心:有效运行kvm的能力; 网络状态:双向的、无线的、间断的和有限带宽的连接网络; 输入设备:itu-t手机键盘(one-handed key board)或者是标准键盘(two-handed keyboard,即qwerty键盘)与触摸屏; 128kb存储空间用于midp组件中; 8kb存储空间应用于应用程序生成的永久数据; 32kb的可变存储用于java运行环境使用。因为mid能力范围有限,midp建立的目标位最少的终端设备能力的共享性质在midp中规范。其api如下:(1) 应用方式(midp应用程序语义和控制);(2) 用户界面应用;(3) 持久存储器应用;(4) 网络应用;(5) 计时应用。midp规范中定义的packeg与class如表显示。表 midp规范中定义的包文件 midp目录名称 描 述 javax.microedition.icduiui类和接口 javax.microedition.rms记录和管理系统(rms)支持持久的设备存储器 javax.microedition.midletmidp应用程序支持的类 javax.microedition.iomidp通用连接框架的网络支持类和接口 java.io标准java.io类与接口 java.langvm类和接口 java.util基本的公用类和接口 上表中javax.microedition.icdui的ui api为midp应用提供了一个用户界面的实现特征集合;javax.microedition.rms中midp为midlet提供了一个可以再移动设备上存储数据数据的机制;javax.microedition.midlet定义了midp的应用及该应用在运行时与环境的交互;javax.microedition.io包含源自cldc的通用连接框架的网络支持;java.lang、java.io与java.util是midp从j2se核心类中继承过来的核心类。具体环境配置方法1安装j2sdk1.4.2到指定位置;2安装netbeans ide 5.0,在安装时选择已安装的j2sdk;3安装mobility pack 5.0,在安装时需制定为netbeans ide 5.0的安装目录;4安装nokia_s40。 j2me开发环境界面图 开发环境的编程窗口、调试窗口、输出结果软件功能:移动电话的发展堪称迅猛,是近几年快速成长的新兴产业,其技术越来越成熟,采用的技术越来越先进,手机已从普通移动通信终端向智能终端转变,所支持的功能越来越多。自从后pc时代(后pc时代是指:将计算机、通信和消费产品的技术结合起来,以3c产品的形式通过internet进入家庭。)的来临,市场已经逐步将计算机产业的功能转移到了手机应用上,使得目前的手机不仅提供单一通话功能,还兼具了娱乐、个人助理、无线数据传输及无线上网的功能。随着目前手机的普及和硬件设备性能的提升,开发手机游戏已经成为了一个新的经济增长点,一个快速增长的产业。由于手机作为小型终端设备,所拥有的设备、资源有限,所以对运行的程序有所限制,通常是需要程序运行时所占用的内存和内核的资源较少。且由于手机的生产厂商的不同,所以各款手机的配置不同,且同一生产厂家生产地手机配置也可能不同,所以在进行手机游戏的设计时,需要针对不同手机进行参数配置。人们通过不断的研究创新,现在开发出的单机版的手机游戏在交互性和视觉效果上已经有了很大的提升,在手机现有得软、硬件发展程度下,尤其是手机内核处理能的提高,以及内存容量的增大,手机游戏质量不断上升,现在单机版手机游戏在游戏画面、游戏音效、游戏操作性等方面基本上已经发展到极致。而现在软、硬件的发展程度已经满足了开发无线联网游戏。现有的手机联网的方式有:红外连接、蓝牙连接以及收费的连接等。手机红外连接利用红外线进行连接,传输距离最大可达2m,对障碍物的衍射能力较差,应用时需要进行直线连接。蓝牙一词作为新的无线通信技术标准的代称,是一种无线数据与语音通信的开放性标准,以近距离和低成本无线连接为基础,将终端设备进行连接,其最远连接距离为100m,且在使用时不需要进行直线连接。蓝牙技术经过多年的研究开发,该技术已很成熟,有广泛的用途。根据调查显示,由于网络流量费用的关系,手机玩家更加愿意接受在局域网内进行不收费连接的游戏,在考虑到应用的可能性及便利性时,蓝牙连接成为进行手机联机游戏的首选,这就为蓝牙技术的应用提供了一个很好的领域。俄罗斯方块这款游戏是由苏联的游戏制作人阿列克谢.帕基特诺夫在1985年发明的。这款游戏曾风靡一时,已然成为一款经典的游戏,就是现在也有着大量的玩家。本次设计的俄罗斯方块游戏系统可以进行单机模式和联网模式的游戏,通过采用蓝牙技术使手机用户能在小区内进行联网游戏,根据用户自行选择可以满足用户的不同的需求,增加了趣味性、游戏性。软件设计过程总体设计思路 因为本软件设计的系统为:实现俄罗斯方块游戏的运行,并且增加了手机小区内蓝牙联网的功能。因此考虑到该课题为实现手机的联网游戏,为了便于区分变量,故在程序中定义了两组类似的类成员变量和常量,类中除共享的成员变量外,变量均需要定义本地玩家和远端玩家两份,默认定义远端的均添加_remoteh(或者_remote)后缀。 本次软件的设计主要分为两个大的模块,一个是游戏模块,另一个是蓝牙联网模块。在游戏模块中包括游戏的逻辑控制、屏幕的绘制、游戏地图类等;在蓝牙联网模块主要包括蓝牙设备的发现及服务、数据传输等。游戏的功能定义:能够实现俄罗斯方块游戏运行,具有单机及联网游戏功能。 知道了基本条件,就可以开始设计游戏了,编写者必须对俄罗斯方块游戏的规则进行严格的描述。可以这样定义:屏幕上有一个x列y层的区域,计算机自动产生多种不同类型的方块,并出现在区域的最顶端;然后每过一个固定时间间隔向下落一层,玩家可以使用键盘控制方块向三个方向移动和顺逆时针旋转90度。不过前提是方块移动和旋转后的位置必须是空的。当方块落到区域底部或者另一方块之上将停止移动,然后新的方块会产生。当新方块无处放置的时候:game over。各模块方案的选择与论证 考虑到硬件的因素,j2me程序不能很大,通过已有的手机游戏来看,多数在100 kb以下。而且其中大部分是图片和声音,代码只占其中很少一部分。在j2me程序比较小时,为了提高程序的执行效率,通常的做法是只用一个类完成整个应用程序。同时在进行软件设计时,将不同功能按照模块划分,对每个模块的设计提出了很多方案,在通过研究论证后,逐步找到了最优的方案。下面就对主要的模块进行可行性分析与论证,寻找最优设计。游戏逻辑控制首先是定义游戏相关的数据存储方法,分为两个主要的部分,一个是当前的方块,需要保存位置、当前的旋转状态;另一个是屏幕区域的状态,这可以用一个二维数组来表示。其次还有按键分析模块:分析得到按键的含义,做出响应;响应模块:“左”、“右”、“下”、“移动”和“旋转”几个模块,负责改变当前方块的状态数据;画方块模块:位置移动后,把方块画到新的位置之上;检查模块:在每次状态改变之前,对方块企图占用的区域加以检查。如果无处可放,则此次移动失败。如果方块到底了,应该固定在当前位置,这可以调用前面的画方块模块实现,同时再产生一个新的方块。这样还需要产生新方块的模块。还有当每次方块到底的时候,都需要检查一下是否有新的层排满了,如果有的话应该消层。这就又需要用到两个模块,检查是否排满和消层。产生新方块时也需要检查其产生的位置,如果这个位置已被占用,则游戏结束。同时下坠块通过分文7种,每种下坠块通过4个三维数组来表示其状态,在调用下坠块时,通过其三维坐标值和旋转值就可以来确定下坠块的形状。在设计时还要考虑到下坠块下坠时间和下坠速度的问题,在一个下坠块位置固定后,则下一个下坠块开始下坠,同时设计一个定时器通过对其的调用,就可以实现对下坠块速度的控制。在游戏进行时需要对游戏状态进行判断,即游戏正常继续运行和游戏结束两种状态,判定的依据为游戏容器的最上方坐标与固定的方块坐标进行比较,若固定的方块超过游戏容器的高度,则判定游戏结束,调用屏幕绘制程序,显示游戏结束状态;若固定的方块未超过游戏容器的高度,则继续游戏。远/近端屏幕绘制 屏幕的绘制要考虑到单机模式和联机模式,在两种模式下绘制有所不同。在单机游戏模式下,整个手机屏幕被划分为两个部分,左边为游戏容器部分,游戏主要在该容器内进行,右边显示游戏分数、状态、等级下一个坠落快等。图a为单机游戏屏幕示意图。在进行单机模式下游戏时,通过设定一个固定的时间值来进行屏幕的刷新,控制对下坠块的绘制;且在有新的下坠块产生或进行消行时也调用函数对屏幕进行重新绘制进行刷新,这样也就保证了在游戏时不会有间断感,使游戏感觉流畅。图 a 单机模式屏幕绘制示意图 在联网游戏模式下,屏幕的左半部分绘制两个屏幕,这两个屏幕一大一小,小屏幕显示的是远端玩家信息,大屏幕绘制的是本地玩家的游戏状态,在屏幕的左部分分别显示本地玩家和远端玩家的分数、状态、等级下一个坠落快等。如图b为联机模式屏幕示意图。图 b 联机模式下手机屏幕绘制示意图在图b中,当在进行蓝牙联机模式下游戏时,通过设定一个固定的时间值来进行对主屏的刷新,控制对下坠块的绘制;且在有新的下坠块产生或进行消行时也调用函数对主屏的屏幕进行重新绘制进行刷新,而附屏通过传输过来的数据对屏幕进行更新,设定一个时间值,每过一定的时间则向远端发送一次数据,且每当本地玩家有消行或新下坠块产生时,也发送数据,这样就保证了附屏更新的实时性。小区内蓝牙联网越来越多的移动手机开始支持java应用,应用于无线蓝牙技术标准的java apis(jabwt),由jsr 82(java蓝牙无线技术apis,java apis for bluetooth wireless technology)规范定义,支持快速开发便捷、及用途广泛的蓝牙应用。无线设备生产商已对jabwt规范做出反应,他们宣布移动手机和其它产品将支持jabwt应用。即本课题选用的蓝牙规范为j2me wireless toolkit所支持的jabwt。toolkit的preferences utility(使用偏好)提供了新的bluetooth/obex标签以进行蓝牙参数设置。在此栏下obex设置和三个蓝牙子标签,它们分别是:internal properties(内部属性)标签允许你设置设备搜索的超时时间,system properties(系统属性)标签允许用户定义一些调用localdevice.getproperty()方法便可得到蓝牙属性。这里对jsr82(jabwt)规范进行简单讲解。蓝牙 api依赖java通用连接框架,java蓝牙api定义了两个包:一个是java蓝牙api的核心javax.bluetooth,另一个是用于对象的javax.obex(obex)。根据jsr 82 规范,所有潜在蓝牙系统都必须支持蓝牙控制中心(bcc),该控制中心是一个控制面板,它的作用类似于可以让用户或oem给堆栈中的某些配置参数定义具体值得应用程序,特别是,它将应用于堆栈初始化中。任何蓝牙应用都有以下这些组件:堆栈初始化组件,设备管理组件,设备发现组件,服务发现组件和通讯组件。jsr82规范定义的api中包括21个类及接口。jsr82的最小需求是受限连接设备配置(cldc),而可靠连接设备配置(cdc)是cldc的超集,所以jsr82可以再cldc及cdc上实现,即可以再任意j2me环境下支持使用jsr82规范。jsr82被设计为支持数据传输,不支持语音传输。它从便于开发的角度所规定的api分为:设备/服务发现(discovery)、通信(communication)、设备管理(devicemanagement)3大类。发现类包括设备的发现、服务发现和服务注册的类或接口;通信类包括在串行剖面层次、rfcomm层次、l2cap层次和obex层次建立连接和使用连接的类或接口;设备管理类包括代表控制和管理的类或接口。基于jsr82的协议栈如图c所示,黄色部分为jse82规范提供给java平台开发者的蓝牙软件栈。图c 基于jsr82的协议栈jsr82(jabwt)与midp、cldc的关如图d所示,cldc是midp和jsr82的基础。无论midp还是jsr82均给予cldc而设计。图 d jsr82与midp、cldc的层次关系下面介绍设备管理api。设备管理api有3个主要的类来支持设备管理:.localdevice类(本地设备类);.remotedevice类(远端设备类);.deviceclass类。本地设备类(localdevice类)标识了本地蓝牙设备。蓝牙应用程序和localdevice之间的关系是典型的一对一关系,如图e所示。 图 e 本地设备类 本地设备提供了方法来返回关于本地设备的信息,并且能够进入bluetooth manager:(1) .getbluetoothaddress()返回蓝牙设备地址;(2) .getdeviceclass()返回设备类;(3) .getfriendlyname()返回设备友好名称,蓝牙设备名通常是用户在蓝牙控制中心为其设置的;(4) .getrecord()返回一个指定蓝牙连接的服务记录;(5) .updaterecord()方法用来为指定的servicerecord更新sddb服务记录;(6) .getdiscoverable()返回设备的可发现状态;(7) .setdiscoverable()设置设备的可发现状态;(8) .getdiscoveryagent()返回一个参考给发现代理;(9) .getproperty()返回一个设备的蓝牙属性。 通过调用getproperty()方法用户可以得到的属性包括:(1) .bluetooth.api.version,蓝牙api版本;(2) .bluetooth.sd.attr.retrievable.max,一次性能够被获得的服务记录属性的最大值;(3) .bluetooth.connected.devices.max,支持的连接设备的最大值;(4) .bluetooth.sd.trans.max,同时发生的服务发现处理的最大值;(5) .bluetooth.l2cap.receivemtu.max,l2cap最大发射单元。 远端设备类(remotedevice)一个remotedevice的实例代表了一个远端蓝牙设备。在一个蓝牙客户端应用程序可以进行服务,消费之前,它必须发送一个设备请求来发现远端设备。典型的蓝牙应用程序和远端设备之间的关系是一对多,如图f所示。图 f 远端设备类 远端设备(remotedevice)提供的方法中,有些很类似于本地设备(localdevice)里提供的方法:(1) getbluetoothaddress()返回蓝牙地址;(2) .getfriendlyname()返回蓝牙设备名;(3) .getremotedevice()返回相应的被指定蓝牙连接的远端设备;(4) .authenticate()尝试识别验证远端设备;(5) .authorize()为指定的蓝牙连接去尝试批准远端设备访问本地设备;(6) .encrypt()尝试为指定的蓝牙连接开启或关闭加密;(7) .isauthenticated()测试是否远端设备可以被验证;(8) .isauthorized()测试是否远端设备已经被蓝牙控制中心授权访问本地设备以进行蓝牙连接;(9) .isencrypted()测试是否本地设备和远端设备之间的通信被加密;(10) .istrusteddevice()测试是否远端设备被蓝牙控制中心指定为可信任的。 deviceclass类。一个deviceclass对象代表一个设备的设备类(cod),例如一个打印机或者一部电话。cod包括一个主类,一个辅的类,和服务类型或服务类。deviceclass提供了如下方法:(1) .getmajordeviceclass()方法获取设备的主类;(2) .getminordeviceclass()方法获取设备的辅类;(3) .getserviceclasses()获取设备的服务类。当一个设备被发现,同时他的类也会被发现;当发现代理调用devicediscovered()时,其中一个参数就是deviceclass。用户可以通过它的getdeviceclass()方法找到本地设备的cod。系统的最终方案 本软件通过netbeans ide软件搭建的j2me环境开发平台,编写java应用语言的手机游戏程序。该课题可以主要分为两大模块:l 基于jsr82的设备与服务的发现和建立连接;l 游戏的控制和屏幕绘制等。 考虑到游戏为联机游戏,因此在开发时应该注意变量的区分,应在程序中定义两组类似的成员变量和常量,类中除共享的成员变量外,变量都需要定义成本地玩家和远端玩家两份,通过对远端变量增加_remote(或者_remote)后缀来区分本地变量和远端变量。在程序设计时,应该考虑到下坠块的设计问题,本课题设计采用三维数组来表示,通过增加其旋转值的设定,来表示7种下坠块旋转形状的改变,对与7种下坠块对于其形状和对应的颜色都有一个对应的id值,这样方便了值的调用。同时对与游戏的逻辑控制和地图的控制也是本课题的重点之一,屏幕的绘制方法为两种,一种是玩家进行时单机模式进行游戏时的绘制方法,另一种为联网模式下屏幕的绘制。而在联网模式下逻辑控制的判定机制和单机模式下的逻辑控制的判定机制也有所不同,即游戏胜利的判定条件不同。游戏在进行单机模式运行时,游戏的判定机制为:当屏幕已被填满则判定游戏结束;而游戏在进行联网模式下运行时,通过蓝牙接口实现数据的通信,在远端屏幕被填满,判定游戏结束,远端玩家主屏显示游戏结束,本地玩家游戏主屏显示游戏胜利,反之亦然。系统软件设计系统软件设计本软件的系统操作流程分为以下几步:(1) 用户启动midlet后,首先进入master/slave选择画面,若选择slave,则向周围广播自己的服务,然后等待;若选择master,则搜索周围服务。master端在搜索到服务后,将slave端的服务描述信息显示在屏幕上,若选择singer则进行单机游戏;(2) master选择想与之进行游戏的slave(在搜素已存在的服务时可能不只一个),建立连接;(3) 按“开始”键,判断远端玩家是否已经同意开始游戏(进入“等待”状态),如果没有同意,则“等待”(game_wait),并且发送“等待”信号给远端玩家;(4) 按“开始”键,如果远端玩家已经“等待”(game_wait),则“初始化”(game_init)游戏,同时发送该信号给远端玩家;(5) 开始游戏后,再按“开始”键,则进入暂停(game_paused)状态,再按次则继续运行游戏(game_run)状态,两种状态可以相互切换;(6) 若收到对方游戏结束(game_over)的信号,则主屏上显示胜利(game_win)画面,附屏显示示游戏失败的画面,若本地玩家游戏结束,则本地玩家主屏显示游戏失败的画面,附屏上显示游戏胜利的画面,并发送该信号给远端玩家;(7) 若远端玩家断开连接或者退出,则本地玩家继续游戏,代表远端玩家的gamestate的值为game_exit或者为game_disconnected,并停止发送数据。其中主屏显示本地玩家游戏状态,附屏显示远端玩家的游戏状态,主屏占三分之一,附屏占五分之一。根据设定的系统操作流程则可以进行系统编程。系统设计框图系统在设计时,按照其功能,对编码进行考虑分为三个包文件:(1) game.tetris包,其中包括:游戏的主程序模块、逻辑控制模块、屏幕的绘制模块、方块生成与坐标控制模块、游戏地图存储模块、数据传输序列化模块等;(2) game.bluetooth包,其中包括:蓝牙设备与服务的发现模块、主从角色选择模块、主从线程模块、蓝牙连接的保存模块等;(3) 缺省包,这个包中保存了提示音信息。系统详细构成如图1所示。图 1系统构成 game.bluetooth包中,bluetoothdiscover类提供了一个封装后的api,提供了简单的接口进行蓝牙设备及服务的发现;bluetoothconnection类封装了建立后的i/o流。game.tetris包中的tetriscanvas类封装了游戏逻辑,tetrisblock类定义了7种方块及方块的绘制方法,tetrismap类中保存的是游戏地图中的数据。这些类的关系可用图2表示。图 2系统中类的关系图mainmidlet类为主程序类,主要控制游戏进程;bluetoothdiscover类为蓝牙设备及服务发现类;bluetoothconnection类提供了蓝牙保存功能;tetrisblock类对方块生成与坐标起到控制作用;tetriscanvas类中定义了游戏的逻辑控制及对tetrismap类调用绘制的方法;tetrismap类实现了游戏地图数据的存储;masterslaveselect类引导玩家进入联机游戏,实现了角色划分;masterthread类及singlethread类分别定义了本地玩家与远端玩家蓝牙连接方法;serializa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高三上半学期化学知识总结
- 塔里木大学《医学检验仪器与临床实验室管理》2023-2024学年第一学期期末试卷
- 2025至2031年中国建筑专用型材行业投资前景及策略咨询研究报告
- 2025至2031年中国内置号角喇叭行业投资前景及策略咨询研究报告
- 2025年商场租赁合同
- 济宁铁路隔音屏施工方案
- 2025至2030年中国进水三通数据监测研究报告
- 2025至2030年中国薄荷素油数据监测研究报告
- 2025至2030年中国祛黑嫩白霜数据监测研究报告
- 2025至2030年中国液态感光丝网抗蚀剂数据监测研究报告
- 直流伺服电机控制系统设计
- 提水试验过程及数据处理
- 河道护坡工程安全管理体系与措施
- 《口腔基础医学概要》课件-口腔的功能
- SNT 2360.9-2009进出口食品添加剂检验规程第9部分:着色剂
- 资产分配方案
- 【中考物理】2023届北京市第二轮复习-科普阅读题(提升题)含解析
- dr钻戒的营销策划书
- 新人教版五年级小学数学全册奥数(含答案)
- 枣桃小食心虫的发生与防治
- 合理使用电子产品(课件)-小学生主题班会通用版
评论
0/150
提交评论