吃豆豆手机游戏的设计与开发_第1页
吃豆豆手机游戏的设计与开发_第2页
吃豆豆手机游戏的设计与开发_第3页
吃豆豆手机游戏的设计与开发_第4页
吃豆豆手机游戏的设计与开发_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业设计说明书吃豆豆手机游戏的设计与开发学生姓名学号学院专业指导教师2010年6月通信技术吃豆豆手机游戏的设计与开发摘要随着移动电话的普及率越来越高,手机已经成为人们生活中的必需品。同时,随着科技的发展,移动电话的功能也越来越强,手机娱乐已经成为一项充满发展前景和商机的产业。虽然目前手机的处理能力与个人计算机的标准处理能力相比很有限,但是足够运行一个相对小型的游戏。本文先从JAVA手机游戏的背景出发,介绍了JAVA手机游戏的发展现状,然后从整体上介绍本吃豆人游戏开发的模型、结构分析和具体功能实现,游戏的接口和运作方式。通过对手机游戏开发,MIDP20,以及JSR184的研究,采用立即模式,运用深度优先遍历算法来随机生成游戏地图,并尽力模拟手机游戏的普遍性形式,实现一个操作简单,并有一定可玩性的完整3D手机迷宫游戏。关键词J2ME;MIDP20;PACMAN;立即模式(IMMEDIATEMODE);深度优先遍历。EATDOUGCELLULARPHONEGAMEDESIGNANDDEVELOPMENTABSTRACTWITHMOBILEPHONEPENETRATIONRATEINCREASING,MOBILEPHONESHAVEBECOMEANECESSITYINPEOPLESLIVESATTHESAMETIME,WITHTHEDEVELOPMENTOFTECHNOLOGY,THEFUNCTIONSOFMOBILEPHONESMOREANDMORESTRONG,MOBILEENTERTAINMENTHASBECOMEAFULLDEVELOPMENTPROSPECTSANDBUSINESSOPPORTUNITIESINTHEINDUSTRYALTHOUGHATPRESENTTHEHANDLINGCAPACITYOFMOBILEPHONESANDPERSONALCOMPUTERPROCESSINGPOWERTHANTHESTANDARDISVERYLIMITED,BUTENOUGHOFARELATIVELYSMALLOPERATIONOFTHEGAMETHISARTICLESTARTWITHTHEBACKGROUNDOFJAVAMOBILEPHONEGAMESBASEDONTHEJAVADEVELOPMENTOFMOBILEPHONEGAMES,ANDTHENAWHOLEGAMEONTHEPACMANMODELOFDEVELOPMENT,STRUCTURALANALYSISANDSPECIFICFUNCTIONSTOACHIEVE,THEGAMESINTERFACEANDMODEOFOPERATIONTHROUGHTHEDEVELOPMENTOFMOBILEGAMES,MIDP20,ANDJSR184RESEARCH,USINGTHEDEPTHFIRSTTRAVERSALALGORITHMSTOGENERATERANDOMMAPGAMES,ANDTOTRYTOSIMULATETHEUNIVERSALFORMOFMOBILEGAMES,TOREALIZEASIMPLEOPERATION,ANDFUNNYPACMANMAZEGAMEONMOBILEPHONEKEYWORDSJ2MEMIDP20PACMANIMMEDIATEMODETHEDEPTHFIRSTTRAVERSALALGORITHMS目录1绪论511研究背景512研究内容62手机游戏简介621手机游戏的发展622手机游戏的特点7221手机设备的优点7222手机设备的缺点723手机游戏的开发8231与传统游戏开发的区别8232扬长避短的开发策略93JAVA和J2ME概述1231JAVA概述12311JAVA的历史12312JAVA语言特点1332J2ME及其体系结构概述14321J2ME简介14322J2ME体系结构154开发环境简介1641WIRELESSTOOLKIT简介1642ECLIPSE开发环境的建立16421什么是ECLIPSE16422ECLIPSE的主要组成17423什么是ECLIPSEME1743MIDP20简介185游戏的设计1951任务介绍19511目标19512项目背景19513运行环境2052功能需求20521游戏菜单设置20522游戏界面的需求20523游戏简介20524手机键盘处理事件需求2053游戏的具体设计20531游戏导读20532游戏目的21533设计思路21534游戏创意216详细设计2161程序系统结构2162程序结构、思想22621本程序需要解决的主要技术问题22622程序流程2263相关技术27631内存的优化27632内存检测器27633关于混淆器277测试2871测试的过程28711测试环境28712系统测试2872发现的BUG及解决情况298总结2981本程序的总结和展望2982感想29参考文献31致谢331绪论11研究背景JAVA自从20世纪90年代早期诞生以来,以其强大的功能迅速为广大程序员们所接受。从2001年开始,日本的国内的移动电话开始搭载JAVA。使用本来就是一种程序语言的JAVA之后,就可以在移动电话上完成以往静态的HTML内容所无法达成的计算处理、数据存储、与服务器的通信等等。如果能利用JAVA上其他丰富功能,那么就可以实现更多的功能。游戏作为人们日常生活的一个重要的娱乐项目,也带动了巨大的游戏相关产业市场的发展。游戏平台从游戏机、电视游戏,到PC游戏,到手机游戏,中间经历了很多的技术的变革。随着新技术的发展和人们生活水平的提高,手机开始逐渐普及,手机以其小巧便捷,方便的特性成为人们的必备通讯工具。而基于手机平台的手机游戏也就拥有了巨大的市场空间,随着3G的开通和应用,手机游戏必将迎来新的一轮游戏热潮随着手机游戏的发展,国内外各大开发商纷纷运用JAVA进行手机游戏开发。J2ME作为一种基于JAVA的便携设备开发平台,在各大手机开发公司得到了广泛应用。12研究内容本课题拟研究基于J2ME的手机游戏开发技术以及其特点,具体研究内容如1、手机游戏开发以及J2ME的基本理论和J2ME类库的使用;2、J2ME体系结构的研究;3、MIDP移动信息设备简表的研究;(1)、MIDP的目标硬件环境;(2)、MIDP应用程序;(3)、CLDC和MIDP库中的类。4、J2MEAPI的研究;(1)MIDLET应用程序的研究;(2)MIDLET的类库研究;(3)各事件发生器的应用。5、开发工具的应用和开发环境的设置。其中MIDP移动信息设备简表的研究和J2MEAPI的研究为重点,本课题将通过一个具体的手机游戏的开发来研究2手机游戏简介21手机游戏的发展在地铁、机场和车站,我们可以看见越来越多的人低头玩着手机游戏伴随不断变化的表情或皱眉或微笑。当我们购买新的手机,也会发现越来越多嵌入手机系统的娱乐功能,特别是各种精彩的游戏。手机已经成为许多人生活的一部分,人们也渐渐习惯将手机作为新的娱乐工具。越来越多的人陶醉于手机游戏带来的新鲜体验。由于手机的便携性,使得手机游戏随着手机的普及在全世界风行起来。手机游戏的兴起与传统游戏的发展演变之路不同。这种差别已不仅仅表现为游戏终端设备的差异,而是体现在游戏传输载体以及游戏参与方式的变革。技术融合带来游戏跨平台的发展,通过网络,个人电脑、大型游戏机、家用游戏机、交互电视、手持终端设备都可以进行互动交流。不同的设备可以通过网络运行相同的游戏,游戏按照终端设备分类的界线越来越模糊。这样的变革源于技术进步,也创造出无限商机。22手机游戏的特点221手机设备的优点1庞大的潜在用户群全球在使用的移动电话已经超过10亿部,而且这个数字每天都在不断增加。在除美国之外的各个发达国家,手机用户都比计算机用户多。手机游戏潜在的市场比其他任何平台,比如PLAYSTATION和GAMEBOY都要大。2便携性在控制台游戏时代,GAMEBOY热销的一个原因就是便携性人们可以随时随地沉浸在自己喜欢的游戏中。和游戏控制台或者PC相比,手机虽然可能不是一个理想的游戏设备,但毕竟人们总是随时随身携带,这样手机游戏很可能成为人们消遣时间的首选。3支持网络因为手机是网络设备,在一定限制因素下可以实现多人在线游戏。222手机设备的缺点1屏幕小虽然手机屏幕的分辨率持续提高,并且彩屏已经成为标准,但是屏幕尺寸依然很小,毕竟我们没有人乐意拿着砖块一样大的手机。另外,不同手机的屏幕大小有差异,而用户总是希望使用自己特定的手机上所有可用的屏幕空间,这样开发者不可避免需要为不同的手机移植优化同一款游戏。2有限的颜色和声音支持虽然市场上彩屏手机所占份额越来越大,但手机上显示的颜色在质量和数量上与PC机上还是有很大的距离。至于音效,主要的决定因素是频响、带宽、合弦和功率,手机现有设备的播放效果还很不理想。3应用程序大小限制虽然在一些新款智能手机上可以运行几兆字节的应用程序,但大部分手机只有很小的内存空间供应用程序使用。此外,对可运行的应用程序的大小还有来自运营商的其他限制。4等待时间长等待时间(机器发出请求和接到响应之间所花费的时间)在计算机上是以微秒计算;在有线因特网上是以毫秒计算;而在无线网络上则要以秒计算。等待时间长是网络游戏中一直存在的一个问题。无线网络等待时间过长,就导致无法有效地开发多人快速动作游戏;然而基于回合制的多人游戏却是可行的。还有一种特殊情况,使用蓝牙技术或其他无线局域网技术的手机可以和附近的蓝牙设备在因特网等待时间下(一般200MS400MS)通信。这样,使用具备该功能的智能手机,用户就可以和附近的移动用户一起玩多人快速动作游戏了。5可中断性是关键当需要接听或拨打电话时,我们通常会中断进行中的游戏,游戏程序必须能够暂停和继续。这样的暂停既不能造成游戏问题(例如,游戏者在打电话的时候老怪仍然在移动,打死玩家扮演的角色,导致玩家输掉游戏),也不可以导致内存溢出。这些都是开发者需要在设计时给予充分考虑的问题。23手机游戏的开发231与传统游戏开发的区别1团队规模开发传统的PC机游戏或者控制台游戏,一般需要12到30人的开发团队。因为大部分移动游戏规模比控制台游戏小,所以一般情况下只需要3到5人的开发团队,有的时候甚至设计者和编程者可以是同一个人。2开发预算按照美国游戏产业的一般开发成本,传统游戏的预算往往在一百万美元到五百万美元之间,而大部分移动游戏的预算则通常低于一百万美元,在中国,这个数字将更低。由于移动电话有限的显示能力和对应用程序大小的限制,使得移动游戏的开发不必如传统游戏那样投入大量的人力财力。从某种意义上来说,这也算是一个优势。3开发周期开发传统游戏一般需要两到三年,而大部分移动游戏可以在几个月之内开发完毕。换句话说,开发商只要有一个小型的开发团队和一个较小的预算,就可以催生出一款专业品质的移动游戏。4网络设备移动电话的特性决定它是一种网络设备,虽然处理能力甚至比不上老式计算机,但是它的网络性能却更加出众,并且可支持多人游戏。5开放标准控制台游戏的开发商需要取得控制台游戏厂商的授权和支持,需要支付给他们“平台使用费”。而在无线应用程序世界(如同在PC游戏开发中一样),开发者则可以免费地开发任何款式的游戏。另外,这些移动游戏开发平台标准是开放的,可供开发者免费取得。6推广方式对于传统的游戏,玩家通常是在软件市场上购买;而移动游戏的推广,则主要是由用户从移动门户网站下载并安装。用户可以通过无线网络直接下载游戏;或者下载应用程序到计算机中,然后通过数据线传送到手机。因此,移动游戏的销售渠道不同于传统游戏,用户一般通过移动运营商的游戏菜单、手机厂商预装在手机中的游戏菜单或者无线应用程序门户网站上找到手机游戏。232扬长避短的开发策略前面讨论了手机游戏的特点,从中可以看到,在开发手机游戏的时候需要充分发挥它的优点,同时尽量解决或回避它自身的局限性。下面列出一些供开发者考虑的因素避免过多的等待时间。这对单人游戏来说很容易实现,但在多人游戏中开发者就需要解决等待时间长的问题。使用网络。网络不一定对于每款手机游戏都是必需的,但是玩家往往喜欢有与人竞争的感觉,即使只有一个排行榜,也会使游戏更富有吸引力。经验表明,带有交互性、协作性的游戏方式会让游戏更加受欢迎。短的游戏时间。手机用户迟早要打电话或者接电话,而且没有人愿意把所有的电量都消耗在游戏上。通常每一回合游戏应该保持在五分钟之内,当然这不是说一个完整的游戏必须在五分钟内结束,而是允许用户中断、保存和继续游戏。玩家有自己的时间表,所以作为开发者应尊重用户的选择权,方便用户在任何想玩的时候玩,想中断就中断,而不能要求用户遵循既定的时间表。尽可能地让游戏保持小型。我们发现,很多游戏玩家仍然热衷于20世纪80年代优秀的小游戏。在某些方面,技术的限制迫使我们把更多的注意力放到小型的游戏中去。做好支持多种手机的准备。作为开发者,我们至少需要使游戏支持不同的屏幕尺寸,有时还要利用特定手机的性能。由于不同的手机具有不同的硬件特性,通常同一款游戏需要开发不同的版本。为国际化做好准备。移动电话在世界范围内的应用越来越广泛,产品要进入新的市场往往需要在语言等方面本地化,这在开发的时候需要做全盘考虑。上面讨论了开发者应注意的若干因素。以第一个因素为例,如何处理等待时间长是众多移动游戏开发者面对的难题。那么等待时间长究竟对移动游戏有怎样的影响呢下面专门进行讨论。单人游戏不需要使用网络,除非是把积分发送到排行榜或允许游戏者浏览排行榜。这种网络通信对于游戏影响不大,几秒钟的延迟不会引起用户的反感,因此实际中的大多数单人游戏不存在等待时间的困扰。在“多玩家”单人游戏中,玩家感觉他们是在玩一个多人游戏。但事实上每个人只是面对相同的游戏,仅仅在整个游戏结束或者回合结束时比较分数。当一个玩家加入游戏时,他告诉其他人自己的ID,然后开始玩单人游戏。服务器或者给每个游戏者发送一个包含相同消息的游戏状态文件,或者发送一个来自构造启动游戏状态的客户软件的代码。当一个玩家结束游戏后,游戏者的客户端程序将他的得分提交到服务器。当所有的游戏者都完成游戏后(或者超过某个时间以后),服务器告诉每个游戏者谁取得了最高分,以及每个游戏者取得的分数。这种风格的游戏在因特网上相当成功,比如AOL(美国在线)最受欢迎的游戏SLINGO就是一个很好的例子。因为只有在服务器开始或者结束游戏的时候才需要交换消息,所以等待时间只有在这些时候才成为需要考虑的问题。“多玩家”多人游戏可以分为两类一类是基于回合的游戏,另一类是“即时动作”游戏。对基于回合的游戏,游戏者进入他们的回合,并在接收结果之前需要等待一段时间。这种情况下,几秒钟的延迟是可以容忍的。常见的有两种基于回合的游戏第一种是轮流游戏在游戏中每个游戏者按次序进入回合,如象棋、红心大战这样的经典游戏。这种游戏的缺点是游戏者在重新进入回合之前无事可做。因此,通常需要限制这种游戏的游戏者数目,这样延迟就不会长得让人难以忍受。24个游戏者是比较理想的情况。第二种是同时动作游戏。在一个同时动作游戏中,每个游戏者独立计划自己的行动。当一个游戏者就绪时,他发送指令到服务器。当服务器从所有的游戏者那里都接到指令后,分解回合,再把结果发送到每一个游戏者那里。“即时动作”游戏往往可能会持续很长时间(几天、几个星期、几个月甚至到永远)。游戏者可以在任何时候进入游戏,执行游戏中的动作。在一些游戏中,他们只能与其他同时进入游戏的用户交互;在另一些游戏中,他们也许能与任何其他游戏者交互,即使这些游戏者已经离线。由于手机硬件设备的诸多限制和性能差异,在游戏的开发和制作过程中无法天马行空般地进行创作,不得不综合考虑多方因素的平衡。下面列出的是一些关键的要素,这些要素都直接影响游戏运行的最终效果。1分辨率手机的屏幕大小各有不同,从8030像素到320240像素,就好比在PC发展过程中的CGA、EGA乃至VGA。分辨率的高低直接影响游戏中造型的尺寸及表现力,这点每个设计人员都一定有所体会。另外,由于手机型号及操作系统的多样性,导致了同一款游戏不能不加改动地在不同的手机上运行。因此,美工设计人员要在设计之初考虑屏幕的自适应问题,比如在128128分辨率下与200200的分辨率下,如何做到不更换图片而显示出同样的画面效果。2色彩数量目前手机所能提供的色彩数量也是限制美工人员发挥的一个重要瓶颈。3亮度由于独特的发光原理,液晶屏幕无法达到传统显示器的亮度,这样就导致很多色彩丰富的图案在强光下不能显示出原有的效果,当手机在户外使用时表现得尤其明显。因此设计人员在设计游戏图片时一定要考虑到这一点,不能将色彩对比度设置得过于接近。另外图片设计一定要简洁明快,避免过小的图片。4显示速度在常使用的手机中,很多由于芯片运算速度太低,导致动画不流畅,有时甚至低于10帧/秒,这对于动画游戏而言是致命的。而且液晶屏幕本身也有显示速度问题,比如有的手机有影像“拖尾”的现象,这种情况在实际游戏中很容易造成玩家的视觉疲劳。我们通常采取局部刷帧或者避免全屏幕动画的方法来尽量达到预期效果。5电力由于手机配备的是液晶屏幕,高亮度的像素显示会比一般像素显示耗电量增大,例如白色背景就要比黑色背景消耗更多的电池能量。因此对于手机游戏而言,要尽可能节省玩家的电池,这也是人性化设计的体现。3JAVA和J2ME概述31JAVA概述311JAVA的历史JAVA,是一种可以撰寫跨平台应用软件的面向对象的程序设计语言,由SUN公司的詹姆斯高斯林(JAMESGOSLING)等人于1990年代初开发。它最初被命名为OAK,目標設定在家用电器等小型系統的编程语言,來解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,SUN放弃了该项计划。就在OAK几近失敗之时,随着互聯網的发展,SUN看到了OAK在计算机网络上的广阔应用前景,于是改造了OAK,在1995年5月以“JAVA”的名称正式发布了。JAVA伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。JAVA编程语言的风格十分接近C语言。继承了C语言面向对象技术的核心,JAVA舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(OPERATOROVERLOADING)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间。在JAVASE15版本中JAVA又引入了泛型编程(GENERICPROGRAMMING)、类型安全的枚举、不定长参数和自动装拆箱等语言特性。JAVA不同於一般的编译執行计算机语言和解释执行计算机语言。它首先将源代码编译成字节码(BYTECODE),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,这同时也在一定程度上降低了JAVA程序的运行效率。但在J2SE142发布后,JAVA的執行速度有了大幅提升。与传统程序不同SUN公司在推出JAVA之际就将其作为一种开放的技术。全球数以万计的JAVA开发公司被要求所设计的JAVA软件必须相互兼容。“JAVA语言靠群体的力量而非公司的力量”是SUN公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。312JAVA语言特点1平台无关性JAVA引进虚拟机原理,并运行于虚拟机,实现不同平台之间的JAVA接口,JAVA的数据类型和机器无关。2安全性JAVA的编程类似C,但舍弃了C的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。他提供了安全管理器,防止程序的非法访问。3面向对象JAVA吸收了C面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。4分布式JAVA建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接受信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。5健壮性JAVA致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。JAVA取消了C语言的结构、指针、DEFINE语句、多重继承、GOTO语句、操作符、重载等不易掌握的特性,提供垃圾收集器自动回收不用的内存空间。32J2ME及其体系结构概述321J2ME简介J2MEJAVA2MICROEDITION是JAVA2的一个组成部分,它与J2SE、J2EE并称。根据SUN的定义J2ME是一种高度优化的JAVA运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JAVAONEDEVELOPERCONFERENCE大会上正式推出,它将JAVA语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。J2ME在设计其规格的时候,遵循着对于各种不同的装置而造出一个单一的开发系统是没有意义的事这个基本原则。于是J2ME先将所有的嵌入式装置大体上区分为两种一种是运算功能有限、电力供应也有限的嵌入式装置比方说PDA、手机;另外一种则是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置比方说冷气机、电冰箱、电视机上盒SETTOPBOX。因为这两种型态的嵌入式装置,所以JAVA引入了一个叫做CONFIGURATION的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在CONNECTEDLIMITEDDEVICECONFIGURATIONCLDC规格之中;而另外一种装置则规范为CONNECTEDDEVICECONFIGURATIONCDC规格。也就是说,J2ME先把所有的嵌入式装置利用CONFIGURATION的概念区隔成两种抽象的型态。与J2SE和J2EE相比,J2ME总体的的运行环境和目标更加多样化,但其中每一种产品的用途却更为单一,而且资源限制也更加严格。为了在达到标准化和兼容性的同时尽量满足不同方面的需求,J2ME的架构分为CONFIGURATION、PROFILE和OPTIONALPACKAGES(可选包)。它们的组合取舍形成了具体的运行环境。322J2ME体系结构当前很多资料上都将J2ME的体系划分为3个,即JAVA虚拟机,配置和和简表。对于各层次的详细解释和功能如下1)JAVA虚拟机在J2ME中提供了2中JAVA虚拟机。由于JVM是JAVA代码运行时必须的,只有任何设备上有了JVM才能很好的解释“一次编译,到处运行”的关键技术。那么在嵌入式或移动设备中也需要JVM作为操作系统和JAVA应用程序间的接口。但是由于内存的限制,嵌入式设备的JVM也要特殊提供。J2ME中提供的JVM分为CVM和KVM,是JVM的缩减版,KVM比CVM功能稍弱。CVMCOMPACTVIRTUALMACHINE,最初是这种解释的,但是后来对于C没有任何意义了。只是CVM虚拟机主要运行在存储量较大的嵌入式设备,比如可视电话、POS收款机等。KVM是最小运行时环境的一部分,也就是用于CPU和内存较小的设备,这里的K是千字节的意思。KVM主要用于移动电话,个人数字助理PAD等小型设备。2)J2ME配置简介当前提供的J2ME配置有两类,CDC和CLDC。CDCCONNECTIONDEVICECONFIGURATION连接设备配置主要用于存储量较大,内存2MB以上的设备中,大多用于CVM虚拟机。其用户接口较多。网络宽带有限,所以有很多不同的简表。而其最大的特点就是支持浮点数。包含了所有CLDC中定义类和接口。CLDCCONNECTIONLIMITEDDEVICECONFIGURATION有限连接设备设置。主要用于小型的资源较小的设备中,针对内存小于512KB的嵌入式系统。采用KVM虚拟机。其特点是很多J2SE的类和接口没有实现,最大的特点就是不支持浮点数。3)MIDPMOBILEINFORMATIONDEVICEPROFILE移动信息设备简表这里主要针对的是CLDC设备。包含3个生命周期和事件处理等机制。PAUSED状态程序处于暂停状态,方法PAUSEAPPACTIVED状态程序处于运行活动状态,方法STARTAPPDESTROY状态程序运行销毁结束前的状态,方法DESTROYAPPMIDP包含其他事件处理状态和机制。4开发环境简介41WIRELESSTOOLKIT简介WTK是WOLDTOOKKIT的简称,由美国的SCENE8公司开发,目前的最高板本是RELEASE100。它是一种在OPENGL或DIRECTX的基础上开发的更高层次的实时3D图形驱动系统。WTK能在WINDOWS,UNIX,LINUX等操作系统上运行。WTK是一个C函数库,大约有1000个C函数,分别用来组织管理虚拟场景,加载、渲染模型文件,提供了丰富的2D和3D字库,直接支持数十种常用输入输出设备,提供三维立体声,实现网络分布式系统设计,支持多CPU系统。WTK为开发这屏蔽了很多开发这并不关心的细节,例如要开发一个通过6自由度空间球漫游楼房的系统,模型文件是用CREATOR制作的,开发者并不关心空间球和计算机是怎么通讯的,也不关心怎么把FLT文件转化为OPENGL内渲染的小面片,更不关心怎么计算每个每个面片的法向等等,开发者只关心怎么把这个场景组建起来,运行起来。WTK让开发者完成了所有那些开发这不关心的事情,并提供了一个很好机制让开发者组建、管理它的虚拟场景。42ECLIPSE开发环境的建立421什么是ECLIPSEECLIPSE是一个开放源代码的、与NETBEANS、SUNONESTUDIO和BORLANDJBUILDER类似的一种基于JAVA的整合型可扩展开发平台,也是目前最著名的开源项目之一,IBM在最近几年里也一直在大力支持该项目的发展,目标是将其做成用以替代IBMVISUALAGEFORJAVA(简称IVJ)的下一代IDE开发环境,并于2001年11月宣布投入4千万美元资金到该项目的研发。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,ECLIPSE附带了一个标准的插件集,包括JAVA开发工具(JAVADEVELOPMENTTOOLS,JDT)。其未来的目标不仅仅是成为专门开发JAVA程序的IDE环境,根据ECLIPSE的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。422ECLIPSE的主要组成ECLIPSE是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由ECLIPSE项目、ECLIPSE工具项目和ECLIPSE技术项目三个项目组成,具体包括四个部分组成ECLIPSEPLATFORM、JDT、CDT和PDE。JDT支持JAVA开发、CDT支持C开发、PDE用来支持插件开发,ECLIPSEPLATFORM则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。ECLIPSEPLATFORM允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。ECLIPSESDK(软件开发者包)是ECLIPSEPLATFORM、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到ECLIPSEPLATFORM中的工具。ECLIPSESDK由ECLIPSE项目生产的工具和来自其它开放源代码的第三方软件组合而成。ECLIPSE项目生产的软件以CPL发布,第三方组件有各自自身的许可协议。423什么是ECLIPSEMEECLIPSEME作为ECLIPSE一个插件,致力于帮助开发者开发J2ME应用程序。ECLIPSEME并不为开发者提供无线设备仿真器,而将各手机厂商的实用仿真器紧密连接到ECLIPSE开发环境中,为开发者提供一种无缝统一的集成开发环境。43MIDP20简介MIDP即移动信息简表(MOBILEINFORMATIONDEVICEPROFILE)针对的是移动信息设备,或者体积较小、能力有限的手持设备(MID),这些设备的共性是具有用户接口即屏幕和输入机制。MIDP目标设备的典型例子就是手机。MIDP20相较之前的10版本,加强了对用户接口、多媒体和游戏功能、网络连接功能的支持,主要包括以下几个方面MIDP20提供的游戏API使得游戏本身可以充分地利用设备自身的图形处理功能。它的出现大大简化了J2ME游戏的开发工作,同时也使开发者能够更多地控制程序的图形处理功能。在通信方面,MIDP10仅支持HTTP,MIDP20增加了对HTTPS、报文、SOCKET通信以及串口通信的支持。此外,MIDP20还支持PUSH体系架构,这样,手机能够收到来自服务器的报警、消息或者广播,并根据要求启动手机上的应用程序进行操作。支持0VERTHEAIR(OTA)PROVISIONING,它使用户能够动态地部署和更新移动设备上的应用程序。MIDPOTAPROVISIONING模型为移动服务提供商提供了单一、标准地部署MIDP应用程序的途径。该模型已经被众多技术领先的移动设备制造商和服务提供商所采纳。MIDP20增加了强大的“端到端”安全模型。一方面,MIDP20支持HTTPS,可以对所传输的资料进行加密;另一方面,MIDP20采用了和MIDP10不同的安全机制,采用安全与来确保未经授权的MIDLET套件无法访问受权限控制的数据、应用程序以及其他网络和设备资源。5游戏的设计51任务介绍511目标项目实现了玩家(吃豆人)躲避NPC,并吃掉豆子的所有基本功能,同时,为了满足人们的个人需求我们加入了很多游戏个性化效果。我们加入了各种背景图片以供选择,从而实现画面的美观、简洁、有吸引力;加入了音乐、音效和FLASH动画效果等,从而使游戏从感官上更加吸引玩家;加入了自主设置键盘的操作,从而使操作更加简单,更容易上手,且不易失误。我们会力争使游戏具有可靠性,安全性,完整性,灵活性,开发出一款更加适合人们需求的吃豆子手机游戏。512项目背景吃豆人(PACMAN)是一部由同名街机游戏移植至ATARI2600平台的游戏,最早由南梦宫公司于1980年在街机上推出,后由雅达利公司于1982年3月中旬发售ATARI2600版。雅达利公司在当年3月3日举办了雅达利国际吃豆人节,为本作的发售造势。在当时,ATARI2600(以下简称2600)是世界上最受欢迎的家用游戏主机,而吃豆人又是世界上最受欢迎的街机游戏,因此雅达利热心地推销了本游戏的2600版。但是由于移植效果很不完美,本作在发售后便广受批评,实际销量远小于预期值,即使是购买了本游戏的玩家对游戏也颇有微辞。与ET外星人以及其他一些来自第三方制作人的劣质游戏(如卡斯特的复仇)一道,吃豆人成为导致1983年北美家用机市场崩溃的诱因之一。因为这些游戏摧毁了普通用户对雅达利、甚至是对整个家用机游戏产业的忠诚度。本游戏低劣的移植效果被归咎于雅达利公司市场部门过于急切地试图提早发售游戏。雅达利要求其主要的程序员之一托德福莱耶(TODFRYE)负责移植游戏,后者给他们拿出了一个事先做好的不完整版本。在试图赶在1981年圣诞节档期让游戏上市未果后,雅达利基于这个不完全版本开发了本作。雅达利生产了1200万份本游戏的卡带,并售出700万套。当时总共只卖出过1000万台2600游戏机,雅达利冀望于本游戏足以带动游戏主机的销售。当这一期待落空后,雅达利只得销毁剩下的500万套游戏卡带,导致巨额亏损。513运行环境开发环境WINDOWSXP/VISTA/WIN7ECLIPSEECLIPSEMEWTK开发语言JAVACLDC10MIDP10应用程序类型JAR打包文件文档和代码版本管理MICROSOFTVISUALSOURCESAFE200552功能需求521游戏菜单设置按游戏界面的“开始“菜单来开始游戏;“暂停“菜单暂停游戏;“结束“菜单结束游戏;“设置“菜单对游戏进行设置,实现个性化设置。522游戏界面的需求游戏界面需求设计良好的游戏界面可以让玩家充分感受到游戏带来的娱乐性,游戏的背景色是黑色,有4种不同颜色的NPC523游戏简介该游戏共有三个等级初级、中级、高级。“级数“为游戏当前等级,当分数达到当前等级的最高值,等级会提升、速度会加快。玩家可以任意选择级别,当分数到达晋级分数(当前等级与下一级的分数差)后自动晋级,分数继续累加。游戏结束时,如果得分进入前八名,英雄榜将记录你的姓名、分数,并为你排名。524手机键盘处理事件需求手机键盘处理事件需求游戏开始时,可通过手机键的方向键(上、下、左、右键)对该吃豆人进行方向的移动,来躲避NPC的追击,并吃掉途中的豆子。53游戏的具体设计531游戏导读吃豆游戏的规则是黄色的大豆子代表自己,你需要把画面内所有黄色的小豆豆都吃掉,但又不能掉进陷阱,而同时又有大的绿色,橙色,粉色,红色的敌人追杀你,如果你实在逃不出敌人的魔掌,你可以吃白色的能量球,那么你就会在一定时间内处于无敌模式,可以吃掉陷阱和敌人如果全部黄色的小豆豆都吃掉了,那么恭喜你,您过关了532游戏目的通过设计对各个功能的设定,研究出适合人们玩的一款游戏533设计思路游戏的设计思路游戏创意游戏规划程序实现游戏调试534游戏创意吃豆人游戏真可谓是一款经典到家的迷你游戏了,想当年在PC机上通宵达旦的熟悉通关的技能。现如今自己可以通过学习来设置这款游戏了。游戏创意当年PC机上的吃豆游戏。6详细设计61程序系统结构本游戏的设计采用MVC模式(MODELVIEWCONTROLLER),即把本游戏的输入、处理、输出流程按照MODEL、VIEW、CONTROLLER的方式进行分离,这样本游戏的设计被分成三个层模型层、视图层、控制层。MVC模型图如下所示62程序结构、思想621本程序需要解决的主要技术问题1游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。2游戏中为了美观,适用性强,可能采用外部文件引入的图片贴图,有关贴图,在MIDP20中提供了用于增强游戏功能的GAME包,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。3玩家的运行可以通过键盘的响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;敌人的运行算法也要进行相关的设置,以免游戏过于简单。4游戏的地图不可能通过绘图来解决。否则,不仅难于控制和处理过多的元素,也会因为过多的大型图片而不能限制程序的大小,失去手机上程序的原则和JAVA的优势。5游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。622程序流程本程序中涉及到两个类,分别是EATDOT和MAINCANVAS两个。其中EATDOT是主类,而MAINCANVAS是游戏的主要设计以及算法部分。下面作简单介绍游戏的程序设计1图片的采取及颜色的绘制PUBLICMAINCANVASCOMMANDCOMMAND,COMMANDCOMMAND1SEED1/这部分是一些变量的初始化处理STATE0IMGSNEWIMAGE27GXNEWINT3GYNEWINT3GDIRNEWINT3GSTATENEWINT3GCOUNTNEWINT3GLOOKNEWINT3SLOOKNEWINT4SXNEWINT4SYNEWINT4SCOUNTNEWINT4COUNTER0FFONTGETFONT0,0,0SCORECHARSNEWCHAR6LEVELCHARSNEWCHAR2DUMMYSCORE“00000“DUMMYLEVEL“00“/SYSTEMOUTPRINTLN“MAINERROR1“STARTCOMMANDCOMMANDPAUSECOMMANDCOMMAND1/SYSTEMOUTPRINTLN“MAINERROR2“TRY/图片加载异常捕捉MAZEIMAGECREATEIMAGE“/PACMAZEPNG“FORI0I112X0W112/2W112IFH133Y0H133/2H133/SYSTEMOUTPRINTLN“MAINERROR4“BUFIMAGECREATEIMAGEW,H/创建图片MAZEBUFIMAGECREATEIMAGE112,124/绘制迷宫图片BGBUFGETGRAPHICSMGMAZEBUFGETGRAPHICS/SYSTEMOUTPRINTLN“MAINERROR4“BGSETCOLOR0,0,0/颜色设置BGFILLRECT0,0,W,H/绘制矩形框/SYSTEMOUTPRINTLN“MAINERROR5“FFONTGETFONT0,0,0FHFGETHEIGHT1IFFH10FFONTGETFONT0,0,8FHFGETHEIGHT1IFFH11FH11/SYSTEMOUTPRINTLN“MAINERROR6“BGSETFONTFMGSETFONTFFWFSTRINGWIDTHDUMMYSCORELWFSTRINGWIDTHDUMMYLEVELPREPAREINTRO/SYSTEMOUTPRINTLN“MAINERROR7“RUNNERNEWTHREADTHISRUNNERSTART/SYSTEMOUTPRINTLN“MAINERROR8“2豆豆移动时坐标设计用数组的形式来定义豆豆的移动的位置,同时我们用8,1,2,4运用深度优先遍历的方法来描述地图的生成过程。代码如下STRINGDUMMYSCORESTRINGDUMMYLEVELFINALINTDX0,0,0,1,1FINALINTDY0,1,1,0,0FINALINTOFFSX6,6,6,6,6,6,6,6,6,6,6,6,6,5,6,6,6,7,7,7,7FINALINTOFFSY2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,0,0,0,0FINALINTBONUSES8,1,2,4FINALINTDPOS0,31,31,1,13游戏按键设置在手机游戏中,当点击退出键的(EXIT)的时候,游戏会跳出游戏界面;当玩家点击开始键(START)的时候,游戏就开始了玩家跟据游戏的操作说明来操作游戏;当玩家点击暂停键(PAUSE)的时候,游戏会停留在当前位置直到玩家在次开始游戏。PUBLICEATDOT/SYSTEMOUTPRINTLN“DEBUG1“DISPLAYDISPLAYGETDISPLAYTHIS/按键设置部分EXITCOMMANDNEWCOMMAND“EXIT“,COMMANDEXIT,1/SYSTEMOUTPRINTLN“DEBUG2“STARTCOMMANDNEWCOMMAND“START“,COMMANDOK,1PAUSECOMMANDNEWCOMMAND“PAUSE“,COMMANDSTOP,1/SYSTEMOUTPRINTLN“DEBUG3“63相关技术631内存的优化手机内存空间小,所以在程序设计时应该注意以下几点,以尽量减少内存的使用(1)尽量缩短命名的长度。在应用程序内,对于所建立的类、接口、方法及变量名而言都需要赋予一个识别的名称,所命名的名称每多一个字符就会在类文件内多产生一个字节,对于一个较复杂的应用程序而言就会增加为数不小的数据量。所有这些可以借助混淆器来帮助实现(2)所有代码写为一个类。(3)只是用一个线程。4尽量不使用静态变量。(5)将PNG格式的小分辨率图像合并在一张大的高分辨率图像中,由于减少了头文件的大小,将比合并前的总大小减少许多。632内存检测器WTK提供了许多在运行状态的工具。包括呢哦村状况的检测(手机上的内存空间十分有限,必须时刻关注机载内存是否大于程度上所能使用到的最大可能的内存空间),网络状况的检测,运行函数的跟踪等。内存检测器是内存跟踪测试随时间变化的调试器。其中,允许强制垃圾回收(CARBAGECOLLECTION)。由于JAVA语言中,不像许多其他的如C语言,不需要指定回收函数中特定不使用的资源,资源回收机制将自动清空无效变量占用的空间。在程序运行中也可以调用SYSTEM类的GC()函数手动收回废弃的内存。633关于混淆器JAVA语言并没有完全编译成二进制可执行文件,编译出的CLASS文件是一种介于源程序和二进制之间的一种基于半解释的字节码,需要虚拟机来执行。他包含了所有的信息,然而这样会导致CLASS很容易被反编译为源代码,从而不能保护作者的知识成果。目前流行的如DECODE,JAD等反编译工具可以很快的速度生成源文件。如果不加以实行有效地措施,将造成严重的后果。由此引入混淆器的概念。混淆器将代码汇中的所有变量、函数、类的名称变为简短的英文字母代号,如果缺乏相应的函数名指示和程序注释,即使被反编译,也将难以阅读。混淆器的作用不仅仅是保护代码,他也有精简编译后程序大小的作用。由于以上介绍的减少变量、函数的命名长度的关系,编译后也会从CLASS文件中减少这些冗余的信息。混淆后,体积大约能减少25,这对当时费用较贵的无线网络传输是有一定意义的。7测试71测试的过程711测试环境运行环境WINDOWSXP/VISTA/WIN7ECLIPSEECLIPSEMEWTK真机CLDC10MIDP10屏幕320480可选择不同类型的真机上进行测试712系统测试1)游戏菜单选项的测试打开游戏的菜单选项,依次对程序的各个功能进行测试。若输出的命令和输入的一样,则结果正常,否则失败。2)按键事件的功能测试在游戏的过程中,通过方向键对吃豆人进行移动,如果,玩家在地图中移动并没有移出地图外,则结果正常,否则失败。测试的过程,实际上就是找不同的同学来玩这款游戏,以期望发现BUG实际上几乎每一版都会产生很多的BUG。72发现的BUG及解决情况几乎每一个计算机程序都会有这样那样的不足,尤其是未经过精心维护的非商业软件。即使是作为操作系统的各种版本的WINDOWS也时常会发生许多类型的错误和漏洞。本游戏程序对于初涉此领域的毕业课题来说尤其在开始初期,感觉逻辑复杂,难以控制,因此产生了大量BUG,其中一些BUG还没

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论