基于J2ME手机坦克大战游戏设计与开发.docx
《基于J2ME手机坦克大战游戏设计与开发.docx》由会员分享,可在线阅读,更多相关《基于J2ME手机坦克大战游戏设计与开发.docx(45页珍藏版)》请在冰豆网上搜索。
基于J2ME手机坦克大战游戏设计与开发
中文摘要
随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。
本论文着眼于J2ME技术的应用,开发一款可商用的手机游戏程序——坦克大战。
本程序的界面和运作方式继承于日本任天堂公司在20世纪80年代开发的BattleCity游戏,将老少皆宜的经典作品移植到手机上来,为更流行的硬件平台提供应用软件。
本论文先对J2ME开发环境作了一些简要的介绍,了解了关于手机游戏开发的基本流程,确定了坦克大战的整体设计思路以及基本的纲要,在基于J2ME开发平台的基础之上,运用坦克大战设计中所需要的相关技术和坦克大战每个部分的逻辑思路,对每个类之间需要具备的逻辑关系作了严谨的分析后设计出了本次坦克大战的手机游戏。
并且实现了游戏中的诸多功能:
音效,运行流畅度,道具运用,敌方坦克的智能运行等。
本次游戏设计对J2ME手机游戏的开发有了深入的了解,同时J2ME开发软件定位在消费性电子产品的应用上,对设备的只能化、多样化,提供了革命性的解决方案,并因其“WriteOnce,runanywhere”的Java特性而提高开发的效率。
关键字:
J2ME;手机游戏;JAVA;坦克大战
ABSTRACT
Whencellphoneisgettingevermoreandmorepopularnowadays,withtheimplementationofJavatechnologyonmobileequipment,incrementofcapitaloncommunicationserviceexhibitsitsforceonpeople’severydaylife,providingthemeverfastinformationjustinhand.ThisdissertationfocusesonimplementationofJ2MEtechnologyandhasdevelopedacommercialgamesuiterunonthemobilephones—Tank.ThisapplicationinheritsmanycharactersoftheoldfashionedgameBattleCitywhichdevelopedbyNintendoin1980s.Ittransportstheclassicalproducttomobilephones,offeringcorrespondingsoftwareforsuchmorepopularhardwareplatform.
ThispapergivesbriefintroductiononJ2MEdevelopmentenvironment.Wecanunderstandthebasicflowonthemobilephonegame,andconfirmtheintegraldesignthinkingandbasicoutline.Onthebasis,weregardJ2MEastheplatform,themobilephonegameoftankwarisdesigned,notonlyonapplyingtherelatedtechniqueinthedesignofthetankwarandthelogictrainofthoughtoneverypartofit,butalsoonthecriticalanalysisonthelogicalrelationshipofeachclass.Therefore,somanyfunctionsofthisgameareshowed,suchassmoothrunning,useofprops,theintelligentrunningofenemytanksandsoon.
ThroughthisgamedesignedtodeepenunderstandingoftheJ2MEmobilegamedevelopment.Bythetimeitfocusesonapplicationforconsumptiveelectronicpeopleproducts,providingrevolutionarysolutiontotheintelligentizationanddiversificationoftheequipment.Itimprovestheefficiencyofthedevelopmentprocessthankstoits“WriteOnce,runanywhere”nature.
Keywords:
J2ME;mobilegame;Java;tankBattleCity
第一章前言
1.1研究的背景与意义
近年来随着移动通信技术的突飞猛进,移动开发这个新鲜的字眼慢慢成为开发者关注的热点。
在中国最大的软件开发人员网站CSDN的最近一份调查显示,有24.34%的受访者涉足嵌入式/移动设备应用开发,这个数字可能略高于实际的比例,但也足可说明嵌入式/移动设备应用开发是一块诱人的新鲜奶酪。
目前的移动开发技术大体分为三个阵营:
首当其冲的便是由SUN公司提出的,与具体操作系统无关的,已得到各种设备广泛支持的J2ME技术,还有就是主要由NOKIA公司倡导的,主要使用C++语言的基于Symbian操作系统的开放应用平台,以及微软力推的主要使用C#配合.NETCF进行开发的WindowsMobileSmartPhone平台。
在目前的移动设备应用开发中,在提供个人娱乐方面的手机游戏开发应用正变得越来越流行。
据信息产业部的统计数据,自从2006年10月开始,我国手机用户总量就达4.5亿户,新增用户量达到5561.5万,截止至2012年我国手机用户总数突破12亿大关。
中国作为全球最大的移动通信市场,手机游戏产业一旦启动,其能量将不亚于目前的电脑网络游戏,可以预见手机游戏行业正蕴藏了无数的商机,未来拥有广阔的市场前景。
游戏的设计开发是一项综合性的工程,一个游戏的设计开发需要多学科团队的参与,其基本的要素有三:
设计(Idea)、技术(Technology)和过程(Process)。
要设计开发出一款高品质的游戏,上面的三个要素是缺一不可的。
如果缺了设计,开发出来的游戏只是在各种技术的演示而已。
而缺了技术,则设计就无法实现。
如果是缺少了过程的控制,开发出来的游戏可能BUG无数,项目拖期,开发成本超出预算。
以上三要素是游戏设计与开发的三大基石。
现代的游戏产业中,职业分工也是越来越明晰,对各个专业知识的深度要求都是特别严格,程序设计师、艺术设计师、游戏策划师、音效工程师各司其职[1]。
本文主要从游戏开发中的技术要素角度入手研究手机游戏开发技术,基于目前主流的J2ME移动开发平台,研究如何在系统资源和处理速度相当有限的移动设备上开发出高效的游戏应用软件,进而比较高效的实现手机游戏开发中较为常用的关键技术,在目前手机游戏市场飞速发展的趋势下,是有着相当的现实意义和价值的研究课题。
1.2手机游戏产业发展现状与趋势
1.2.1国际手机游戏产业发展现状
全球手机游戏业务发展可分为两个阶段,以跨世纪为分界,之前移动游戏处于起步阶段,之后步入了大发展阶段。
其实手机游戏业务最早发源于欧洲,但是欧洲运营商对手机游戏市场的重视不足,没有把握好手机游戏市场发展的大好时机。
而日韩运营商较早认识到了手机游戏的价值,并借助国内信息产业飞速发展的机会,铺设了高速的移动数据传输网络并开始提供高性能的手机终端,并创造了运营商与游戏提供商之间良好的合作模式,日韩的手机游戏市场因此迅速发展起来。
日韩还涌现了众多实力强劲的手机游戏内容提供商,如日本CYBIRD和韩国Com2Us,而传统的游戏厂商如世嘉和索尼在一开始就加入了手机游戏内容提供商的行列。
前几年,欧洲的运营商意识到了手机游戏市场的广阔前景及其自身与日韩运营商之间的差距,开始急起直追,手机游戏市场日渐活跃。
1.2.2国内手机游戏产业发展现状
相比日韩等国,中国的手机游戏市场起步比较晚,但发展势头却十分强劲,中国有一个巨大的手机用户群,手机游戏拥有广阔的市场前景。
自从2003年中国移动专门推出具有游戏服务功能的百宝箱业务以来,国内手机游戏用户数量增长迅速,至2010年,在线注册用户已经超过了8000万人[2]。
中国联通也推出了基于Java和BREW平台的手机游戏业务,手机游戏业务发展步伐不断加快。
虽然目前手机游戏用户数占移动用户的比例还不是很大,但随着手机游戏产业发展环境的日益成熟,其发展速度将一日千里。
手机游戏类型也从早期的嵌入式游戏、短信游戏、WAP游戏、单机JAVA游戏再到网络JAVA游戏,手机游戏产业在内容的不断丰富中初显雏形。
它已经成为继短信之后,无线增值服务的又一座“金矿”。
截止目前,我国手机的使用量已突破10亿。
这一数字不仅让中国成为世界上最大的手机消费国,更为重要的是,它也为手机游戏产业的发展带来了广阔的受众基础。
以此推算,手机游戏产业的爆发力可谓巨大;随着人们对手机游戏的认可和相关服务水平的不断提高,用户的消费动机也逐渐由被动走向主动,极大地促进了该产业的发展。
同时基于J2ME相较于传统的手机开发模式有极大地优势:
应用程序可自行下载;Java技术提供了类库,它使得应用开发商可以创建更丰富的用户界面;可以下载到本地直接运行,优化了带宽,等等。
使得手机游戏的开发前景无限光明[3]。
1.3游戏背景介绍和论文来源与创新点
1.游戏背景介绍
FC(FamilyComputer)主机在欧美又称NintendoEntertainmentSystem(可译作任天堂娱乐平台即NES)。
FC主机在游戏业界造成的巨大冲击众所周知,这款主机在当时事实上几乎占领了世界各地多个国家的整个游戏市场,并使得逐渐没落的北美游戏市场再度复苏。
这款主机的性能比当时的多数主机都要强大,而价格上却便宜得多。
主机所采用得处理器为CMOS6502,一款已经淘汰的70年代中期产品。
由于其价格便宜且极易使用,经过任天堂的改造后又焕发了全新活力。
BattleCity是其发售卡带中的一款力作,设置了20个关卡,可以双人操纵画面设置了若干种类的建筑物和阻挡物,以消灭所有敌人为通关条件,并有接宝物等增加游戏效果的设置,画面精美,音效杰出,在PC机的80386处理器仍未面世的当时,能在硬件上运行这样的2D程序不得不令人惊叹,难怪常有人说游戏程序是最大限度发挥硬件水平的载体[4]。
其游戏界面如图1和图2所示。
图180年代中期的FC机器
图2BattleCity的界面
2.论文来源
论文以在校期间学习的J2ME平台手机软件开发为背景,结合自身比较感兴趣的游戏开发方向,围绕目前应用广泛的J2ME的移动平台下的游戏开发关键技术为主题,在对J2ME平台下的手机游戏开发技术进行了全面研究的基础上,重点深入分析研究了手机游戏通用框架,以及开发运行一款简单的手机游戏,在J2ME平台上完成设计实现,并获得了比较满意的运行效果。
3.游戏创新点
对手机游戏开发中的几项关键技术进行应用研究,在目前手机游戏应用最广泛、通用性最好的J2ME开发平台上设计实现了:
⑴手机游戏通用框架
⑵游戏滚屏
1.4论文组织结构
论文具体的章节安排如下:
第一章绪论论述了本文的研究背景和意义,探讨了手机游戏业务的国内外发展现状。
介绍论文的主要内容创新点及结构安排。
第二章J2ME移动开发平台概述研究并探讨了J2ME平台的特性及其体系结构。
重点介绍了连接受限设备配置(CLDC)和移动信息设备简表规范(MIDP),最后介绍的是J2ME应用程序的开发流程。
第三章坦克大战的设计流程和设计思路。
首先介绍了坦克大战手机游戏的设计流程,初步了解整个程序的实现逻辑思维,接下来是对坦克大战的坦克设计思路和子弹的设计思路做了详细的介绍。
第四章是主要研究和坦克大战游戏想关的技术。
主要包括程序所需要解决的问题,以及在坦克大战的具体实现过程中我们所用到的绘图技术和程序所需要的应用技术比如:
内存使用的最佳化和混淆器的使用。
第五章是对程序进行分析和全面解读,从进入程序的画面开始,一步步分析程序的流程走向,已经过程中涉及到的每个类,分析每个类的作用,比如说敌方英雄类和坦克类等等。
第六章主要是对本次论文程序设计的测试与分析,通过程序代码的分析讨论以及该实现的功能,对比游戏所呈现的每个界面,从而得出结论。
第七章总结与展望对全文的工作进行了总结,并对下一步的工作和J2ME移动应用开发的前景进行的了展望。
1.5本章小结
本章是对坦克大战手机游戏的设计现做的一份调查和计划表,这样对程序制作有了更加深入的了解,在此基础上使程序的制作流程更加紧密和流畅。
第二章游戏开发环境概述
2.1开发环境
操作系统:
MicrosoftWindowsXP
程序语言:
Java2platformMicroEdition
JAVA平台:
j2sdk1.4.2_12.exe
J2ME插件:
eclipseme.feature_1.7.9_site.zip
开发集成平台:
eclipse3.2简体中文版
模拟器:
sun_java_wireless_toolkit2.2.exe
2.2J2ME平台简介
Java2技术是一系列产品的集合,目前主要包括Java2平台标准版(Java2platformStandardEdition,J2SE)、Java2平台企业版(Java2platformEnterpriseEdition,J2EE)、Java2平台微型版(Java2platformMicroEdition,J2ME)和Java卡平台[5]。
J2ME的全称是Java2PlatformMicroEdition,即Java2平台微型版。
J2ME是SUN公司的Java版本之一,它提供了灵活的图形用户界面、健全的安全模型、广泛的联网协议支持。
J2ME不是一个单独的技术规范,而是一系列技术规范的总称,J2ME适用于这些设备的同时也保留了JAVA的传统特性,即在任何时间,任何地点的任何代码具有可移植性,部署灵活性,安全的网络传输性,以及代码稳定性,所以开发人员才可以编写程序运行在其他厂商设备上,它主要以消费类产品和嵌入式设备为目标,包括各种电子产品,如移动电话、PDA、电视机顶盒和其他小型设备等。
自从J2ME发布以来,已经有600多家公司加入这方面的开发,包括NOKIA、MOTOROLA、PALM和RIM等知名大公司[6]。
J2ME平台为嵌入式消费类产品提供了一个通用的开发平台,很大程度上的改变了长期以来嵌入式软件开发的封闭性,降低了嵌入式软件开发的门槛,同时极大的提高了嵌入式软件开发的效率。
特别值得关注的是J2ME与J2SE、J2EE一起,为无线应用的客户端和服务器端提供了完整的开发、部署环境。
为移动互联引入了一种新的模式,允许移动智能设备可以从互联网上下载各种应用程序,并在本地设备上创建各自的环境来运行这些应用程序。
由此,为软件开发商在移动通信领域创造了巨大的商业机会,用户在得到丰富应用体验的同时,也大大提高了运营商的网络流量。
2.3J2ME平台的体系结构
由于J2ME是用于消费类电子产品提供应用开发服务的,而这些电子产品和设备在软件和硬件特性上都存在巨大的差异,很难用一种规范将其统一起来。
所以J2ME专家组采用了非常灵活的设计来构造J2ME平台的体系结构[7],具体有如图3
可选包
简表
配置
虚拟机
本地操作系统
图3J2ME平台体质结构
本地操作系统:
位于J2ME体系结构的最底层,由于Java语言的跨平台特性,所以操作系统可以是Linux、Symbian、PalmOS等。
Java虚拟机(JVM):
针对设备本地操作系统定制的Java虚拟机的实现,支持特定的J2ME配置。
根据需要提供的功能不同,目前主要有两类虚拟机:
专门为资源十分受限的小型嵌入式设备设计的KVM(KiloVirtualMachine,KVM)和为性能相对较强的嵌入式设备设计的CVM(CompactVirtualMachine,CVM)。
配置(Configuration):
对大量软硬件特性不同的嵌入式设备,根据其外观和性能特点进行分类,提取其中共性形成的一套规范称之为配置。
目前J2ME平台主要包括两个配置:
连接设备配置(ConnectedDeviceConfiguration,CDC)和连接受限设备配置(ConnectedLimitedDeviceConfiguration,CLDC)。
CLDC由两部分组成:
为应用程序提供的最小Java语言类库和适合在资源受限设备上运行的Java虚拟机(KVM)。
简表(Profiles):
位于配置之上,为运行环境提供高层的API,例如,应用程序模型和图形用户界面等。
目前CLDC上应用最为广泛的是移动信息设备简表(MobileInformationDeviceProfile,MIDP)。
MIDP提供核心应用程序功能,包括用户界面,网络连接,本地数据存储和应用程序生命周期管理。
本文应用开发就是基于J2ME平台上的CLDC配置和MIDP简表的[8]。
可选包(OptionalPackage):
用于扩展J2ME的功能,由于是针对特殊技术的实现,所以不适合做为一项特性定义到MIDP中,而采用了可选包的形式来提供。
比较常见的可选包有无线消息API(WirelessMessagingAPI,JSR120),移动多媒体API(MobileMediaAPI,JSR135)和WEB服务API(WebServiceAPI,JSR172)等。
2.4J2ME应用程序开发流程
因为J2ME是开发移动设备上的应用程序,所以不同于J2SE程序的开发流程,从编写好JAVA源文件到生成可以运行的应用程序并最终安装部署到移动设备上,还要继续进行编译、预校验、打包等几步工作,具体的开发流程如图4所示[9]
图4J2ME程序开发流程
(1)编译:
使用由Sun公司编写的编译器javac.exe将编制的*.java文件,编译成为二进制的*.class文件。
(2)混淆(可选):
利用混淆工具,将方法名、类名改成没有实际意义的特定的字符及代号,增加阅读的难度。
从而起到保护知识产权和减少程序大小的作用。
混淆器通常都是第三方软件开发商提供的,许多都是开源的,可以免费使用。
比较常用的是ProGuard。
(3)预校验:
在完成编译后,必须要对*.class文件进行预校验,这和传统的Java程序(Applet、Servlet)是不同的。
因为class在传输过程中容易损坏或是被篡改,传统的Java程序在运行前,都在本地机器上对.class进行ByteCode的校验。
而对于手机这样的资源有限设备而言,在手机上进行大量的此类的校验无疑是极为浪费资源的。
因此,先在PC机上使用preverify.exe进行一部份预先校验工作,这样,需要在手机上进行的校验工作就大量减少了[10]。
(4)打包并编写描述文件:
使用jar.exe对通过预校验的*.class文件进行打包,打包后将获得MIDP认可的可执行jar文件。
接下来为jar文件编写一个以jad为后缀的描述文件。
最后通过各种途径将jar文件、jad描述文件传输到移动设备上运行即可。
(5)在模拟器或手机上安装运行:
在生成了应用程序的jar及jad文件后,就可以把它们放到模拟器或手机上运行了。
对于如何将其部署到到手机上,根据手机的功能不同,通常可以选择如下方法:
使用数据线、使用红外线、使用蓝牙或者使用OTA技术下载安装。
2.5本章小结
本章首先给出了本次毕业设计所用到的系统编程软件和环境,接着对J2ME有了一个简单的描述,其次是对J2ME平台的体系结构进行了比较系统的研究,最后着重论述了J2ME移动应用程序的开发流程及部署方法。
第三章坦克大战的设计流程和设计思路
3.1坦克大战手机游戏的设计流程
3.1.1一般游戏的开发流程
手机游戏的开发不同于一般应用程序,它受到手机本身的限制,开发人员使用现有的技术去实现,采用合理的开发流程非常重要,下面来介绍下手机游戏的简要开发流程:
(1)提出方案:
创意的产生。
(2)方案分析:
市场商业评估与开发难度评估。
(3)概要设计:
策划具体的游戏方案。
(4)详细设计:
包括框架设计、图像设计、具体方案、初步测试等。
(5)品质管理:
跟踪质量评估,发布最终稳定产品。
3.1.2坦克大战的开发流程
MIDletsuite是MIDP应用程序的最小单位,JAM负责将手机内的MIDletsuite以图形化的方式呈现,让用户能够选取欲执行的MIDletsuite,一旦选取了某个MIDletsuite,操作系统就会激活KVM执行里面的MIDlet。
MIDlet及相关的支持类组成了MIDP应用程序的实际内容。
图5MIDlet的流程
每个MIDlet都必须继承javax.microedition.midlet,这个MIDlet抽象类。
在MIDP规格中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其中的一个状态。
这三种状态的转换关系如图所示[11]
下面就是主程序逻辑图
开始
创建程序主体框架,定义游戏的变量与实例
定义游戏的变量与实例
显示游戏选项菜单
选择exit
游戏说明
难度选择
选择PLAY
选择游戏难度
显示说明信息
按下确定键
显示下一关菜单
读取场景,设置玩家初始位置
按下开火键
按下方向键
YY
玩家坦克发射子弹
移动玩家坦克
NN
逻辑操作
敌方坦克随即移动并随即发射子弹
随即产生新的坦克
炸弹自动飞行,爆炸后自动播放
对各种对象间的碰撞进行检测
根据检测结构对各个对象进行处理
对摧毁坦克数量与游戏结束的标志进行设置
显示游戏画面
玩家失败
玩家胜利
返回主界面
进入下一关游戏
N
图6坦克大战主程序流程图
结束游戏,退出
本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。
运行程序后允许用户选择执行选项菜单,在开始游戏后将先从外部文件载入地图文件,对背景的所有物体进行绘图。
在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。
用户控制的坦克运行在主线程中,随屏幕刷新的频率而步进。
敌方坦克将在游戏开始时逐渐新增线程,每增加一个敌方对象就新增加一条线程,一旦线程数满到最大值(本程序暂设置为5和7),就不允许敌人再继续出现。
用户坦克自诞生之时起将拥有一发子弹,子弹虽然开在单独的线程中,但运行结束后(比如撞到相关物体或敌方坦克时)并不结束子弹对象,只是将其线程终止。
用户再次发射子弹时只是将终止的线程再次激活。
在屏幕重绘的主程序中,将在每次的循环中判断若干事件。
以便程序进入相关的分支执行相关的