• 264.11 KB
  • 2022-04-22 13:54:53 发布

J2ME手机游戏开发毕业论文.doc

  • 45页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'J2ME手机游戏开发毕业论文目录摘要IAbstractII第1章绪论1第2章J2ME技术概览22.1J2ME的概念22.2J2ME简介22.2.1J2ME架构32.2.2JVM(虚拟机)32.2.3MIDP(移动信息设备简表)42.3手机游戏的发展52.3.1目前国内的发展情况52.3.2目前国际的发展情况6第3章游戏设计的需求分析93.1MIDP中的游戏API93.2游戏类构成93.2.1Boxer类的实现103.2.2GameCanvas类的功能及特点103.2.3Sprite类的功能及特点113.3游戏角色的处理113.4游戏中的事件处理123.4.1keyPressed方法123.4.2keyReleased方法13第4章“PocketBoxing”手机游戏开发制作14 4.1游戏编程144.2格斗类手机游戏实例144.2.1“PocketBoxing”游戏背景介绍及开发环境144.2.2MIDlet的构成154.2.3MIDlet的生命周期164.2.4MIDlet的画面显示基础164.2.5游戏项目的创建184.2.6命令种类及命令处理194.2.7游戏中的描绘处理214.2.8游戏状态的类变量234.2.9按键事件的处理244.2.10设计存在的难点25第5章手机游戏开发过程中的困难265.1手机游戏开发存在的困难265.1.1移动开发存在的问题275.1.2操作环境不兼容性问题275.1.3显示速度方面的问题285.1.4不同的屏幕尺寸问题285.1.5输入问题295.2解决方案29第6章J2ME手机游戏前景展望316.1J2ME手机游戏的优势316.2J2ME手机游戏的开发意义32第7章结论35致谢36参考文献37 英文资料翻译38 第1章绪论手机是人们日常生活中所用的非常频繁的通信工具,虽然现在其费用比有线电话高,但是其随时随地的沟通优势,使人们摆脱了线路的束缚。目前中国的一些大城市几乎人手一部或几部手机,正是由于手机的高普及率,使得无线移动商务才得以迅速普及和发展。JAVA技术已经从一种最初用来编写与硬件无关的嵌入式系统的编程语言变成了一种与厂商无关、与硬件无关的健壮的服务器端技术,它使整个企业界可以全面发掘以Web为核心的应用程序的巨大潜力。随着JAVA技术的不断更新提高,J2ME技术的出现,使得手机游戏越来越成为我们关注的焦点。J2ME技术目前最流行的就是在制作手机游戏方面,JAVA手机的出现使得这一技术更有它的用武之地,发挥着他灵活、轻便、快捷的作用。下面在本篇文章中就将详细的介绍J2ME这一技术在手机游戏制作方面的具体过程以及其重要的作用。 第2章J2ME技术概览2.1J2ME的概念J2ME的全称是Java2MicroEdition(J2ME)——Java2技术微型版,与J2SE、J2EE一样都是有美国SUN微系统公司提出的JAVA技术规范。2.2J2ME简介J2ME是为了能够开发运行在小型设备、独立设备、互联移动设备、嵌入式设备上的JAVA应用程序而被提出的。J2ME是建立在一个由概要描述、配置、JAVA虚拟机和操作系统等部分组成的标准架构之上的,这些内容共同组成了完整的J2ME实时运行环境。它的技术核心是由一个JAVA虚拟机(JVM)及一套适合运行在上述设备环境上的API接口构成。J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算设备的开发人员,这些开发人员需要在他们的产品中整合跨平台的能力。无线设备和小型计算设备的消费者期望这些设备能够有较高的性能。他们希望小型计算设备有快速的响应时间,与同种设备相兼容,拥有功能完备的应用程序。消费者希望桌面计算机和笔记本电脑上的软件和功能同样能够运行在移动电话和个人数字助理上。为了满足他们的需求,开发人员必须重新考虑他们设计计算机系统的方式。开发人员需要利用商业计算机上现有的前端和后端软件的计算能力,并将这些能力传递到微型、移动和无线的计算设备上。J2ME能够以最小的修改来实现这种传递,如果应用程序的设计是可伸缩的,应用程序就可以适应小型计算设备上有限的资源。 J2ME为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案,能很好的解决软件跨平台的兼容性和安全性的问题。[5]2.2.1J2ME架构J2ME架构的模块化设计使应用程序可以灵活适应小型计算设备的限制。J2ME架构没有替代小型计算设备的操作系统。相反,J2ME架构由位于原生操作系统之上的多层软件组成,这些软件共同称为“连接有限设备配置”(ConnectedLimitedDeviceConfiguration,CLDC)。安装在操作系统之上的CLDC形成了小型计算设备的运行时环境。J2ME架构由3个软件层组成:第一层是包括在内的配置层,这个层次直接与原生操作系统进行交互。配置层还处理profile和JVM之间的交互。第二层是profile层,由小型计算设备的应用程序编程接口(API)的最小集合组成。第三层是MobileInformationDeviceProfile(MIDP)层。MIDP层由用户网络连接、永久存储和用户界面的javaAPI组成。它还能够访问CLDC库和MIDP库。2.2.2JVM(虚拟机)JVM是专门为微型电子设备与资源受限设备如:手机、寻呼机、移动互联网设备、家用微电子设备等设计的一种轻便、紧凑的JAVA虚拟机。JVM可以为微型电子设备提供一个完整的JAVA运行环境,除了一些微型设备所必需的适当的功能有所不同外,它是由JAVA虚拟机规范定义的真实的JAVA虚拟机。它是专门为那些受资源限制,只有几百K字节内存的微型设备设计的。JVM起初是由SUN微系统实验室为一个名叫“Spotless”的项目创建的。它的目标是为资源受限制的Palm(是目前较为流行的掌上电脑操作系统)可连接的电子设备,实现一个java虚拟机。基于上述原因,JVM具有以下几个特点:(1)小,仅具有40KB至80KB的静态内存。 (2)轻便、精巧。(3)模块化并可定制。(4)尽可能完全紧凑的完成设计目的。2.2.3MIDP(移动信息设备简表)MIDP是专门为互联受限设备配置设计的,它为移动设备提供了一套API集合,MIDP包含用户界面类、持久存储功能与网络功能。它同时也包括一个供用户下载新应用到终端设备的标准运行环境。运行在MIDP下的小应用程序叫做MIDlet移动设备小应用程序,它与Applet类似。MIDP要求平台设备提供一个机制用来存储简单的数据记录,通过正常的平台事件,比如重新启动和电池更新维护系统的完整性。MIDP是以SUN、Motorola、Nokia为中心的MIDPEG组织(MobileInformationProfileExpertGroup)所制订出来使用在CLDC上的Profile,是以能使用在移动电话、双向对讲机、可无线通信的PDA(个人数字助理)上面为前提设计出来的。另外,像日本国内的NTTDoCoMo、J-PHONE、KDDI等电信商与移动电话制造商也都曾参与了MIDPEG。MIDP是在CLDC的功能上附加提供适合目标设备用的GUI与事件处理功能。这样一来,就可以当成MIDP应用程序(MIDlet)来运行了。MIDP由于是由多个企业所共同策划出来的开放标准,因此主要的移动电话制造商也会制造出大量的对应机种。也就是说,以MIDP为基准所制作出来的应用程序,也将可以在流通于市面上的移动电话上执行。另外,MIDP不仅限于移动电话,也已经被移植到PDAPalmOS上,而以MIDPforPalmOS的名字来称呼(与KJava是不同的)。在不使用各电信商的扩展API的时候,制作给移动电话用的MIDlet也将可以使用在PalmOS上面。由于未来MIDP也将会搭载到不同设备之上,也由于其兼容性高,只要写过一次程序,就可以在其他移动电话或是移动电话以外的设备上执行;而这也就是它最大的好处。 2.3手机游戏的发展手机是现在人们生活中必不可少的通讯工具之一,有着其重要的作用,现在的人们越来越认识到它的重要性。作为手机中的一部分——手机游戏,也发挥着它特有作用。可以说,手机游戏发展到今天已经越来越为人们所熟知,也越来越受到人们的喜爱。但是应该看到,国内手机游戏的发展还是刚刚起步,与欧美日韩等先进国家还有着一定的差距,但是这种差距正在一步一步的缩小。2.3.1目前国内的发展情况随着技术对游戏经验的促进,游戏市场持续增长。商业IT革命为我们节省了时间和金钱,从而提高了我们的工作水平,我们因此花费更多的时间和金钱在游戏上,来改善生活的整体质量。甚至在当今困难的经济时代,游戏仍保持快速增长,它仍然是盈利行业的组成部分。Java开发者应该注意到这里蕴藏着的巨大的商机。在全球数字娱乐的快速发展浪潮中,中国的游戏产业正以其惊人的井喷式发展速度前进,牢牢吸引住了世界目光。当然,目前中国游戏产业一片大好的形势可以说是电脑网络游戏一枝独秀的成绩。据信息产业部2004年10月统计出的主要业务量数据表,到本年10月止,中国移动电话用户合计32503.4万户,比上年末新增5508.1万户。明年或者后年3G手机牌照发放下来以后,手机游戏的硬件设备更是日趋完善。2004年里,又有很多手机游戏中小型开发企业成立,很多新的手机游戏涌入内容市场。似乎在这红红火火形势下“手机游戏马上会火起来”这一想法已经点燃了很多人心里的希望之火。手机游戏市场的确有很大的市场发展空间,前景看好,但是在中国游戏市场中马上占据主流地位是不大可能的,那应该还需要至少一年的“磨合期” 。中国大众还不大熟悉手机游戏这一新鲜事物,在消费心理和习惯上需要引导和培养,尤其是在电脑网络游戏大行中国的时期。这也是一个消费对象需要被确定的问题。什么样的人会为手机游戏而消费呢?而这直接关系到这一新兴产业的存活。只有有了消费需求,才能带动整个手机游戏产业链的循环。在发展不见明朗的萌芽期,手机游戏营运方式、费用结算方式也是需要一段摸索时间的。内容提供商、电信运营商、手机终端生产商之间利益的协调还需要实践地调整。而这都是目前中国手机游戏界内无法做到的事情。手机游戏肯定会有大发展,但是,目前不适合非理智地冒进。[9]2.3.2目前国际的发展情况在国际上日本、韩国在这方面处于领先地位。日本在手机游戏领域占据了绝对的领导地位。1999年,包括北美在内的很多国家和地区对手机游戏还一无所知,日本就已拥有超过30万的手机游戏用户,占全球手机游戏用户的70%以上。2001年初,当短信游戏在全球逐步发展之时,日本NTTDoCoMo已经推出了近500款i-mode游戏。2004年4月,日本计算机娱乐协会(CESA)发表的统计报告显示,2003年日本国内利用手机上网玩游戏的用户数达897万人。日本在手机游戏领域走在世界前列的主要的原因是:其一,日本拥有庞大的移动数据业务用户群。经过近年来的不断发展,到2004年6月底,日本移动用户数已经达到8270万,其中7000万以上的用户使用移动数据业务。NTTDoCoMo的i-mode业务是世界公认的经营最成功的移动数据业务。而手机游戏作为其中的一项业务,拥有广泛的用户群。其二,日本是传统的电子游戏大国。世界传统游戏市场的巨头索尼、世嘉和任天堂都在日本,他们手中掌握了丰富的视频游戏和PC游戏资源,都可以转化为手机游戏产品。2004年,NTTDoCoMo推出了新一代FOMA手机,具有更强大的“i-appli”(Java)游戏功能。新一代FOMA手机,把软件存储区域和数据保存区域(高速缓存)的总容量提高到现有230k的2倍以上,从性能上看已经超过了任天堂GBA 掌机。这说明,随着日本手机功能的升级和无线宽带网络数据承载能力的提高,手机游戏已经对高端的游戏厂商产生了强大的吸引力,手机游戏已不再是简单游戏的代名词。到2007年,日本的手机游戏市场规模将会增长到近6亿美元。近年来,韩国网络游戏一直保持着高速增长的势头,这为手机游戏的发展奠定了良好的用户基础。与此同时,韩国的移动通信用户基础非常雄厚。2004年,在韩国总共4500万人口中,移动通信用户数已经超过了3500万。韩国政府一直在努力推动包括网络游戏和手机游戏在内的数字内容产业的发展,相应的优惠政策和充足的资金投入催生了大批的手机游戏开发商,有力推动了手机游戏内容的开发进程。与此同时,诸如NCSoft、Webzen、Nexon等韩国领先的网络游戏开发商也积极跻身移动游戏领域,而主要的移动门户运营商NHN和DAUM积极致力于移动在线交互式游戏的开发,从而促进了手机游戏内容的繁荣。虽然韩国的手机游戏产业发达,但其国内市场是有限的。为此,随着市场竞争的加剧,韩国企业致力于推动手机游戏产品的出口。目前,韩国手机游戏产品主要向美国、日本和欧洲出口,出口的市场份额分别为:美国56%、日本19.9%、欧洲12.6%、其他国家11.5%。欧洲很早就推出了手机游戏业务,但在2003年以前,欧洲手机游戏市场还主要停留在SMS和WAP游戏时代。与日韩相比,欧洲的手机游戏市场相对滞后。随着移动数据业务的不断发展和市场压力的不断加大,欧洲移动运营商已认识到改善手机游戏市场环境的必要性和紧迫性。在终端问题上,欧洲的运营商开始直接引入日韩的高端手机,打破了传统欧洲手机市场为欧洲手机厂商垄断的局面;在经营模式上,他们也采取了开放的数据业务经营模式。比如Vodafone公司就推出了VodafoneLive,通过合作分成的模式鼓励手机游戏开发商的积极参与。也有公司直接引入日本imode的运作模式和游戏内容。这些举措大大推动了欧洲手机游戏业务的发展。到2003年年底,欧洲手机游戏市场的环境已基本成熟,Java手机在欧洲已经十分普及,还出现了像N-Gage这样的专用手机游戏终端。据预测,2008年欧洲手机游戏市场达到30亿欧元,占移动娱乐内容收入的19%。美国手机游戏市场起步虽晚,但是发展却十分迅速。从2002 年秋天开始,美国大多数移动网络速度得到了提升,更加适于手机游戏业务的发展。如今,美国移动运营商每月都在推出新的游戏,手机厂商也在不断推出新的支持手机游戏的产品。从游戏提供的数量看,美国移动运营商已经大大超过了欧洲运营商。2003年,手机游戏已经成为美国众多移动数据下载应用的第一应用。IDC数据显示,2003年美国手机游戏用户渗透率为7.9%;预测到2008年,美国手机游戏渗透率将达到34.7%,达到6520万户的规模。YankeeGroup的分析师表示,美国手机游戏业务的迅速发展,使得手机平台有望成为继电脑、控制杆、掌机游戏、互联网之后的第五大游戏平台。从当今国内外形势看,我国在手机游戏制作方面还刚刚处于起步阶段,还不像日韩和欧美国家处于一个高速发展阶段。我们只是刚刚引进这一技术,但是随着时代的发展,我们应该看到手机游戏制作在中国的市场以及在中国发展的潜力。我们要相信在不久的将来,国内手机游戏市场一定回迎来一个春天的![8] 第3章游戏设计的需求分析3.1MIDP中的游戏APIMIDP是专门为互联受限设备配置设计的,它为移动设备提供了一套API集合,MIDP包含用户界面类、持久存储功能与网络功能。早在MIDP1.0版本时,是没有单独的游戏API的,在MIDP2.0后增加了一个新的专门的游戏软件包Javax.microedition.lcdui.game,顾名思义,此包中定义了游戏开发的各种类型。这个软件包是一个专门为在移动信息设备上开发游戏应用而设计的,所以又叫作游戏API。[10]它里面的成员类有以下几个:GameCanvas、Layer、LayerManager、Sprite、TiledLayer。GameCanvas是提供基本的游戏界面;Layer是一个用来表示游戏中的可视元素的抽象类;LayerManager管理一系列的Layer;Sprite是一个基本的可视元素,它本身包含了许多操作,比如将一个图片切分成若干画面帧(RowFrame),再对这些画面帧编排出一个动画序列(FrameSequence);TiledLayer是一个可以被许多图片填充的类似于表格的可视元素。[10]本论文在设计游戏过程中涉及到其中的GameCanvas类和Sprite类。[7]3.2游戏类构成在游戏中,主要的一些类构成有PocketBoxing、Boxer、Enemy、GameCanvas。其中PocketBoxing类继承了MIDlet类,用来进行MIDlet的LiveCycle控制;Boxer存储了玩家的拳击手的信息,进行拳击手的描绘;Enemy存储电脑控制的拳击手的信息,进行拳击手的描绘,它继承了Boxer类;GameCanvas继承了Canvas类,进行画面的描绘与操作。各类都是用与类名称相同的文件名来存储的。[3]各类间的关系如图3.1。 3.2.1Boxer类的实现Boxer类是用来存储玩家拳击手状态的信息,再以次为根据进行描绘。Boxer类由于与用来表现对手的Enemy类大致上是相同的,所以要以继承了Enemy类为MIDletCanvas《Interface》Runnable《Interface》CommandListenerPocketBoxingGameCanvasBoxerEnemyDefaultPackage图3.1游戏类图Fig3.1.Gamediagram前提来实现。在Boxer类的Constructor当中,会进行拳击手图像的获取。这里要准备拳击手的身体、上段防御的手腕、下段防御的手腕、上段拳击的手腕、下段拳击的手腕等五种图像。通过身体图像四种类图像的配合,就可以描绘出生动拳击手动态。3.2.2GameCanvas类的功能及特点GameCanvas类是Javax.microedition.lcdui软件包中的Cavas类的一个子类,它可以为游戏提供基本的显示功能;GameCanvas类是提供了游戏的中心属性,如游戏键当前状态的能力、双缓存绘图等;GameCanvas类是一个专门的为每一个GameCanvas实例填充初始化纯白像素的缓存器;通过调用Graphics对象可以改变缓存器中的内容。[4] 3.2.3Sprite类的功能及特点Sprite类是一个能显示几个绘图帧(frame)中的其中一帧的基本动态层;这些帧大小相同并且由一个单独的图片(image)对象提供;Sprite类可以使许多帧连续的运动,可以使一个定制的序列以任何方式被放置;另外还可以提供转化于检测方法。下面是Sprite代码样例:[1]importjavax.microedition.lcdui.game.*;importjavax.microedition.lcdui.*;publicclassTextLayerextendsSprite{Image_image;String_string;TextLayer(Imagei){super(i);}publicvoiddraw(Graphicsg)throwsNullPointerException{Graphics.LEFT);}3.3游戏角色的处理这里的游戏角色——拳击手的初始化是以将拳击手设为后退,并将生命值设为默认值为主要目的。拳击手在挥出拳之后,将会在等待一段时间后恢复原本的防御状态。为了要进行这个等待处理,使用到了Tick计数。当现在的状态为上下拳击时,就会开始Tick计数,当数到4以上的状态时就会回到原来的防御位置。这样一来就可以表现出拳击手出拳头后再回到原来防御状态的样子。 不过,在后退时挥出拳击的情况中,这里不能马上回到后退状态。要在挥出拳击后回到后退状态时,就得通过玩家自己的操作来进行了。3.4游戏中的事件处理事件可以分为:低层事件(low-levelevent)与高层事件(high-levelevent)。低层事件一般用来处理设备事件,如:按键事件、探针事件。高层事件用来处理应用中的相关事件,如:命令事件、组件状态变化事件。由于开发手机游戏时我们主要用到的是Key事件的处理方法,因为移动设备的键盘是传递用户意图的最主要的输入设备,Key事件属于低层事件。那么低层事件中用下面的两种方法来处理应用的Key事件。[2]3.4.1keyPressed方法方法keyPressed是用来处理键被按下的事件,这个方法没有与其对应的显示的听众对象(Listener),这些听众对象有系统根据实际对象缺省提供,例如后面提到的Canvas对象就是默认的key事件听众对象,它缺省地实现了KeyListener接口。简单的一个样例代码:…….publicvoidkeyPressed(intkeyCode){if(keyCode>0){//输出当前被按下键的键码System.out.println(“keyPressed”+((char)keyCode));}else{…} }当按下手机的操作键盘上的按键时,就会触发这key事件,系统并会自动调用keyPressed()方法,并且系统将捕获到的键码传递给该方法,在上面的那段代码中方法判断了所按的按键值是否大于0,如果大于0输出所按的手机键盘上的实际值,否则执行其他的操作任务。[4]3.4.2keyReleased方法可以说方法keyReleased()与上面提到的keyPressed()方法是对应的。它是用来处理手机操作键盘上的按键被释放的事件,这个方法也同样没有与之对应的显示的听众,这些听众也是由系统根据实际对象提供的。下面是一个样例代码:……publicvoidkeyReleased(intkeyCode){if(keyCode>0){//输出当前被释放键的键码System.out.println(“keyReleased”+((char)keyCode));}else{…}}……当释放手机操作键盘上被按下的按键时,则会触发这个key事件,系统并会自动交由keyReleased()方法来处理该事件,同样的上面的这段代码中,该方法判断了所按的按键值是否大于0,如果大于0则输出所释放的手机键盘上的被按下的按键的实际键值,否则执行其他的操作任务。[4]上面说的是在开发手机游戏过程中遇到的两种低层事件的方法keyPressed方法和keyReleased方法,下面就具体介绍“PocketBoxing”手机游戏的开发过程。 第4章“PocketBoxing”手机游戏开发制作4.1游戏编程众所周知,J2ME现在最流行的就是制作手机游戏,况且现在无线游戏编程现在又是一个很热门的话题,不但因为它具有极强的趣味性,更重要的是它给我们带来了无限的商机。随着JAVA手机的诞生,手机游戏编程的灵活性与轻便性使得JAVA手机游戏成为游戏市场的又一亮点。4.2格斗类手机游戏实例手机游戏有很多种类,其中格斗类游戏凭借着它的趣味性和娱乐性深受人们的青睐。如何制作一款优秀的格斗类游戏,就成为手机游戏开发人员一个最关键的问题了。4.2.1“PocketBoxing”游戏背景介绍及开发环境这里将通过一款拳击游戏来介绍格斗类手机游戏中的攻击与防御等重要因素、以及如何控制对手角色。这款游戏名字叫“PocketBoxing”。在这款游戏中,玩家所控制的拳击手将出现在屏幕的左侧,电脑所控制的拳击手则出现在屏幕的右侧。拳击手可以进行上下两种的攻击方式,以及上下阻挡防守与后退防守的防卫。当攻击命中对手时,就可以是对手角色的生命点数减少,不过不是任何的攻击方法都可以使对手的生命点数减少的。当玩家在进行上方和下方的攻击的时候,对手进行相对应防卫的时候,在对手防守状态中是不能使对手的生命点数减少的,还有一种情况就是在对手后退一步避开你的攻击的时候也同样不会减少生命点数的。 当对手的生命点数用尽的时候,玩家就获得了这一局比赛的胜利,就可以进入下一个回合。在进入下一个回合后,电脑控制的对手的生命值会恢复,同时拳击手的攻击力会加强,也就是难度会加大。相对的玩家控制的拳击手在前一回合所剩下的生命点数,也可以附加到下一回合的生命点数上去。游戏中一共有五个回合,在全部的回合中取得胜利的话就是冠军了。在中途如果被打败,就算是游戏结束了。游戏流程如图4.1:这款手机游戏是一个简单的MIDP应用程序,在这里进行开发有它需要的开发环境。MIDPlet的开发环境需要有java2SDK1.3版以上(这里使用的是JDK1.4版)与MIDP的类库、以及后述的运行前验证工具三种。在J2MEWTK中除了包括MIDP的类库、运行前验证工具之外,还会把编译与包装(JAR文件化)、JAD文件的创建、模拟器的启动等在开发MIDP需要用到的操作加以集成。当完成了JDK1.4以及J2MEWTK的安装以后,就可以开始对游戏项目进行创建了。4.2.2MIDlet的构成开发环境准备好了之后,就应该进行MIDlet的开发了。遵循MIDP规范的基本MIDPlet是组合了JAR文件与JAD文件来运行的。JAR文件是将Class文件或者是图像等集成在一起的文件,而JAD文件则用来指定JAR文件内启动MIDlet类名称或JAR文件的大小、版本等属性。移动电话的JAM(JavaApplicationManager)一开始就是将这个文件读进来后才启动MIDlet的。JAR文件虽然基本上与J2SE是相同的,不过其中所放置的列表文件内容是不一样的。列表文件中编写了许多的文件打包信息。一般来说可以在JAR文件内放置多个MIDlet,通过在JAD文件中编写MIDlet个数相等的内容,JAM就能依次判断MIDlet的数目。MIDlet文件的构成:(1)JAR(JavaARchive)文件:集成了ClassFile与图像、声音等内容的数据文件,虽然与J2SE的文件相同,但是列表的文件内容不同。 (2)JAD(JavaApplicationDescriptor)文件:指定启动的MIDlet类名称或是数据文件大小、版本等信息。(3)KDDI的地方,使用组合了JAR文件与JAD文件的KDDI专用的KJK(KDDIJavaeXtension)。4.2.3MIDlet的生命周期MIDlet的生命周期,与Applet或DoJa是不一样的东西.若想要在Applet与DoJa之间作相互的移植时,对这个生命周期的流程有越深入地了解,在进行移植的时候就会越轻松。MIDlet是以下列的生命周期来运行的:(1)当终端发出了MIDlet的运行命令时,若编写于JAD文件MIDlet有多个的时候,就让其进行选择后启动MIDlet。(2)MIDlet的Constructor被调用。(3)MIDlet#startAPP()方法被调用,启动MIDlet。(4)在终端有来电的时候MIDlet#startAPP()方法就会被调用,并让MIDlet暂停。(5)当通话结束等的时候,就再次调用MIDlet#starAPP()方法,MIDlet就会再次启动。(6)调用MIDlet#destoryAPP(boolean)方法,以将MIDlet结束。如图4.2:4.2.4MIDlet的画面显示基础MIDlet类本身由于并没有提供直接操作画面显示的功能,因此在MIDlet类的子类也没有直接操作画面显示的功能。因此,要使用管理画面显示功能的Display类。这个Display类可以让javax.microedition.lcdui.Displayable 类的子类显示在画面上。 开始按下重新启动按钮?显示暂停界面显示关卡结束界面显示标题界面按下结束按钮?按下自动按钮?1结束21显示关卡启动界面显示关卡游戏界面按下停止按钮?按下暂停按钮?过关玩家的胜利?全关卡过关?2显示关卡结束界面2显示游戏结束界面2YesNoYesYesYesYesNoNoNoYesYesNoNo图4.1游戏的流程图 Fig4.1.Theflowchartofgamesnew()PausedPausedDestroyedDestoryApp()PauseApp()StartApp()DestroyApp()图4.2MIDlet的生命周期Fig4.2.ThelifecycleofMIDletsDisplayable类的子类大致来说可以分为两种,分别用来进行线与图形、图像的低级描绘类,与用来显示警告与文本的输入、选择列表等UI组件类。前者是指javax.microedition.lcdui.Canvaslei类,用来进行低级描绘。后者是指其中的javax.microedition.lcdui.Screen类与其子类(Alert、Form、List、TextBox类等)。Displayable类与子类之间的关系如图4.34.2.5游戏项目的创建在J2MEWTK当中,是以项目这个单位来管理MIDletSuite,因此在进行程序编写前必须先要创建项目。首先要将项目取名为SimpleMIDlet。在Windows“开始”菜单启动J2MEWTK的KToolbar,启动之后,单击“Newproject”按钮。然后在“Newproject”对话框的“projectName”与“MIDletClassName”的文本框输入项目的名称“PocketBoxing”,并单击“Createproject”按钮。这样就完成了对游戏项目的创建。 ObjectDisplayableCanvasScreenAlertFormListTextBox图4.3Displayable类与子类类图Fig4.3.DisplayableandaSondiagram接着就要对程序进行编译了,说到编写程序代码首先要提到支持J2ME的开发工具。我用到的开发工具是Borland公司推出的开发工具——JBuilder9企业版。其功能非常强大,不仅可以集成化的编码、调试,还可以进行应用发布,网络调试以及版本控制等等,是一个非常不错的开发工具。4.2.6命令种类及命令处理这个游戏中要定义的命令,一共有使用在标题画面的Start、Exit命令与使用在游戏中的Pause、Resume、Quit命令共计五种。下面是这五种命令变量的程序代码:/**Start命令变量*/PrivateCommandstartCmd=newCommand(“Start”,command.SCREEN,5);/**Exit命令变量*/PrivateCommandexitCmd=newCommand(“Exit”,command.SCREEN,1); 如图4.5图4.5游戏开始界面Fig4.5.Gamebeginninginterface/**Pause命令变量*/PrivateCommandpauseCmd=newCommand(“Pause”,command.SCREEN,5);/**Resume命令变量*/PrivateCommandresumeCmd=newCommand(“Resume”,command.SCREEN,5);/**Quit命令变量*/PrivateCommandquitCmd=newCommand(“Quit”,command.SCREEN,1);如图4.6: 图4.6游戏暂停画面Fig4.6.Gamepauseappearance4.2.7游戏中的描绘处理进行描绘的doDraw(Graphicsg)方法,将会在GameCanvas类进行描绘时被调用出来。描绘位置会在GameCanvas类中先使用SetDrawX(intx)和SetDrawY(inty)方法来预先指定。在决定画面位置的时候,由于拳击手图像只有上半身,因此必须将图像的下半部分设置在画面的最下方。因此,就要准备能返回图像高度的getHeight()方法。另外,在被击倒的时候由于是以拳击手倒在地下为前提,因此将什么都不描绘。描绘处理的程序代码如下:/**存储了描绘开始的X坐标的变量*/ProtectedintdrawX;/**存储了描绘开始的Y坐标的变量*/ProtectedintdrawY;/** *设置用来进行描绘的X坐标的方法*@Paramx进行描绘的X坐标*/VoidsetdrawX(intx){this.drawX=x;}/***设置用来进行描绘的Y坐标的方法*@Paramy进行描绘的Y坐标*/VoidsetdrawY(inty){this.drawY=y;}/***返回图像高度的方法*@returnint进行描绘的图像高度*/intgetHeight(){//返回身体图像的高度returnimages[0].GetHeight();}以上是对Boxer进行的描绘,在Enemy类继承了在功能方面几乎相同的Boxer类,并承续其功能改写了getImagepaths()方法与doDraw(Graphicsg)方法,更改为进行了图像的获取以及与玩家位置相反的方向描绘。在Constructor 当中,就会调用出Boxer类的Constructor,并进行图像的读取。4.2.8游戏状态的类变量在游戏中,在GameCanvas类中定义表现游戏状态的类变量。要实现的变量将包括:标题、回合开始、回合中、回合结束、全部回合结束等变量。程序代码:/**代表标题显示状态的常量*/PrivatestaticfinalshortTITLE=0;/**代表回合开始显示状态的常量*/如图4.7图4.7回合开始画面Fig4.7.BoutbeginningappearancePrivatestaticfinalshortROUND_START=1;/**代表比赛中显示状态的常量*/如图4.8图4.8比赛中画面Fig4.8.ThegameisinsidetheappearancePrivatestaticfinalshortFIGHTING=2; /**代表回合结束显示状态的常量*/如图4.9图4.9回合结束画面Fig4.9.AtanendappearanceinboutPrivatestaticfinalshortROUND_END=9;/**代表回合过关状态的常量*/如图4.10图4.10回合过关画面Fig4.10.BoutspasstheappearancePrivatestaticfinalshortALL_ROUND_CLEAR=10;另外,除了上述提到的五种状态变量,还涉及到了代表存储现在状态的变量(gamestate)与暂停状态的标识(ispaused)。代码如下:/**存储现在显示状态的变量*/Privateshortgamestate;/**代表暂停状态的标志*/PrivateBooleanispaused;4.2.9按键事件的处理 在进行按键处理的keyPressed方法中,当不是在回合中的时候或是在回合中但暂停中的时候,由于没有必要所以不进行处理。除此之外,在拳击中也不进行任何的处理,这是因为如果在拳击当中若能做出其他动作的话会非常奇怪。当都不符合以上条件时,就要根据所按下的数字按键来更改使用者的状态。在这款游戏中按键是这样分配的:“1”后退、“4”后退、“2”上方防御、“5”下方防御、“3”上方攻击、“6”下方攻击。当为上方攻击和下方攻击时,就要调用出doLifepointCheck4Enemy()方法来根据对手的状态减少生命点数,然后根据生命点数的剩余量来结束回合。4.2.10设计存在的难点在这款游戏的设计全过程中,还是存在着一些难点的。首先在开发环境的准备过程中,J2MEWTK中所附带的模拟器除了灰阶的以外还有许多种类,虽然可以在模拟器启动后进行选择,但是要使用彩色画面的模拟器的话,则要在每次启动J2MEWTK后都得进行一次选择,所以说相当不方便。因此,就有必要将默认的模拟器变成彩色移动电话的模拟器,这样一来在启动J2MEWTK之后就不用再去选择使用彩色的模拟器了。其次,在设置默认模拟器的DefaultColarPhone的时候,其画面大小为纵向100像素、横向96像素。不过,实际上一些移动电话的终端画面都在纵向130像素、横向120像素以上,因此这个设置并不符合现实状况,所以还必须修改属性文件。最后,在编写程序代码之后,要进行验证处理,另外还要将Class文件与数据文件打包(JAR文件)在一起。要以KToolbar来进行打包时,只要从KToolbar的“project”菜单选择KToolbar的打包处理就会帮助一起进行编译以及运行前的验证处理了。以上就是对“PocketBoxing”游戏在整个制作过程中的介绍和对过程中存在的一些难点的分析。 第5章手机游戏开发过程中的困难5.1手机游戏开发存在的困难当电脑游戏被称为第九艺术,也许我们可以因此期待手机游戏会得到一个冠冕堂皇的称号——因为手机游戏已经渐渐成为游戏业继网络游戏之后,又一座富饶的“金矿”,成为游戏市场中一颗冉冉升起的新星。但是现在,用“简陋”一词来形容现今的手机游戏并不为过,因为玩家大多无法对那个手掌里的小屏幕集中太多的注意力,特别是手机游戏的分辨率还很低,很容易让人想到十几年前的红白机游戏时代。这是以时尚标榜自己的年轻人无法接受的。而且现在很多手机用户对于手机游戏的认识还停留在经典的“贪吃蛇”,所以那些所谓的手机游戏实在让人提不起什么兴趣来。在游戏开发的初期阶段,并没有传统游戏的开发者参与。移动游戏时代是从WAP游戏开始的,主要是文字,并配有少量的图形。美国的移动运营商很快地注意并分析了这些问题,他们从日本I-mode的巨大成功中获取了经验。I-mode到去年年底已经有3000万用户下载娱乐游戏,这占公司年收入的很大一部分。移动运营商推出了下一代移动电话,能够支持因特网功能。与老式的黑白文字手机相比,这些手机更加快并且功能更加强大,它们带有彩色的屏幕和因特网浏览功能,使用比大部分个人电脑拨号上网速度更快的连接速度。  虽然新手机还不是最理想的游戏平台,但它已经是个良好的开端。处理器、内存和色彩深度提供了游戏开发所需的因素。开发者正努力把其它游戏平台上的质量标准运用到这个平台上。当然了,一些问题仍然存在,然而这些问题终将被解决,就像PC平台游戏开发者使用不断改进的DirectX一样。当然在手机游戏投放市场和开发以及具体的制作过程方面还是存在的诸多的问题的。 5.1.1移动开发存在的问题开发移动游戏与传统游戏的开发有很多不同,想开发有吸引力的移动游戏尤其困难。这比开发控制台游戏或PC游戏更困难,因为众多的设备具有不同的存贮器、声音和显示性能。除此之外,你还必须合理利用J2ME这样的开发环境。  开发移动游戏需要一套与普通游戏不同的方法和思路。移动游戏的预算很小而且时间安排很短。这个平台有许多种硬件和软件的组合,并且在硬件厂商之间没有多少共同点。  第一、花费更多的时间用来设计。开发者都有想用最简捷经济的方式做事的倾向。然而,为了创作一个世界第一流水平的游戏,你就必须使用世界第一流水平的开发过程。关键步骤是设计思路、试制、生产和产品质量检测。然而,因为设备和移动运营商的多样性,开发者不得不花费更多的时间用于前期的计划。这就存在这一种风险,那就是一个设计可以用于一种设备,但是可能就不能用在另一种设备。  第二、像在PC中一样,为硬件的"最小公分母"(lowestcommondenominator)开发,这意味着你的代码不能对硬件和操作系统以及程序设计语言之间的交互抱过高幻想。第三、类似于硬件中的问题,开发两个API之间的基本功能。比较软件开发环境和围绕它们的不足进行针对性设计。开发者必须花费更多的时间了解这两个平台,但是最后的效果是很值得的。5.1.2操作环境不兼容性问题本论文讲述的移动开发环境是J2ME,J2ME是获得美国大部分移动运营商支持的移动应用开发平台。J2ME是一个解释语言,运行在有虚拟机的任何操作系统上,通常运行速度很慢,而且在优化代码上有许多的困难。在过渡期间,为这个环境开发游戏成为一种挑战。例如,BREW1.0 支持掩盖的位图传送(Masked-Blit),而J2MEMIDP1.4不支持。而且,一些J2ME手机不支持声音。所以你的代码不应该使用掩盖的位图传送支持或者声音支持。比如说,如果你创建自定义位图字体,你可能认为你需要掩盖的位图传送。然而,你可以使用提前修正背景色来创建字体位图。这两个平台可以在载入一个文件的时候改变调色板,允许动态的调整字体背景色,但是文本必须出现在固定的背景上。5.1.3显示速度方面的问题在移动游戏开发过程中,最大的问题是缺乏对显示速度的重视。虽然移动运营商已经选择了强大的处理器和彩色的显示屏,但是他们忽略了对于游戏来说至关重要的一个方面。手机使用许多绘制程序,一些支持双缓冲技术,而另一些不支持。在某些情况下,可以更容易的直接绘制到屏幕上。直接绘制到屏幕有时比双缓冲更快。然而,使用低刷新速率在屏幕上绘制大的图像可能会引起闪烁。造成这一问题的原因在于,画面在显示的同时,程序又在改变它,于是画面闪烁。5.1.4不同的屏幕尺寸问题图形是游戏的一个关键的方面,描画速度是一个重要的程序函数。不同于控制台游戏和PC游戏,移动设备没有标准的屏幕尺寸或者长宽比,这就导致了很多兼容性问题。开发者可以通过编写非常灵活的背景和前景描画程序来解决这个问题。关键是创建一个允许快速扩展或者缩小游戏视窗的架构,并且不使图像变形或者生成让人看上去觉得别扭的屏幕比例。当然,你有很多方法来处理这个问题,最坏的情况就是你可以为每种手机的显示屏重新设计图形。或者,你还可以动态地调节你的游戏背景和其它图形。5.1.5输入问题 输入要么成就要么毁掉一个游戏体验。游戏一般都需要快速响应的反馈。不然的话,你的游戏就会感觉有点迟钝。在过去,移动电话不需要能够快速响应的按键,因为拨电话号码没有那种需要。现在,这就有了一些问题,如果你的按键响应速度很慢,你的游戏反馈就会很慢,而且不幸的是没有解决办法来提高它的速度。而且,大部分的手机不支持同时按下多键,而这又是格斗类游戏所必须的。因此是否能够解决好这方面的问题就显得尤为重要了。5.2解决方案基于上述所提到的种种困难,在手机开发过程中就要有针对性的提出解决方案。在操作系统不兼容性的问题上我们可以在别的开发环境中使用面向对象的语言,这样就很能支持J2ME,因为它是一种面向对象的语言。在J2ME和其他开发环境中,任何使用JAVA写的代码都可以使用C++编写,并且可以更快更好。把所有的设备输出代码(声音、显示、输入)从游戏程序逻辑中分离出来。结构化游戏程序逻辑以便能够在J2ME和其他环境之间移植。在显示速度的方面,使用不同的绘制函数和不同尺寸的位图来一些构造绘制程序。这提供给手机快速绘屏以及最优化的方法。使用位图传送和使用固有的绘制程序如矩形填充函数来大致提高手机绘制速度。测试双缓冲和直接描画到屏幕上以及确定一个高效的图形通道。对于解决屏幕闪烁这一问题就是使用双缓冲技术,在内存中开辟一片区域作为后台画面,程序对它更新、修改,完成后再显示它。这样被显示出来的图像永远是已经完全画好的图像,程序修改的将不是正在被显示的图像。这些都是解决这一问题的有效方法。在处理不同屏幕尺寸的问题上,使用像DrawRectangle和DrawCircle这样的固有描画函数创建尽可能多的可伸缩的图形。设计游戏,让位图图形可以伸展或者缩小15%-20%,而不会影响玩游戏。在可卷轴的游戏中,根据需要扩大或者缩小可玩的区域。这样以来这个问题便迎刃而解了。最后在解决输入问题上,可以使用基于动量的控制来最小化缓慢的相应速度。设计解决同时按下多键的事件,提高帧速度,以便提高响应速度。 这样以来,只要在这些关键过程中解决好这些问题就不难做出一款高质量的手机游戏了。 第6章J2ME手机游戏前景展望6.1J2ME手机游戏的优势在手机游戏制作完成之后,其最大的优势就在于:让品质决定一切。很多人提到手机游戏都认为它前景诱人,并且通常都会有这样的想法:中国的手机用户接近2亿,如果这个市场上有10%的用户使用高端产品和服务,如果他们每人每月下载一个游戏,每个游戏收费5元,那么一年的手机市场就能轻松超过12亿元。确实,手机游戏拥有如此广泛的用户群,的确让其具有强势优势,并且一个更重要的优势在于,手机游戏将大大带动女性对于游戏的积极性,让女性朋友更容易接触游戏,更容易体会游戏带来的乐趣。  但是手机游戏的发展却并不十分明朗,大多数厂商用户仍在观望。其间WAP游戏本应掀起手机游戏的热潮,但却被技术问题限制了发展,因为大多数手机游戏玩家都只是“孤军奋战”,很难找到一起玩的人。在当前网络游戏和互动游戏大行其道的情况下,手机游戏如果还局限于一部手机肯定无法有什么大的作为,只有大力推行互动式的手机游戏才能让其真正成熟起来。所以等到3G手机时代,在更加先进的技术支持下,互动游戏得以很轻松的实现,届时真正的手机游戏时代也许就会来临。[8]  全球移动游戏业2002年的收益已经达到4.364亿美元,预计2008年将上升至93.4 亿美元。手机游戏市场越来越被看好,成为游戏业新的增长点。目前的手机游戏都是就地取材于电脑游戏,一些比较受玩家欢迎的游戏直接移植到手机上面,节约了不少成本和周转时间。世嘉、育碧这样的大型游戏厂商已相继成立手机游戏开发部门,而诺基亚、摩托罗拉等手机厂商也大力投资手机游戏及其运行平台的开发。特别是手机游戏的开发相对于电脑游戏来说,具有开发预算少、开发周期短等特点,并且针对屏幕小、键盘等不适宜游戏使用的情况,目前游戏厂商都推出了针对手机游戏的专门机型,由此我们可以看出手机的产业链已经渐渐形成,整个行业也渐渐成熟起来。但是手机游戏要进入黄金时期,却必然要先费一番周折。首先就是彩屏手机的普及问题,让所有的手机用户都具有先进的技术平台支持就需要长时间的等待。而且真正意义上先进的游戏手机还没有出现,同时还受到来自GBA等专业游戏机的“排挤”。另一个重要的考验是移动通信网络的稳定性和综合服务能力。手机游戏如果形成玩家互动形式的在线游戏,那么在运行时就会占用过多的通信网络资源,必然使得现有的网络不堪重负。然而,如果从行业发展的角度看,手机游戏的未来一定是在线游戏。[8]从上面所讲到的手机游戏具有的优势,我想手机游戏必将在以后的通信舞台上有它的用武之地的,因为随着人们生活水平的提高,手机将会逐渐成为人们生活中不可缺少的物品之一。J2ME的前景会非常广泛,并且不会只局限于游戏,还将在移动应用软件等各方面发挥重要的作用,随着科技的发展,J2ME的应用限制也将大大的得到扩展。6.2J2ME手机游戏的开发意义我们对于电脑游戏已经熟知,所以如果以这个标准来衡量手机游戏,那么手机在某种程度上可以看作是小型的计算机,它的处理能力与台式电脑的标准处理能力相比虽然很有限,但是已经能够运行一些小型的游戏。现在全世界手机用户很多,甚至已经超过电脑的普及率,并且手机更新换代的速度绝不比电脑差多少。所以手机游戏已经具有了它成长的基础,这个基础要比当年的电脑游戏稳固得多。   最早的手机游戏只能看作是一种增值服务,并不具备形成一种产业的规模。这也是一般手机用户对于手机游戏的印象,所以很多人在买手机时,并不是很看重手机的游戏功能。例如:诺基亚手机的贪吃蛇就是在手机出厂前固化在芯片中,而且用户不能再自己安装新的游戏,所以手机游戏被看成某款手机的特殊功能也就不足为奇了。[8]  虽然手机用户很多,但是目前大多数用户还在使用单色手机,这也成为手机游戏推广的最大难题。也就是说,等用户开始真正认识手机游戏的魅力,还需要很长一段时间。但是市场是不会等待的,我们现在经常看到各种手机短信游戏的广告,那就是当前比较流行的手机游戏形式――这种短信游戏是以一部手机向另一部手机发送简短的文字信息形式进行,通常的玩法是发送一条信息到某个号码,这个号码对应游戏供应商的服务器,接收这条消息,执行一些操作然后返回一条带有结果的消息到游戏者的手机中。由于它依靠用户输入文字,因此本质上它是一个命令环境,需要大量的时间来操作和等待,并且花费不菲,有些像早期的文字网络游戏。但这种游戏最多只是一种过渡而已,不是我们真正值得讨论的游戏形式。  短信之后的手机游戏会是什么样?其实手机游戏肯定会走上电脑游戏的发展之路,而且以现在游戏开发基础和用户平台的更新速度,估计手机游戏的发展速度将会是电脑游戏的几倍以上。如今的彩信和已成熟运营2年多的GPRS,即将到来的3G时代给手机游戏带来更大的发展空间,而且手机游戏的开发也将应用于各种新技术之上,让用户更容易拥有手机游戏带来的乐趣。  无线应用协议(WAP)手机已经成为目前手机市场的主流,基于WAP的游戏本质上是一个静态浏览载体,非常像一个简化的Web,是为移动电话小型特征和低带宽而专门优化的。要玩WAP游戏的话,要进入游戏供应商的URL(通常通过移动运营商门户网站的一个链接),下载并浏览一个或多个页面,选择一个菜单或者输入文字,提交数据到服务器,然后浏览更多的页面。WAP(1.x)版本使用独特的标记语言WML,允许用户下载多个页面,即卡片组。新版本的WAP(2.x)使用XHTML的一个子集,一次传递一个页面并且允许更好地控制显示格式。两种版本的WAP都提供一个比SMS 更友好的界面,而且更加便宜,只要根据使用时间付费,而不是根据信息数付费。但是它是一个静态的浏览载体,手机本身几乎不需要做任何处理过程,并且所有游戏必须通过网络,所有的操作都是在远程服务器上执行的。  WAP手机游戏已经无法满足玩家的需求,现在已经有上千万的Java手机到了消费者手中。虽然这个“爪哇”与台式机中的Java相比还有很大的限制,但是它已经极大地提高了移动电话支持游戏的能力。J2ME是一种针对移动电话和PDA这样的小型设备的Java语言,它比SMS或WAP能更好地控制界面,允许使用图形动画,可以通过无线网络连接到远程服务器。J2ME不是手机上配置的惟一的解释语言,但是它是一个许多厂商新支持的行业标准。也正是Java将手机游戏的趣味性大大提高,并且向传统的电子游戏靠拢,让手机游戏的吸引力增强,特别是手机随身携带的特点,也让其成为用户身边触手可及的掌中游戏,而不一定要拥有电脑这样的平台才能进行游戏。J2ME为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案。它也使设备制造商、服务提供商及应用开发人员为他们的用户发布新的软件应用成为可能。J2ME的出现使这些厂商有了共同遵循的技术规范,而这样做也完全符合Java“一处编译,到处运行”的基本方针,因为现在市场对软件跨平台的兼容性和安全性的要求变得日益强烈。而J2ME却能很好地解决软件跨平台得兼容性与安全性的问题。无线游戏编程现在是一个非常热门的话题,这不但是因为它具有极强的趣味性,并且它给人们带来了无限商机,大家都知道现在搞互联网游戏的公司都是业绩斐然。近年来,随着Java手机的诞生,其无可替代的灵活性与轻便性致使Java手机游戏成为游戏市场的又一亮点[9]。所以一切的一切都要从头开始,一步一个脚印地向前发展。在肯定手机游戏的前提下,共同期待一个新游戏时代的创立! 第7章结论本篇论文的主要思想是论述J2ME在手机游戏制作开发中的应用,以一款手机游戏“PocketBoxing”为实例具体讲述了运用J2ME制作手机游戏。Java本来是为嵌入式电子设备和智能家电开发的,却在网络应用中发展壮大起来,现在又“重操旧业”,大举进军智能和嵌入式家电并取得了出人意料的成功。但是,就目前而言,J2ME作为对嵌入式设备和智能家电应用领域的最佳解决方案已经成为不争的事实。现在,手机Java编程可以说在国内某些地区还是刚刚处于起步阶段,虽然国内的发展形势比不上欧美、日韩,但是我们应该看清形势,中国手机游戏市场还是存在巨大的潜力,在人们未来生活中,手机起着至关重要的作用,将成为人们生活中的一部分,而手机游戏也必将崭露它的头脚,发挥着它巨大的作用。 致谢首先感谢我的指导教师姚羽,百忙之中抽出宝贵时间在本篇论文的写作过程中给予了大量的指导点评以及对细节方面提出的整改和修复的宝贵意见。另外,还得到了大连理工大学研究生院,软件工程学院办公室的各位老师对设计完成情况的审阅,并提出了很多的意见,在此表示深深的感谢。在本论文的写作过程中,大连翻译学院的李忱对其中的英文摘要及英文文献翻译做了大量的校对工作,使得本篇论文更为完善。在设计方面得到了辽宁工学院软件工程学院张洋的大力支持,对设计的美工方面给予了大量的帮助以及在论文设计期间给予我帮助的老师和同学,在此我谨代表个人向以上的同志一并致谢! 参考文献[1]黄聪明.JAVA移动通信程序设计:J2MEMIDP[M]23-34.清华大学出版社[2]林胜利、刘华军编著.精通J2ME无线编程[M]127-128.中国铁道出版社.2004年11月[3]米川英树著,博译文化译.J2MEMIDP手机游戏程序设计[M]306-354.中国铁道出版社.2005年1月[4]LeopoldLee编著.J2ME手机编程基础[M]58-66.清华大学出版社.2003年7月[5]JamesKeogh著,潘颖王磊译.J2ME开发大全[M]155-159.清华大学出版社.2004年2月[6]张明鸣编.计算机操作英语词汇手册.东北大学出版社.2004年10月[7]CJJ.手机游戏趋势和相关J2MEAPIS http://www.yesky.com/Softchannel/72342371691929728/20040323/1779979.shtml.2004年第3期[8]Xylc.国外手机游戏发展扫描[J]67.2005年第2期 [9]WKJ.手机游戏市场发展思考[J]44.2004年第12期[10]江旭.J2ME制作技巧[J]49.电脑编程技巧与维护.2005年第6期[11]BuildingCompellingServicesforthewirelessMarketUsingJavaTechnology.   http://developers.sun.com/techtopics/mobility/getstart/articles/whyjava/.Jun.2003 英文资料翻译利用Java技术建立令人信服的无线市场服务无线技术的出现开拓了一个新的应用体系市场和以用户与企业为目标的服务。Java技术为下一代的设计提供了一种新的可能性的广泛基础。例如:加强了人机对话、丰富了使用者的界面、脱机工作、局部数据存储和计算机网络。开发商和企业利用此功能可以在无线市场上创造新的令人兴奋不已的服务。本文概述了Java技术在无线世界中带来的利益,以及Java技术如何解决了现存的各种手机所带来的挑战和应用PDA解决不断发展的计算机网络和更简便的使用安全应用的要求。Java平台Java平台,微型版本(J2ME)是Java平台的一部分;Java2标准版本(J2SE),是面向桌面系统为目标的;Java2企业版本(J2EE),是面向服务器后期成本应用。J2ME是一种聚集API,关注以客户与设置嵌入的版本,如(电视发音数字解码器、数字化体系、网关、手机和PDA)。Java平台的每个版本不同于Java虚拟机,他们充分利用了有限的资源设置,例如:手机和PDA。“一次编写,到处运行”:依靠Java字节编码的Java技术是一种由虚拟机翻译,应用程序编写的程序。它可以在同一类的系统中运行(如服务器、台式计算机系统、手机)它独立于操作系统和处理器的控制。例如:一个开发商不需要去开发和保持同一应用程序的不同版本。NokiaCommunicator在EPOC操作系统中运行,一个CompaqiPAQ运行于PocketPC,特别是对Linux操作系统的有力推动。在手机上各种处理器和操作系统中尤为重要。因此,一般来说无线通讯是在寻找一种开发平台未知性的解决方法,例如(Wap、J2ME)。安全性: 人们经常利用安全数据交换下载文件或电子邮件,其中也包括病毒。今天很少的无线网络支持标准的互联网协议,无线操作和安全问题与标准系统盘应用程序的下载有关。Java技术的特点是强有力的安全模式,在任何Java虚拟机执行任何应用文件前,会用字节编码预先核实,一旦应用程序运行,像病毒之类的文件都在沙箱外,不能接近系统资源。最后,Java应用程序可测试它的数字代码提供的应用程序,为标准数字加密带来益处,(如SSL或EllipticCurveLibraries)在包分组基础网络工作中(例如:CDPD、Mobitex、GPRS、W-CDMA)。丰富生动的用户界面:你或许记得第一个用内部Java技术制作的生动的网页,当生动的GIF文件使得这些在桌面中废弃的技术获得新生,这种移动的设计可以受益于丰富的GUIAPI,它允许不同的服务器和强迫获得应用程序的发展。网络工作意识:当Java应用程序脱机操作时,它们进行的网络工作意识是默认的。提供应用程序被动态的下载超出了网络工作。进一步说,Java的网络工作未知性在某种意义上说是Java应用系统在后期的服务超出任何网络协议的情况能够交换数据,如:GSM、CDMA、TDMA、PHS、CDPD、MoLitex等等。J2ME应用程序周期相反的,Web浏览器,可连续查询链接,提供有限的用户界面和安全性。J2ME允许应用程序被用安全的形式动态的下载到移动设计中:J2ME应用程序可以登录到Web服务器,随着用户终端它们选择通过微型浏览器或者其他的本地应用程序界面开始下载应用程序。无线操作员,内容供应商和ISV也能够推动一系列J2ME应用程序和其远程管理。Java供应体系具有担当检查各应用程序兼容性的责任。(如:J2ME特殊应用译本,手动调试有效记忆),并利用自身手动调试设备,在客户终端下,忽视所有复杂联系的一种典型的台式计算机系统。 一旦在移动设计上部署J2ME应用程序,它就会停留在所部署的位置,直到用户决定去升级或是去移动它,应用程序可以脱机工作(例如:单机游戏,数据登记应用程序)和存储本地数据,如果现存的基本浏览器存在无数的问题,可以提供更加便捷的方式。因为应用程序存在于本地连接中,用户没有任何处理潜在问题的经验,而此应用文件可以向用户界面(下拉菜单、复选框、移动图标)提供只与原始系统盘相匹配的文件。因为当应用程序的原始数据交换超出了无线网络的工作范围,用户是可以控制的,所以使其的便捷性大大提高。线路交换机在网络工作中有巨大的存储量,无线用户可以在此被每分钟记录入帐和提供更有效的数据交换,直到应用程序可以用来存储和传递机械设置到微型的潜在网络中。进一步说,J2ME应用程序可以支配任何一种无线网络基础结构,在现有的网络数据交换机上(GSM、CDMA、TDMA)给WAP网络堆置工作带来很大的优势。同样的,在J2ME提供给客户的应用程序和内部结构中,应用软件也已经准备好在基本的网络包分组中运用,允许标准互联网协议的应用,例如:HTTPoverSSL(数据加密)、IMAP(email)、LDAP(目录)。J2ME在无线设计中的优势让我们来看一下Java技术是如何与无线服务的发展相适应的,最初类似的技术是能够处理语音服务,但是大量的呼叫是不完全的,多样的无线电网络在相互竞争。今天,第二代网络工作和服务器(2GNetwork),运用数字网络和网页浏览器技术给我们带来了方便。它提供了访问数据的服务,但是,现存的Markup语言存在着许多的局限性,Markup语言是在正确方向上走的一步,但是当超出了要求范围甚至是简单的操作(如:用基础的浏览器列表进入应用系统),只提供有限的典型使用界面(基本特性、静止的黑白图像、麻烦的导航界面)的时候,基础浏览器应用系统就停止工作了。当Java技术在次环境下逐渐增加,它带来了不断增加的利益,也可解释为用户经验的增加,代替明文,应用程序和潜在的关联,在基础浏览器界面,用户提供丰富的动态挂图,快速相互作用的应用程序上网的能力。有更多趣味性和生动的下载,新的应用程序的设计。 对应用程序开发人员来说,这就意味着你能够使用你最擅长的编程语言和你最擅长的开发工具,甚至刚刚接触到的新开发环境。现在有将近超过250万的开发人员,他们已经开发了应用程序用Java编程语言,主要在服务方面。一旦这些开发人员熟知小部分的J2MEAPI,它就可以很容易的去发展小型客户机以致变换服务应用程序的数据在无线网络上。挑战对Java是一样的,无线应用协议、API小屏幕并且限制输入接口要求开发者把一些努力投入到应用用户界面的发展。在其他世界,微型的设备迫使开发者放弃坏的或者懒惰的编程技术。J2ME使哪种应用成为可能?很多人期望看见应用的新型技术被用J2ME发展。例如:外景拍摄地部队和数据保持相同,与电话功能性结合起来。结果很可能是上下文有关(直接性,位置,个人或者专业使用)的应用,迁移从那里基于性格接口去图表环境的(基于浏览器应用),假若开发者以超高水平的灵活性结束用户。请考虑演化从DOS或者主机敷用在窗子,MacOS或者Solaris生动的周围。我们仍然使用处理器,电子表格,像在过去的好时光一样给应用说明,但是因为应用的新时代利用一种更富有的图表的环境,应用更好并且容易使用。因此,期望看见J2ME开发者瞄准他们利用无线应用协议集中于应用的相同种类,这次因为用户经验适合ISV和系统强迫足够能适合他们控告的综合者。就J2ME的采用而言,预测相当好。埃文斯数据最近在500个无线应用程序开发者中处理survey2,结果很多的开发者使用Java和J2ME发展无线应用(30%)比原始系统C盘的API(手掌OS,PocketPC,EPOC)或者甚至是无线应用协议。J2ME将最迅速地进入的市场是日本市场,带有日经Access3市场今年预报40%的焊透率。NTTDoCoMo,启动装运J2ME的电话在1月结束时,已经出售100万件了,并且他们期望数目到9月底增加到300万。两主要日本无线电报务员(KDDI和J电话)将参加在夏天末之前使电话听筒能够的J2ME的部署内的DoCoMo。显而易见,预报可能使人误解,作为加Bluetooth 和3G,无线应用协议的那些经验出现。因此,真正重要的数量计划使可提供J2ME使电话成为可能的电话听筒制造商和今年PDA,以及正签署技术并且在适当的位置放将允许ISV的网络基础设施的无线电报员的数量,部署J2ME应用和服务越过他们的网络的内容提供者和公司。从它的一次写入到运转任何地方的灵活性,对它的坚固的安全特性,对它的对脱机处理和本地的数据存储的支持,对它的任何无线基础设施的影响来说,对它调整的控制数据交换,J2ME是无线应用开发的一个自然的平台。数目在外承担着J2ME的开发者行列正迅速地成长。'