毕业设计吃豆豆手机游戏的设计与开发.doc
毕业设计说明书吃豆豆手机游戏的设计与开发学生姓名: 学号: 通信技术学 院: 专 业: 指导教师: 2010年 6 月 吃豆豆手机游戏的设计与开发摘 要 随着移动电话的普及率越来越高,手机已经成为人们生活中的必需品。同时,随着科技的发展,移动电话的功能也越来越强,手机娱乐已经成为一项充满发展前景和商机的产业。虽然目前手机的处理能力与个人计算机的标准处理能力相比很有限,但是足够运行一个相对小型的游戏。本文先从Java手机游戏的背景出发,介绍了Java手机游戏的发展现状,然后从整体上介绍本吃豆人游戏开发的模型、结构分析和具体功能实现,游戏的接口和运作方式。通过对手机游戏开发,MIDP 2.0,以及JSR-184的研究,采用立即模式,运用深度优先遍历算法来随机生成游戏地图,并尽力模拟手机游戏的普遍性形式,实现一个操作简单,并有一定可玩性的完整3D手机迷宫游戏。 关键词:J2ME;MIDP 2.0;Pac-Man;立即模式(immediate mode);深度优先遍历。Eat doug cellular phone game design and development.Abstract With mobile phone penetration rate increasing, mobile phones have become a necessity in people's lives. At the same time, with the development of technology, the functions of mobile phones more and more strong, mobile entertainment has become a full development prospects and business opportunities in the industry. Although at present the handling capacity of mobile phones and personal computer processing power than the standard is very limited, but enough of a relatively small operation of the game.This article start with the background of Java mobile phone games based on the Java development of mobile phone games, and then a whole game on the Pac-Man model of development, structural analysis and specific functions to achieve, the game's interface and mode of operation. Through the development of mobile games, MIDP 2.0, and JSR-184 research, using the depth-first traversal algorithms to generate random map games, and to try to simulate the universal form of mobile games, to realize a simple operation, and funny Pac-Man maze game on mobile phone. KEY WORDS:J2ME; MIDP 2.0; Pac-Man; Immediate mode; The depth-first traversal algorithms目 录1 绪论51.1研究背景51.2研究内容62 手机游戏简介62.1 手机游戏的发展62.2 手机游戏的特点72.2.1 手机设备的优点72.2.2 手机设备的缺点72.3 手机游戏的开发82.3.1与传统游戏开发的区别82.3.2 扬长避短的开发策略93 Java和J2ME概述123.1 Java概述123.1.1 Java的历史123.1.2 Java语言特点133.2 J2ME及其体系结构概述143.2.1 J2ME简介143.2.2 J2ME 体系结构154 开发环境简介164.1 Wireless Tool Kit 简介164.2 Eclipse 开发环境的建立164.2.1 什么是Eclipse?164.2.2 Eclipse的主要组成174.2.3 什么是EclipseME?174.3 MIDP 2.0简介185 游戏的设计195.1 任务介绍195.1.1 目标195.1.2 项目背景195.1.3 运行环境205.2 功能需求205.2.1 游戏菜单设置205.2.2 游戏界面的需求205.2.3 游戏简介205.2.4 手机键盘处理事件需求205.3 游戏的具体设计205.3.1 游戏导读205.3.2 游戏目的215.3.3 设计思路215.3.4 游戏创意216 详细设计216.1程序系统结构216.2 程序结构、思想226.2.1 本程序需要解决的主要技术问题226.2.2 程序流程226.3 相关技术276.3.1 内存的优化276.3.2 内存检测器276.3.3 关于混淆器277 测试287.1 测试的过程287.1.1 测试环境287.1.2 系统测试287.2 发现的BUG及解决情况298 总结298.1 本程序的总结和展望298.2 感想29参 考 文 献31致 谢331 绪论1.1研究背景JAVA自从20世纪90年代早期诞生以来,以其强大的功能迅速为广大程序员们所接受。从2001年开始,日本的国内的移动电话开始搭载Java。使用本来就是一种程序语言的Java之后,就可以在移动电话上完成以往静态的HTML内容所无法达成的计算处理、数据存储、与服务器的通信等等。如果能利用Java上其他丰富功能,那么就可以实现更多的功能。游戏作为人们日常生活的一个重要的娱乐项目,也带动了巨大的游戏相关产业市场的发展。游戏平台从游戏机、电视游戏,到pc游戏,到手机游戏,中间经历了很多的技术的变革。随着新技术的发展和人们生活水平的提高,手机开始逐渐普及,手机以其小巧便捷,方便的特性成为人们的必备通讯工具。而基于手机平台的手机游戏也就拥有了巨大的市场空间,随着3g的开通和应用,手机游戏必将迎来新的一轮游戏热潮!随着手机游戏的发展,国内外各大开发商纷纷运用Java进行手机游戏开发。J2ME作为一种基于Java的便携设备开发平台,在各大手机开发公司得到了广泛应用。1.2研究内容本课题拟研究基于J2ME的手机游戏开发技术以及其特点,具体研究内容如1、手机游戏开发以及J2ME的基本理论和J2ME类库的使用;2、J2ME体系结构的研究;3、MIDP移动信息设备简表的研究; (1)、MIDP的目标硬件环境; (2)、MIDP应用程序; (3)、CLDC和MIDP库中的类。4、J2ME API的研究; (1)MIDlet应用程序的研究; (2)MIDlet的类库研究; (3)各事件发生器的应用。5、开发工具的应用和开发环境的设置。 其中MIDP移动信息设备简表的研究和J2ME API的研究为重点,本课题将通过一个具体的手机游戏的开发来研究2 手机游戏简介21 手机游戏的发展 在地铁、机场和车站,我们可以看见越来越多的人低头玩着手机游戏伴随不断变化的表情或皱眉或微笑。当我们购买新的手机,也会发现越来越多嵌入手机系统的娱乐功能,特别是各种精彩的游戏。手机已经成为许多人生活的一部分,人们也渐渐习惯将手机作为新的娱乐工具。越来越多的人陶醉于手机游戏带来的新鲜体验。由于手机的便携性,使得手机游戏随着手机的普及在全世界风行起来。 手机游戏的兴起与传统游戏的发展演变之路不同。这种差别已不仅仅表现为游戏终端设备的差异,而是体现在游戏传输载体以及游戏参与方式的变革。技术融合带来游戏跨平台的发展,通过网络,个人电脑、大型游戏机、家用游戏机、交互电视、手持终端设备都可以进行互动交流。不同的设备可以通过网络运行相同的游戏,游戏按照终端设备分类的界线越来越模糊。这样的变革源于技术进步,也创造出无限商机。22 手机游戏的特点2.2.1 手机设备的优点1. 庞大的潜在用户群 全球在使用的移动电话已经超过10亿部,而且这个数字每天都在不断增加。在除美国之外的各个发达国家,手机用户都比计算机用户多。手机游戏潜在的市场比其他任何平台,比如PlayStation和GameBoy都要大。2. 便携性 在控制台游戏时代,GameBoy热销的一个原因就是便携性人们可以随时随地沉浸在自己喜欢的游戏中。和游戏控制台或者PC相比,手机虽然可能不是一个理想的游戏设备,但毕竟人们总是随时随身携带,这样手机游戏很可能成为人们消遣时间的首选。3. 支持网络因为手机是网络设备,在一定限制因素下可以实现多人在线游戏。2.2.2 手机设备的缺点1. 屏幕小 虽然手机屏幕的分辨率持续提高,并且彩屏已经成为标准,但是屏幕尺寸依然很小,毕竟我们没有人乐意拿着砖块一样大的手机。另外,不同手机的屏幕大小有差异,而用户总是希望使用自己特定的手机上所有可用的屏幕空间,这样开发者不可避免需要为不同的手机移植优化同一款游戏。2. 有限的颜色和声音支持 虽然市场上彩屏手机所占份额越来越大,但手机上显示的颜色在质量和数量上与PC机上还是有很大的距离。至于音效,主要的决定因素是频响、带宽、合弦和功率,手机现有设备的播放效果还很不理想。3. 应用程序大小限制 虽然在一些新款智能手机上可以运行几兆字节的应用程序,但大部分手机只有很小的内存空间供应用程序使用。此外,对可运行的应用程序的大小还有来自运营商的其他限制。4. 等待时间长 等待时间(机器发出请求和接到响应之间所花费的时间)在计算机上是以微秒计算;在有线因特网上是以毫秒计算;而在无线网络上则要以秒计算。等待时间长是网络游戏中一直存在的一个问题。无线网络等待时间过长,就导致无法有效地开发多人快速动作游戏;然而基于回合制的多人游戏却是可行的。 还有一种特殊情况,使用蓝牙技术或其他无线局域网技术的手机可以和附近的蓝牙设备在因特网等待时间下(一般200ms400ms)通信。这样,使用具备该功能的智能手机,用户就可以和附近的移动用户一起玩多人快速动作游戏了。5. 可中断性是关键 当需要接听或拨打电话时,我们通常会中断进行中的游戏,游戏程序必须能够暂停和继续。这样的暂停既不能造成游戏问题(例如,游戏者在打电话的时候老怪仍然在移动,打死玩家扮演的角色,导致玩家输掉游戏),也不可以导致内存溢出。这些都是开发者需要在设计时给予充分考虑的问题。2.3 手机游戏的开发 2.3.1与传统游戏开发的区别1. 团队规模开发传统的PC机游戏或者控制台游戏,一般需要12到30人的开发团队。因为大部分移动游戏规模比控制台游戏小,所以一般情况下只需要3到5人的开发团队,有的时候甚至设计者和编程者可以是同一个人。2. 开发预算按照美国游戏产业的一般开发成本,传统游戏的预算往往在一百万美元到五百万美元之间,而大部分移动游戏的预算则通常低于一百万美元,在中国,这个数字将更低。由于移动电话有限的显示能力和对应用程序大小的限制,使得移动游戏的开发不必如传统游戏那样投入大量的人力财力。从某种意义上来说,这也算是一个优势。3. 开发周期开发传统游戏一般需要两到三年,而大部分移动游戏可以在几个月之内开发完毕。换句话说,开发商只要有一个小型的开发团队和一个较小的预算,就可以催生出一款专业品质的移动游戏。4. 网络设备移动电话的特性决定它是一种网络设备,虽然处理能力甚至比不上老式计算机,但是它的网络性能却更加出众,并且可支持多人游戏。5. 开放标准控制台游戏的开发商需要取得控制台游戏厂商的授权和支持,需要支付给他们“平台使用费”。而在无线应用程序世界(如同在PC游戏开发中一样),开发者则可以免费地开发任何款式的游戏。另外,这些移动游戏开发平台标准是开放的,可供开发者免费取得。6. 推广方式对于传统的游戏,玩家通常是在软件市场上购买;而移动游戏的推广,则主要是由用户从移动门户网站下载并安装。用户可以通过无线网络直接下载游戏;或者下载应用程序到计算机中,然后通过数据线传送到手机。因此,移动游戏的销售渠道不同于传统游戏,用户一般通过移动运营商的游戏菜单、手机厂商预装在手机中的游戏菜单或者无线应用程序门户网站上找到手机游戏。2.3.2 扬长避短的开发策略前面讨论了手机游戏的特点,从中可以看到,在开发手机游戏的时候需要充分发挥它的优点,同时尽量解决或回避它自身的局限性。下面列出一些供开发者考虑的因素:避免过多的等待时间。这对单人游戏来说很容易实现,但在多人游戏中开发者就需要解决等待时间长的问题。使用网络。网络不一定对于每款手机游戏都是必需的,但是玩家往往喜欢有与人竞争的感觉,即使只有一个排行榜,也会使游戏更富有吸引力。经验表明,带有交互性、协作性的游戏方式会让游戏更加受欢迎。短的游戏时间。手机用户迟早要打电话或者接电话,而且没有人愿意把所有的电量都消耗在游戏上。通常每一回合游戏应该保持在五分钟之内,当然这不是说一个完整的游戏必须在五分钟内结束,而是允许用户中断、保存和继续游戏。玩家有自己的时间表,所以作为开发者应尊重用户的选择权,方便用户在任何想玩的时候玩,想中断就中断,而不能要求用户遵循既定的时间表。尽可能地让游戏保持小型。我们发现,很多游戏玩家仍然热衷于20世纪80年代优秀的小游戏。在某些方面,技术的限制迫使我们把更多的注意力放到小型的游戏中去。做好支持多种手机的准备。作为开发者,我们至少需要使游戏支持不同的屏幕尺寸,有时还要利用特定手机的性能。由于不同的手机具有不同的硬件特性,通常同一款游戏需要开发不同的版本。为国际化做好准备。移动电话在世界范围内的应用越来越广泛,产品要进入新的市场往往需要在语言等方面本地化,这在开发的时候需要做全盘考虑。上面讨论了开发者应注意的若干因素。以第一个因素为例,如何处理等待时间长是众多移动游戏开发者面对的难题。那么等待时间长究竟对移动游戏有怎样的影响呢?下面专门进行讨论。单人游戏不需要使用网络,除非是把积分发送到排行榜或允许游戏者浏览排行榜。这种网络通信对于游戏影响不大,几秒钟的延迟不会引起用户的反感,因此实际中的大多数单人游戏不存在等待时间的困扰。在“多玩家”单人游戏中,玩家感觉他们是在玩一个多人游戏。但事实上每个人只是面对相同的游戏,仅仅在整个游戏结束或者回合结束时比较分数。当一个玩家加入游戏时,他告诉其他人自己的ID,然后开始玩单人游戏。服务器或者给每个游戏者发送一个包含相同消息的游戏状态文件,或者发送一个来自构造启动游戏状态的客户软件的代码。当一个玩家结束游戏后,游戏者的客户端程序将他的得分提交到服务器。当所有的游戏者都完成游戏后(或者超过某个时间以后),服务器告诉每个游戏者谁取得了最高分,以及每个游戏者取得的分数。这种风格的游戏在因特网上相当成功,比如AOL(美国在线)最受欢迎的游戏Slingo就是一个很好的例子。因为只有在服务器开始或者结束游戏的时候才需要交换消息,所以等待时间只有在这些时候才成为需要考虑的问题。“多玩家”多人游戏可以分为两类:一类是基于回合的游戏,另一类是“即时动作”游戏。对基于回合的游戏,游戏者进入他们的回合,并在接收结果之前需要等待一段时间。这种情况下,几秒钟的延迟是可以容忍的。常见的有两种基于回合的游戏:第一种是轮流游戏在游戏中每个游戏者按次序进入回合,如象棋、红心大战这样的经典游戏。这种游戏的缺点是游戏者在重新进入回合之前无事可做。因此,通常需要限制这种游戏的游戏者数目,这样延迟就不会长得让人难以忍受。24个游戏者是比较理想的情况。第二种是同时动作游戏。在一个同时动作游戏中,每个游戏者独立计划自己的行动。当一个游戏者就绪时,他发送指令到服务器。当服务器从所有的游戏者那里都接到指令后,分解回合,再把结果发送到每一个游戏者那里。“即时动作”游戏往往可能会持续很长时间(几天、几个星期、几个月甚至到永远)。游戏者可以在任何时候进入游戏,执行游戏中的动作。在一些游戏中,他们只能与其他同时进入游戏的用户交互;在另一些游戏中,他们也许能与任何其他游戏者交互,即使这些游戏者已经离线。由于手机硬件设备的诸多限制和性能差异,在游戏的开发和制作过程中无法天马行空般地进行创作,不得不综合考虑多方因素的平衡。下面列出的是一些关键的要素,这些要素都直接影响游戏运行的最终效果。1. 分辨率 手机的屏幕大小各有不同,从80×30像素到320×240像素,就好比在PC发展过程中的CGA、EGA乃至VGA。分辨率的高低直接影响游戏中造型的尺寸及表现力,这点每个设计人员都一定有所体会。另外,由于手机型号及操作系统的多样性,导致了同一款游戏不能不加改动地在不同的手机上运行。因此,美工设计人员要在设计之初考虑屏幕的自适应问题,比如在128×128分辨率下与200×200的分辨率下,如何做到不更换图片而显示出同样的画面效果。2. 色彩数量目前手机所能提供的色彩数量也是限制美工人员发挥的一个重要瓶颈。3. 亮度由于独特的发光原理,液晶屏幕无法达到传统显示器的亮度,这样就导致很多色彩丰富的图案在强光下不能显示出原有的效果,当手机在户外使用时表现得尤其明显。因此设计人员在设计游戏图片时一定要考虑到这一点,不能将色彩对比度设置得过于接近。另外图片设计一定要简洁明快,避免过小的图片。4. 显示速度在常使用的手机中,很多由于芯片运算速度太低,导致动画不流畅,有时甚至低于10帧/秒,这对于动画游戏而言是致命的。而且液晶屏幕本身也有显示速度问题,比如有的手机有影像“拖尾”的现象,这种情况在实际游戏中很容易造成玩家的视觉疲劳。我们通常采取局部刷帧或者避免全屏幕动画的方法来尽量达到预期效果。5. 电力 由于手机配备的是液晶屏幕,高亮度的像素显示会比一般像素显示耗电量增大,例如白色背景就要比黑色背景消耗更多的电池能量。因此对于手机游戏而言,要尽可能节省玩家的电池,这也是人性化设计的体现。3 Java和J2ME概述3.1 Java概述3.1.1 Java的历史Java,是一种可以撰寫跨平台应用软件的面向对象的程序设计语言,由Sun公司的詹姆斯·高斯林(James Gosling)等人于1990年代初开发。它最初被命名为Oak,目標設定在家用电器等小型系統的编程语言,來解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失敗之时,随着互聯網的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,在1995年5月以“Java”的名称正式发布了。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。Java编程语言的风格十分接近C+语言。继承了C+ 语言面向对象技术的核心,Java舍弃了C+语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。在Java SE 1.5版本中Java又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装拆箱等语言特性。Java不同於一般的编译執行计算机语言和解释执行计算机语言。它首先将源代码编译成字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,这同时也在一定程度上降低了Java程序的运行效率。但在J2SE1.4.2发布后,Java的執行速度有了大幅提升。与传统程序不同Sun公司在推出Java之际就将其作为一种开放的技术。全球数以万计的Java开发公司被要求所设计的Java软件必须相互兼容。“Java语言靠群体的力量而非公司的力量”是Sun公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。3.1.2 Java语言特点1.平台无关性 Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口,Java的数据类型和机器无关。2.安全性Java的编程类似C+,但舍弃了C+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。他提供了安全管理器,防止程序的非法访问。3.面向对象Java吸收了C+面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。4.分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接受信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。5.健壮性Java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。Java取消了C语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易掌握的特性,提供垃圾收集器自动回收不用的内存空间。3.2 J2ME及其体系结构概述 3.2.1 J2ME简介 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。 J2ME 在设计其规格的时候,遵循着对于各种不同的装置而造出一个单一的开发系统是没有意义的事这个基本原则。于是 J2ME 先将所有的嵌入式装置大体上区分为两种 :一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA 、手机);另外一种则是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机上盒 (set-top box)。因为这两种型态的嵌入式装置,所以Java 引入了一个叫做Configuration 的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为 Connected Device Configuration(CDC)规格。也就是说, J2ME 先把所有的嵌入式装置利用Configuration 的概念区隔成两种抽象的型态。 与J2SE和J2EE相比,J2ME总体的的运行环境和目标更加多样化,但其中每一种产品的用途却更为单一,而且资源限制也更加严格。为了在达到标准化和兼容性的同时尽量满足不同方面的需求,J2ME的架构分为Configuration、Profile和Optional Packages(可选包)。它们的组合取舍形成了具体的运行环境。 3.2.2 J2ME 体系结构当前很多资料上都将J2ME的体系划分为3个,即:Java虚拟机,配置和和简表。对于各层次的详细解释和功能如下:1) Java虚拟机在J2ME中提供了2中java虚拟机。由于JVM是java代码运行时必须的,只有任何设备上有了JVM才能很好的解释“一次编译,到处运行”的关键技术。那么在嵌入式或移动设备中也需要JVM作为操作系统和java应用程序间的接口。但是由于内存的限制,嵌入式设备的JVM也要特殊提供。 J2ME中提供的JVM分为CVM和KVM,是JVM的缩减版,KVM比CVM功能稍弱。 CVM(Compact Virtual Machine),最初是这种解释的,但是后来对于C没有任何意义了。只是CVM虚拟机主要运行在存储量较大的嵌入式设备,比如可视电话、POS收款机等。KVM是最小运行时环境的一部分,也就是用于CPU和内存较小的设备,这里的K是千字节的意思。KVM主要用于移动电话,个人数字助理(PAD)等小型设备。2) J2ME配置简介当前提供的J2ME配置有两类,CDC和CLDC。CDC(Connection Device Configuration)连接设备配置主要用于存储量较大,内存2MB以上的设备中,大多用于CVM虚拟机。其用户接口较多。网络宽带有限,所以有很多不同的简表。而其最大的特点就是支持浮点数。包含了所有CLDC中定义类和接口。CLDC(Connection Limited Device Configuration)有限连接设备设置。主要用于小型的资源较小的设备中,针对内存小于512Kb的嵌入式系统。采用KVM虚拟机。其特点是很多J2SE的类和接口没有实现,最大的特点就是不支持浮点数。3) MIDP(Mobile Information Device Profile)移动信息设备简表这里主要针对的是CLDC设备。包含3个生命周期和事件处理等机制。Paused 状态:程序处于暂停状态,方法:pauseAPP();Actived状态:程序处于运行活动状态,方法:startAPP();Destroy状态:程序运行销毁结束前的状态,方法:DestroyApp();MIDP包含其他事件处理状态和机制。4 开发环境简介4.1 Wireless Tool Kit 简介 WTK是WoldTookKit的简称,由美国的Scene8公司开发,目前的最高板本是Release10.0。它是一种在OpenGL或DirectX的基础上开发的更高层次的实时3D图形驱动系统。WTK能在Windows,UNIX,Linux等操作系统上运行。 WTK是一个C函数库,大约有1000个C函数,分别用来组织管理虚拟场景,加载、渲染模型文件,提供了丰富的2D和3D字库,直接支持数十种常用输入输出设备,提供三维立体声,实现网络分布式系统设计,支持多CPU系统。WTK为开发这屏蔽了很多开发这并不关心的细节,例如要开发一个通过6自由度空间球漫游楼房的系统,模型文件是用Creator制作的,开发者并不关心空间球和计算机是怎么通讯的,也不关心怎么把*.flt文件转化为OpenGL内渲染的小面片,更不关心怎么计算每个每个面片的法向等等,开发者只关心怎么把这个场景组建起来,运行起来。WTK让开发者完成了所有那些开发这不关心的事情,并提供了一个很好机制让开发者组建、管理它的虚拟场景。4.2 Eclipse 开发环境的建立4.2.1 什么是Eclipse? Eclipse是一个开放源代码的、与NetBeans、Sun ONE Studio和Borland Jbuilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一,IBM在最近几年里也一直在大力支持该项目的发展,目标是将其做成用以替代IBM Visual Age for Java(简称IVJ)的下一代IDE开发环境,并于2001年11月宣布投入4千万美元资金到该项目的研发。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。其未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。4.2.2 Eclipse的主要组成 Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成-Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以 CPL发布,第三方组件有各自自身的许可协议。4.2.3 什么是EclipseME?EclipseME作为Eclipse一个插件,致力于帮助开发者开发J2ME应用程序。EclipseME并不为开发者提供无线设备仿真器,而将各手机厂商的实用仿真器紧密连接到Eclipse开发环境中,为开发者提供一种无缝统一的集成开发环境。4.3 MIDP 2.0简介MIDP即移动信息简表(Mobile Information Device Profile)针对的是移动信息设备,或者体积较小、能力有限的手持设备(MID),这些设备的共性是具有用户接口即屏幕和输入机制。MIDP目标设备的典型例子就是手机。MIDP 2.0相较之前的1.0版本,加强了对用户接口、多媒体和游戏功能、网络连接功能的支持,主要包括以下几个方面: MIDP 2.0提供的游戏API使得游戏本身可以充分地利用设备自身的图形处理功能。它的出现大大简化了J2ME游戏的开发工作,同时也使开发者能够更多地控制程序的图形处理功能。 在通信方面,MIDP 1.0仅支持HTTP,MIDP 2.0增加了对HTTPS、报文、Socket通信以及串口通信的支持。此外,MIDP 2.0还支持Push体系架构,这样,手机能够收到来自服务器的报警、消息或者广播,并根据要求启动手机上的应用程序进行操作。 支持0ver-The-Air(OTA)Provisioning,它使用户能够动态地部署和更新移动设备上的应用程序。 MIDP OTA Provisioning模型为移动服务提供商提供了单一、标准地部署MIDP应用程序的途径。该模型已经被众多技术领先的移动设备制造商和服务提供商所采纳。n MIDP 2.0增加了强大的“端到端”安全模型。一方面,MIDP 2.0支持HTTPS,可以对所传输的资料进行加密;另一方面,MIDP 2.0采用了和MIDP 1.0不同的安全机制,采用安全与来确保未经授权的MIDlet套件无法访问受权限控制的数据、应用程序以及其他网络和设备资源。5 游戏的设计5.1 任务介绍5.1.1 目标 项目实现了玩家(吃豆人)躲避NPC,并吃掉豆子的所有基本功能,同时,为了满足人们的个人需求我们加入了很多游戏个性化效果。我们加入了各种背景图片以供选择,从而实现画面的美观、简洁、有吸引力;加入了音乐、音效和Flash动画效果等,从而使游戏从感官上更加吸引玩家;加入了自主设置键盘的操作,从而使操作更加简单,更容易上手,且不易失误。我们会力争使游戏具有可靠性,安全性,完整性,灵活性,开发出一款更加适合人们需求的吃豆子手机游戏。5.1.2 项目背景 吃豆人(Pac-Man)是一部由同名街机游戏移植至Atari 2600平台的游戏,最早由南梦宫公司于1980年在街机上推出,后由雅达利公司于1982年3月中旬发售Atari 2600版。雅达利公司在当年3月3日举办了雅达利国际吃豆人节,为本作的发售造势。在当时,Atari 2600(以下简称2600)是世界上最受欢迎的家用游戏主机,而吃豆人又是世界上最受欢迎的街机游戏,因此雅达利热心地推销了本游戏的2600版。但是由于移植效果很不完美,本作在发售后便广受批评,实际销量远小于预期值,即使是购买了本游戏的玩家对游戏也颇有微辞。与E.T.外星人以及其他一些来自第三方制作人的劣质游戏(如卡斯特的复仇)一道,吃豆人成为导致1983年北美家用机市场崩溃的诱因之一。因为这些游戏摧毁了普通用户对雅达利、甚至是对整个家用机游戏产业的忠诚度。本游戏低劣的移植效果被归咎于雅达利公司市场部门过于急切地试图提早发售游戏。雅达利要求其主要的程序员之一托德·福莱耶(Tod Frye)负责移植游戏,后者给他们拿出了一个事先做好的不完整版本。在试图赶在1981年圣诞节档期让游戏上市未果后,雅达利基于这个不完全版本开发了本作。雅达利生产了1200万份本游戏的卡带,并售出700万套。当时总共只卖出过1000万台2600游戏机,雅达利冀望于本游戏足以带动游戏主机的销售。当这一期待落空后,雅达利只得销毁剩下的500万套游戏卡带,导致巨额亏损。5.1.3 运行环境开发环境:windows(XP/vista/win7)+Eclipse+EclipseMe+WTK开发语言:javaCLDC: 1.0MIDP: 1.0应用程序类型:jar打包文件文档和代码版本管理:Microsoft Visual SourceSafe 20055.2 功能需求5.2.1 游戏菜单设置按游戏界面的"开始"菜单来开始游戏;"暂停"菜单暂停游戏; "结束"菜单结束游戏;"设置"菜单对游戏进行设置,实现个性化设置。5.2.2 游戏界面的需求游戏界面需求:设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,游戏的背景色是黑色,有4种不同颜色的NPC.5.