基于JAVA的手机游戏软件开发.pdf





《基于JAVA的手机游戏软件开发.pdf》由会员分享,可在线阅读,更多相关《基于JAVA的手机游戏软件开发.pdf(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1 摘要 过去的两年,移动手持设备领域实现了飞速的发展,并伴随着巨大的变革。在近几年的技术创新中,蓝牙可谓是最为吸引人的应用之一。JSR82的 JCP 蓝牙规范规范了一个标准的 J2ME 蓝牙开发平台,以保证开发出来的的程序可以在任何 J2ME 设备上运行。本文正是利用 J2ME 开发平台,通过对 JSR82的 JCP 蓝牙规范的深入研究,实现了一个基于蓝牙的联机俄罗斯方块游戏。该软件很好的完成了在蓝牙技术的基础上对数据的接收、传送等功能。并可以在支持 JAVA 的手机中成功使用。关键词:J2ME;蓝牙;Netbeans 2 ABSTRACT Over the past two years,
2、the field of mobile handheld devices to achieve a rapid development,and accompanied by huge changes.In recent years,technological innovation,Bluetooth can be one of the most attractive applications.JSR82 Bluetooth specification JCP specification of a standard Bluetooth J2ME development platform to e
3、nsure that the procedures developed can run on any J2ME device.This article is the use of J2ME development platform,the JCP through JSR82-depth study of the Bluetooth specification,the realization of a Bluetooth-based online game Tetris.The software is very good in the Bluetooth technology was compl
4、eted on the basis of data reception,transmission and other functions.JAVA can be in support of the successful use of mobile phones.Keywords J2ME;Bluetooth;Netbeans 3 目录 1 前言.1 2 研究方法.2 2.1 J2ME.2 2.1.1 不同的 java 版本.2 2.1.2 J2ME.2 2.2 开发平台的搭建.3 2.3 蓝牙技术.3 2.4 JSR82(JABWT)规范.3 3 游戏设计实现.4 3.1 结构设计.4 3.2
5、 系统静态类图.5 3.3 MAINMIDLET类.6 3.4 TETRISBLOCK类.9 3.5 TETRISCANVAS类.10 3.6 BULETOOTHDISCOVERY类.14 4 结束语.19 致 谢.20 参考文献.21 1 1 前言 过去的两年,移动手持设备领域实现了飞速的发展,并伴随着巨大的变革。在近几年的技术创新中,蓝牙可谓是最为吸引人的应用之一。由于手机无线网络还处于研究阶段,而蓝牙在某种程度上可以认为是对手机无线网络的弥补。很多手机单机游戏对于喜爱游戏的玩家来说并不具有吸引力。如果可以通过蓝牙技术实现小区域联机游戏。那么,在某种程度上来说,这会成为很多喜欢游戏的消费者
6、的首选,便可以在很大程度上提高手机的销量。2 2 研究方法 Java 2 分为有 3 个版本,其中 J2ME 是一个高度优化的 Java 运行环境,它专门为那些 CPU、内存都非常有限且带宽、屏幕分辨率也很小的无线手持设备而设计。JSR82 的 JCP 蓝牙规范规范了一个标准的 J2ME 蓝牙开发平台,以保证开发出来的的程序可以在任何 J2ME 设备上运行。而不必考虑硬件平台和协议栈的不同对应用程序产生的影响。因此,利用 JSR82 规范可以开发灵活高效的局域网联机游戏。2.1 J2ME 2.1.1 不同的 java 版本 当 Sun 公司引入 Java2后,他们认识到,一个版本是远远不够的。
7、因为运行Java 的设备在迅速变革。最终他们将 Java2分成了3个版本:J2SE Java 2 Standard Edition J2EE Java 2 Enterprise Edition J2ME Java 2 Micro Edition J2SE 是一个以客户程序为基础的开发平台,它专为 PC 机用户设计。J2EE 是基于服务器程序的一个版本,它支持 Servlets,JSP 和 XML。而 J2ME 是一个精简版的 J2SE。每一个版本都为基于 JAVA 设计的应用程序提供了完整的运行平台,且均含有虚拟机和类。2.1.2 J2ME Java 2分为3个版本:Java2企业版(J2EE
8、),Java2标准版(J2SE)和 Java2微缩版(J2ME)。J2ME 是 J2SE 的一个精简版,它专门为那些 CPU 和内存容量有限且屏幕分辨率也很低的小型设备而设计。例如 PDA,移动电话。Java 2微缩版,J2ME,是一个高度优化的 Java 运行平台。J2ME 技术拥有一个庞大的消费空间,它所覆盖的产品范围从最小的日常用品,比如智能卡或是传呼机到机顶盒,或者是一个和电脑能力相差不大的设备。随着便携式嵌入设备的飞速发展,在计算行业出现了一个新的领域,同时也带来了新的开发工具。而现在最理想的灵活的计算和信息环境就是其能够适应不同功能和不同制作方法的设备。迅速发展的移动和嵌入式设备,
9、导致了一个新的计算时代,同时对这种技术也提出了新的要求。最关键的要求是必须有一个共同而灵活的计算和通讯环境,拥有在不同的装置上实现安装的和共享的能力。1999 年 6 月,Sun 微系统公司推出 J2ME。它专门为那些 CPU、内存都非常有限且带宽、屏幕分辨率也很小的无线手持设备而设计。总之 J2ME 是一个能够使我们在移动设备上实现下载和运行不同应用程序平台,J2ME 是一个开放式标准,这意味着任何人都可以使用它,而其他人可以随意的下载这个应用程序。用户将能够根据他们的需求和兴趣实现个性化的设备或是应用。3 2.2 开发平台的搭建“工欲善其事,必先利其器”,程序员也不例外。本实验使用 NET
10、Beans IDE 5.0和 Mobility Pack 5.0 配置 J2ME 开发环境,它们可以显著提高 MIDP 应用程序的开发效率。安装前先确保计算机上已经正确地安装了 J2SDK 1.4.4(Java 2 Software Development Kit),并且可以正常工作。先安装 NETBeans IDE 5.0 中文版,因为 NETBeans IDE 比较耗费资源,所以建议在较高配置的计算机上使用,然后执行“文件”目录下的“新建项目”命令,弹出“新建项目”对话框,对话框中有5 个项目类可提供选择,包括“常规”、“WEB”、“企业”、“NETBeans 插件模块”等。这里并没有用于
11、开发 MIDP 应用程序的类别,因为还没有安装 Mobility Pack 5.0 中文版,它是用于在 NETBeans IDE 中开发 MIDP 应用程序的可选插件包。安装完后,可以发现新建项目“类别”中增加了“移动”选项。现在就可以使用NETBeans IDE开发 MIDP应用程序了。只需要安装NETBeans IDE 和 Mobility Pack 就可以开发MIDP项目,比搭建基于 Eclipse和 EclipseMe的开发环境,NETBeans IDE 更加简单、友好。2.3 蓝牙技术 信息时代最大的特点便是更加方便快速的信息传播,正是基于这一点技术人员也在努力开发更加出色的信息数据
12、传输方式。蓝牙,对于手机乃至整个 IT 业而言已经不仅仅是一项简单的技术,而是一种概念。当蓝牙联盟信誓旦旦地对未来前景作着美好的憧憬时,整个业界都为之震动。抛开传统连线的束缚,彻底地享受无拘无束的乐趣,蓝牙给予我们的承诺足以让人精神振奋。蓝牙(Bluetooth)技术,实际上是一种短距离无线电技术,利用“蓝牙”技术,能够有效地简化掌上电脑、笔记本电脑和移动电话手机等移动通信终端设备之间的通信,也能够成功地简化以上这些设备与因特网Internet 之间的通信,从而使这些现代通信设备与因特网之间的数据传输变得更加迅速高效,为无线通信拓宽道路。蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及
13、点对多点通信,工作在全球通用的 2.4GHz ISM(即工业、科学、医学)频段。其数据速率为 1Mbps。采用时分双工传输方案实现全双工传输。蓝牙网络拓扑分微微网和分散网两种,微微网中有一个设备是主设备,其它设备均为从设备,任何从设备之间的通信必须经过主设备才能够传输。而在分散网中,跨越两个微微网间的设备即可以是主设备,也可以是分设备。2.4 JSR82(JABWT)规范 在 2002 年 4 月 5 日,Java 靠发社区(JCP)发布了给予 J2ME 平台的蓝牙 API规范 JSR82(Java 蓝牙无线技术 APIs,Java APIs forBluetooth Wireless Tec
14、hnology)。JSR82 规范定义的 API 中包括 21 个类及接口。JSR82 的最小需求时首先连接设备配置(CLDC),而可靠连接设备配置(CDC)是 CLDC 的超集,所以 JABWT 可以同时在 CLDC 和 CDC 上实现,即可以在使用任何 J2ME profile 色上面使用 JABWT。4 JSR82 规定了一个标准的 J2ME 蓝牙开发平台,保证靠发出来的程序可以在任何 J2ME 设备上运行,而不必考虑硬件平提案和协议栈的不同对应用程序产生的影响。基于 JSR82 的 J2ME 蓝牙开发模式不仅提高了开发效率,更是由于 JSR82规范通过统一的 Java 语言平台和标准的
15、蓝牙开发平台,使用支持 J2ME 和 JSR82蓝牙规范的设备可以根据环境动态地下载并执行第三方的蓝牙应用代码。JSR82 被设计为支持数据传输,不支持语音传输;在核心协议中支持 L2CAP、RFCOMM、SDP 和 OBEX。JSR82 规范的 API 均以类或接口形式定义,总共定义了 12个类和 9 个接口。其中 javax.bluetooth 定义 9 各类和 4 个接口;javax.obex定义其余 3 个类和 5 个接口。它从便于开发的角度将所规定的 API 分为设备/服务发现(Disvovery)、通信(Communicatiuon)和设备管理(DeviceManagement)3
16、 大类。发现类包括设备发现、服务发现和服务注册的类或接口;通信类包括在串行剖面层次、RFCOMM层次、L2CAP 层次和 OBEX 层次建立连接和使用连接的类或接口;设备管理类包括代表控制和管理的类或接口。基于 JSR82 的协议栈如下图,灰色部分为 JSR82 规范提供给 Java 平台开发者的蓝牙软件栈。图 2-1 基于 JSR82 的协议栈 3 游戏设计实现 3.1 结构设计 因为是联机游戏,为了区分变量,故在程序种定义了两组类成员变量和常量,类中除共享成员变量外,变量均需要定义本地玩家和远端玩家两份。蓝牙联网俄罗斯方块游戏初始化过程时序图如下图所示:基于蓝牙的应用和程序 JABWT(J
17、SR82)服务发现协议(SDP)串口仿真协议(RFCOMM)对象交换协议(OBEX)逻辑链路与适配协议(L2CAP)主机控制器接口(HCI)蓝牙无线电(Bluetooth Radio)基带与链路管理协议(Basedband&Link Mangaer Protocol)5 MainMIDlet TetrisMap MasterSlaveSelect TetrisCanvas+run()()SingleThread+commandAction()MasterThread+commandAction()图 3-1 蓝牙联网俄罗斯方块初始化过程时序图 3.2 系统静态类图 本设计中用到了很多的类,例如
18、:BluetoothConnection 类、BluetoothDiscovery类、ErrorScreen 类、MasterSlaveSelect 类、MasterThread 类、Role 类等等。该游戏项目主要分为两大模块:(1)基于 JSR82 的设备与服务的发现和建立连接(2)根据自身玩家和远端玩家的状态来决定屏幕的绘制。Game.buletooth包中主要是BuletoothConnection类和BuletoothDiscovery类。BuletoothDiscovery 类提供了一个封装后的 API,提供了简单的接口惊醒蓝牙设备及服务的发现,而 BuletoothConnect
19、ion 类封装了建立连接后的 I/O 流。Game.tetris 包种主要的类是 TetrisCanvas、TetrisBlock 类。TetrisCanvas类封装了游戏逻辑,TetrisMap 类中保存的是游戏地图中的数据,TerisBlock 类中定义了 7 种方块及方块的绘制方法。这些类之间的关系可用图 3-2 表示。Disc Select MainMIDlet MasterThread SlaveThread Canvas1 Canvas2 6 Serialization 图 3-2 俄罗斯方块游戏中的类关系图 3.3 MainMIDlet 类 MainMIDlet 类派生自 MID
20、let,并实现在 CommandListener 接口,是该 J2ME程序的入口类。该类主要提供了如下功能:(1)使用 LocalDevice.getLocalDevice().getFriendlyName()可获得本地设备的好友名称,在后面建立连接时使用。(2)引导程序进入玩家角色选择界面(Master/SlaveThread),由玩家选择是作为蓝牙联机的主/从设备还是进行单机游戏。(3)实现 pauseApp()、startApp()、destroyApp(boolean unconditional)方法,进行程序生命周期控制。MainMIDlet 类比较简单,源代码如下所示:packa
21、ge game.tetris;import game.bluetooth.*;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.bluetooth.*;public class MainMIDlet extends MIDlet implements CommandListener private Display display;private BluetoothDiscovery disc;private TetrisCanvas canvas;private MasterSla
22、veSelect select;public MainMIDlet()7 /System.out.println(System.getProperty(microedition.m3g.version);display=Display.getDisplay(this);ErrorScreen.init(null,display);disc=new BluetoothDiscovery(display);/ketrisCanvas 的构造函数放到 M/SThread中,将 conn 数组传入ketrisCanvas 中 /ketrisCanvas=new KetrisCanvas(this);p
23、ublic void startApp()String name;try name=LocalDevice.getLocalDevice().getFriendlyName();/System.out.println(LocalDevice.getLocalDevice().getFriendlyName()=+name);catch(BluetoothStateException e)showAlertAndExit(,Please switch Bluetooth on!,AlertType.ERROR);return;disc.setServiceUUID(200000000000100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 手机 游戏软件 开发

限制150内