




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计说明书拆房子手机游戏的设计与开发学生姓名: 学号: 学 院: 软件学院 专 业: 通信技术 指导教师: 董理 2010年 6月中北大学2010届毕业设计说明书拆房子手机游戏的设计与开发摘 要j2me虚拟机在手机上的普及为手机游戏的发展提供了最适合的土壤,随着midp 2.0的发布,使得手机游戏开发者可以更专注于游戏性的增强而不再是繁琐的动画处理与地图设计。随着社会节奏的加快,平常工作的竞争强度也加大,生活的压力也跟着加重,所以休息时或下班后大家都需要个休闲的娱乐工具,来放松自己,缓解自己的压力,消除紧张的疲劳状态。拆房子游戏是一种易趣休闲的小游戏,不仅能调节精神,还能在游戏中锻炼自己的注意力和专心程度,开发我们的思维能力,同时可以充实自己,向高等级挑战,培养我们面对困难时自己所具有攻克困难的信心。本文着眼于j2me技术在手机娱乐上的应用,开发一个基于midp 2.0的手机游戏拆房子,并介绍了游戏的结构分析和具体功能实现。游戏界面和运行方式,尽力模拟手机游戏的普遍性形式,成为一个完整的手机游戏。关键词:j2me,手机游戏,midp2.0,拆房子the design and development of chai fangzi mobile gamesabstractj2me virtual machine on your phone penetration of the cell phone game development offers the most suitable soil. with midp2.0 releases makes mobile phone games developer can concentrate more on the game instead of strengthening cumbersome to deal with the animation map is designed to allow the development process more conveniently.with the quickening of social rhythm, the intensity of competition of working usually is strengthened, the pressure of life follows toaggravate too. so everybody needs an amusement tool of recreation when coming off duty or having a rest, relax one, alleviate ones own pressure, dispel the tense fatigue state. chai fangzi mobile games is a leisure game, not only can adjust the spirit, but also in the game to hone their level of attention and concentration, it develops our thinking ability. at the same time you can equip themselves, and challenge to the high-grade. culture we are faced with difficulties, overcome the difficulties with his own confidence.this article focuses on j2me technology in the mobile entertainment applications, develop a mobile game based on midp 2.0chai fangzi,and introduced the game to achieve structural analysis and specific functions. the game interface and operation mode, try to simulate the universality of the form of mobile games has become a complete mobile gaming.keywords: j2me, mobile phone game, midp2.0, chai fangzi目 录1 引言11.1 研究目的和范围11.1.1 此款手机游戏的研究目的11.1.2 此款手机游戏的研究范围11.2 实用价值与理论意义11.3 理论依据和实验设备条件21.4 解决的问题22 j2me及其体系结构概述32.1 java语言的特点32.2 j2me简介32.3 j2me体系结构52.4 移动信息设备简表概述82.4.1 midp概述82.4.2 midp需求82.4.3 midp范围92.4.4 midp2.0新特性92.4.5 移动信息设备软件体系结构102.5 j2me api简介103 手机游戏开发过程163.1 拆房子游戏的规则简介163.2 开发环境163.2.1 下载jdk()163.2.2 关于wirelesstoolkit163.2.3 关于eclipse173.2.4 关于本次开发193.2.5 java appication manager203.3 详细设计204 程序的调试424.1 打包测试的注意事项424.2 打包测试的过程425 总结43参 考 文 献44致 谢46第 ii 页 共ii 页1 引言1.1 研究目的和范围1.1.1 此款手机游戏的研究目的当今社会人们的生活节奏不断的加快,在工作、学习、生活中压力日益增加。随着科技的发展,现在手机的功能也越来越多,越来越强大。在地铁、公交车上和火车上,我们可以看到越来越多的人低头玩着手机游戏,伴随着不断变化的表情,或皱眉或微笑。而手机游戏也远远不是我们印象中的什么“俄罗斯方块”之类画面简陋,规则简单的游戏,进而发展到了可以和掌上游戏机媲美,具有很强的娱乐性和交互性的复杂形态了。在这样情况下,研究一款手机游戏,可以减轻压力对人们的身心伤害,使人们在生活闲暇时光得到放松。 1.1.2 此款手机游戏的研究范围研究的主要问题就是如何以手机为载体实现移动教育,并把寓教于乐思想融入这种载体上。研究采用j2me技术实现游戏的流程控制、逻辑处理和记录存储等功能。先对游戏和教育作了一番追根溯源的考察,揭示了游戏是人的天性,是人快乐的源泉,是人的内在需要。而教育和游戏的结合是实现快乐教育的一种有效方法。接着对电子游戏和移动教育进行了阐述,提出教育游戏就是电子游戏与移动教育的结合。后分析了在手机移动平台上实现具有学习教育功能的寓教于乐游戏的可行性和有效性。最后介绍了j2me手机游戏开发技术,分析了教育手机游戏开发要点,并开发了一款休闲手机游戏拆房子游戏。开发过程遵循以下流程:首先是知识点的整理和设计,对各个方面的常识按等级分类;其次是游戏的需求分析设计,即游戏方式、游戏效果、游戏规则、总体结构进行设计;然后是根据需求分析设计,对游戏开发实现,实现了关卡、分数、排行榜等模块。最后对游戏进行应用效果测试,测试结果表明该软件实现了预期的功能,达到了实际应用的水平。 1.2 实用价值与理论意义每个人都有一部手机,走到任何地方都可以时常看到有人在玩各种手机游戏。坐在咖啡店里,在酒店里,等人时,都可以玩手机游戏以打发时间,这甚至已经成为每个人的习惯性动作。而随着手机智能化的进一步提升,有些手机的功能甚至让人有便携式电脑的感觉,而随之附带的游戏更是让人眼前一亮。对于手机单机游戏,不需要太多的时间和精力,只需要拿出手机,打开游戏即可游玩。目前已经有很多类型的游戏厂商在进行搏杀,嵌入式游戏、java游戏、brew游戏、uni-java游戏、mrp国产手机游戏等等,百花齐放,你争我攀,谁都不肯落后。在这种大环境下,一些品质高的游戏势必将让所有的手机玩家感受到手机游戏的便携式和其独特的魅力,从而在一定程度上刺激了国民经济的增长。 在手机应用范围日益广阔的今天,这项研究的理论意义在于j2me小巧、安全、可移植的优势使其具有更大的吸引力,而且随着硬件生产工艺、技术的提高,手机的芯片处理速度和存储能力将发生革命性的变化,与此同时3g技术即将走向中国这个全球最大的手机消费市场,加上j2me技术开发者也一直在研究进一步提高j2me运行速率的问题。相信在不远的将来,会有越来越多的人乐于选择基于j2me的无线应用技术,来进行无线企业应用、移动电子商务等系统的开发。虽然目前的j2me技术仍旧处于起步阶段,j2me还有这样那样的缺陷,但我们还是有充分的理由可以相信:j2me在手机游戏设计领域将会有异常美好的前景,它必然能为我们的生活带来翻天履地的变化。1.3 理论依据和实验设备条件 以java me手机应用开发大全为理论依据,利用eclipse,j2me通用开发工具 j2me wtk,电子计算机来完成这个项目。1.4 解决的问题解决midlet应用程序的生命周期,midp用户界面编程,游戏的美工和程序实现。2 j2me及其体系结构概述2.1 java语言的特点 1.平台无关性 java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的java接口。使用java编写的程序能在世界范围内共享。java的数据类型与机器无关。 2.安全性 java的编程类似c+,但舍弃了c+的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。 3. 面向对象 java吸收了c+面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。 4.分布式 java建立在tcp/ip网络平台上,提供了用http和ftp协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。 5.健壮性 java致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。java取消了c语言的结构、指针、#define语句、多重继承、goto语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。 2.2 j2me简介 j2me是一个专门面向小型设备应用的简易平台,这些小型设备包括移动电话、pda、网络电话、数字电视机顶盒、自动娱乐系统、导航系统、网络交换、以及家用自动电器等。j2me的体系结构包括配置、虚拟机和简表3个部分,本设计是针对midp简表应用开发的。j2me (java 2 micro edition) 是sun的java2平台微型版,它被定义为“一种以广泛的消费性产品为目标的且高度优化的java运行时环境。”近年来随着各种电子设备,尤其是移动通信设备的发展j2me对设备的智慧化、多样化,提供了革命性的解决方案。随着手机的日益普及和对java软件的支持,使得不同的手机可以运行同样的由java开发的软件。java平台演进到java2后,java平台分别针对不同领域的需求被分成四个版本,亦即j2ee、j2se、j2me以及javacard。其中j2me定位在消费性电子产品的应用上。这个版本针对资源有限的电子消费产品的需求精简核心类库,并提供了模块化的架构让不同类型产品能够随时增加支持的能力。这个版本的应用层面相当广泛,会是未来java平台发展的重点项目。j2me在1999年的javaone开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算机设备的开发人员。j2me的一个关键优点是,j2me与所有支持java的设备都是兼容的。支持java的设备就是任何运行java虚拟机的计算机。motorola、nokia等生产厂商都生产支持java的设备。j2me平台是由配置(configuration)和简表(profile)构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含java虚拟机。简表是针对一系列设备提供的开发包集合。在j2me中还有一个重要的概念是可选包(optional package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能j2me中制定了jsr82(bluetooth api)提供了对蓝牙的支持。目前,j2me中有两个最主要的配置,分别是connected limited devices configuration(cldc)和connected devices configuration(cdc)。作为第一个面对小型设备的java应用开发规范,cldc是由包括nokia,motorola和siemens在内的18家全球知名公司共同协商完成的。cldc是j2me核心配置中的一个,可以支持一个或多个profile。其目标主要面向小型的、网络连接速度慢、能源有限(主要是电池供电)且资源有限的设备,如手机、pda等。j2me(java 2 micro edition)是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。它的目标定位在电子消费产品与嵌入式设备上,对设备的智慧化、多样化,提供了革命性的解决方案。在可以搭载java的终端设备中,移动电话可以说是最为普及的,随着无线通信业的发展,java应用程序在通信、娱乐等应用上产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的信息起着不可忽视的作用。2.3 j2me体系结构j2me平台是由配置(configuration)和简表(profile)构成的。配置是提供给最大范围设备使用的最小类库集合,在配置中同时包含java虚拟机。简表是针对一系列设备提供的开发包集合。在j2me中还有一个重要的概念是可选包(optional package),它是针对特定设备提供的类库,比如某些设备是支持蓝牙的,针对此功能j2me中制定了jsr82(bluetooth api)提供了对蓝牙的支持。 目前,j2me中有两个最主要的配置,分别是connected limited devices configuration(cldc)和connected devices configuration(cdc)。他们是根据设备的硬件性能进行区分的,例如处理器、内存容量等。由于这个标准是在2001年的时候指定的,而现在移动终端的处理能力和内存容量发展很快,如果还按照这个标准来评判可能就不准确了。 因此我们只是列出标准,供读者参考。本教程将主要讲解基于 cldc的j2me平台的相关内容。随着技术和硬件设备的不断发展,j2me开发网将逐步推出基于cdc的j2me平台介绍。 从上述的标准中我们不难看出cldc主要针对那些资源非常受限的设备比如手机、pda、双工寻呼机等。而cdc主要面对那些家电产品,比如机顶盒、汽车导航系统等。简表是以配置为基础的,例如mobile information devices profile(midp)就是cldc上层的重要简表。与配置的纵向特性不同的是,简表是横向的。下图是j2me体系结构的框图: 图2.1 j2me体系结构框图 midlet应用程序的生命周期 :在midp中定义了一种新的应用程序模型midlet,它是被application ma nagement software(ams)管理的。ams负责midlet的安装、下载、运行和删除等操作。在被ams管理的同时,midlet可以和应用管理软件通信通知应用管理软件自己状态的变化,通常是通过方法notifydestroyed()和notifypaused()实现的 midlet有三个状态,分别是pause、active和destroyed。在启动一个midlet的时候,应用管理软件会首先创建一个midlet实例并使得他处于pause状态,当startapp()方法被调用的时候midlet进入active状态,也就是所说的运行状态。在active状态调用destroyapp(boolean unconditional)或者pauseapp()方法可以使得midlet进入destroyed或者pause状态。值得一提的是destroyapp(boolean unconditional)方法,事实上,当destroyapp()方法被调用的时候,ams通知midlet进入destroyed状态。在destroyed状态的midlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,midlet可以在接到通知后抛出midletstatechangeexception而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。下图说明了midlet状态改变情况: 图2.2 midlet的状态下面通过一个例子来验证midlet应用程序的生命周期:import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class helloworld extends midletprivate display display;/构造函数public helloworld()display = display.getdisplay(this);system.out.println(constructor);public void startapp()system.out.println(startapp is called.);form f = new form(hellotest); display.setcurrent(f);public void pauseapp()system.out.println(pauseapp is called.);public void destroyapp(boolean unconditional)system.out.println(destroyapp is called.); 编译该程序后运行,控制台上就会依次输出: constructor startapp is called. 当我们退出该程序时,控制台就会输出: destroyapp is called. 关于wireless tool kit:wtk(wireless tool kit)是sun公司针对j2me推出的用于手机和palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机仿真器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行仿真器的最基本组件,是其他ide需集成采用的必备元素。当然,你可以从手机厂商下载相关的api及仿真器来进行开发。同样,wtk也是个免费软件,可以在sun上得到下载。2.4 移动信息设备简表概述2.4.1 midp概述midp(mobile information device profile,移动信息设备简表)就是专门向移动信息设备的一类简表。midp2.0规范设计的目的是定义一体系架构和相应的api,从而为第三方的移动信息设备应用的开发提供一开放的标准环境。midp被设计在cldc的基础上运行。虽然midp2.0规范是在cldc1.0所提供的功能的基础上制订的,但它仍能运行在cldc1.1的基础上,以及以后的更新版本2.4.2 midp需求a.硬件需求要求移动信息设备的硬件必须达到以下要求:1. 显示屏幕大小:96x54先是深度:1位像素形状(纵横比):大约1:12. 输入一种或多种输入方式:单手键盘,双手键盘或触摸屏。3. 存储器128kb非易失存储器用来装载midp的组件。8kb非易失存储器,装载应用程序产生的静态数据。32kb随机存储器用作java运行时使用(例如,java堆)。4. 网络双向、无线、可能间歇、有线带宽的网络连接。b软件需求1.用于控制底层硬件的最小内核(例如中断,异常,最小时序的处理)。这个内核必须提供至少一个可运行的实体去运行java虚拟机。此内核不需支持独立的地址空间(或进程),也不需要保证任何实时功能。2.对非易失存储器进行读和写的机制,以支持数据的持久性存储。3.对无线网络的读写访问,以便提供midp中api的支持。4.定时机制,即用来提供永久保存记录时的时间戳,同时用来支持定时器。5.最基本显示位图能力。6.可以从三个输入机制中捕获一个(或几个)用户输入的机制。7.能控制应用程序生命周期的机制。2.4.3 midp范围功能范围包括以下:应用程序模型(即定义midp应用程序的语义和如何控制应用程序)。用户界面支持。网络支持。持久化存储支持。声音。2d游戏。、通过https和安全套接字的端到端的安全性。midlet签名模型提供的附加安全性。应用程序的递送和安装。其他类如定时器类和异常类。midp范围:一些功能被认为超出了midp的范围,其中包括:1. 系统级api:需要再次强调的是,midp api的主要功能是支持开发应用程序,而不是开发系统级程序。因此像能源管理或语言压缩等底层的系统api超出了midp的范围。2. 底层安全功能:除了cldc所提供的安全保护以外,midp没有提供额外的底层安全保护措施。2.4.4 midp2.0新特性2002年11月,sun公司又发布了midp2.0。它对设备的内存资源和处理能力的要求较1.0要高,但midp2.0也为应用开发者提供了更方便、更丰富多彩的软件包,主要增加了游戏接口的实现、声音输出接口的实现、安全网络机制的实现。midp2.0的这些特性将使基于移动设备java应用具有更加广阔的前景。根据与midp1.0中软件包的对照,总结midp2.0的新增特性如下:用户界面扩展,例如弹出窗口,可激活的字符串和图像等。对屏幕布局的更好控制,包括可以对form上的item的大小进行控制。可以自定义form item,应用不再受限于midp1.0中的几种基本的form,而可以自己使用java实现新的类型。支持简单的声音回放,midp2.0设备必须支持mmapi的一个功能子集。当然厂商也可以支持完整的mmapi。新引入的sprite api简化了图形应用,特别适合游戏的开发。支持https、tcp/ip和udp,以及串口通信。midlet可以被设置成可由外部事件激活,该技术被称为push architecture。所有的midp2.0设备必须支持使用ota获取midlet套件,实际上,大部分midp1.0设备就支持ota下载了,只不过此项特性并非强制性的。支持对midlet进行数字签名。此签名作为其内容的加密摘要被一起提供。此特性提供了一个健壮的方案,使得验证midlet的发布者成为可能。设备的使用者可以根据这个信息来选择是否赋予midlet对运行环境的更多访问权限。2.4.5 移动信息设备软件体系结构图2.3 移动信息设备软件体系结构图2.5 j2me api简介 midp 2.0相对于1.0来说,最大的变化就是新添加了用于支持游戏的api,它们被放在javax.microedition.lcdui.game包中。游戏api包提供了一系列针对无线设备的游戏开发类。由于无线设备仅有有限的计算能力,因此许多api的目的在于提高java游戏的性能,并且把原来很多需要手动编写的代码如屏幕双缓冲、图像剪裁等都交给api间接调用本地代码来实现。各厂家有相当大的自由来优化它们。1.api使用了midp的低级图形类接口(graphics,image,等等)。整个game包仅有5个class:gamecanvas这个类是lcdui的canvas类的子类,为游戏提供了基本的“屏幕”功能。除了从canvas继承下来的方法外,这个类还提供了游戏专用的功能,如查询当前游戏键状态的能力,同步图像输出;这些功能简化了游戏开发并提高了性能。layerlayer类代表游戏中的一个可视化元素,例如sprite或tiledlayer是它的子类;这个抽象类搭好了层(layer)的基本框架并提供了一些基本的属性,如位置,大小,可视与否。出于优化的考虑,不允许直接产生layer的子类(不能包外继承)。layermanager对于有着许多layer的游戏而言,layermanager通过实现分层次的自动渲染,从而简化了游戏开发。它允许开发者设置一个可视窗口(view window),表示用户在游戏中可见的窗口; layermanager自动渲染游戏中的layer,从而实现期望的视图效果。spritesprite又称“精灵”,也是一种layer,可以显示一帧或多帧的连续图像。但所有的帧都是相同大小的,并且由一个image对象提供。sprite通过循环显示每一帧,可以实现任意顺序的动画;sprite类还提供了许多变换(翻转和旋转)模式和碰撞检测方法,能大大简化游戏逻辑的实现。tiledlayertiledlayer又称“砖块”,这个类允许开发者在不必使用非常大的image对象的情况下创建一个大的图像内容。tiledlayer有许多单元格构成,每个单元格能显示由一个单一image对象提供的一组贴图中的某一个贴图。单元格也能被动画贴图填充,动画贴图的内容能非常迅速地变化;这个功能对于动画显示非常大的一组单元格非常有用,例如一个充满水的动态区域。在游戏中,某些方法如果改变了layer,layermanager,sprite和tiledlayer对象的状态,通常并不能立刻显示出视觉变化。因为这些状态仅仅存储在对象里,只有当随后调用我们自己的paint()方法时才会更新显示。这种模式非常适合游戏程序,因为在一个游戏循环中,一些对象的状态会更新,在每个循环的最后,整个屏幕才会被重绘。基于轮询也是现在视频游戏的基本结构。2. gamecanvas的使用 gamecanvas类提供了基本的游戏用户接口。除了从canvas继承下来的特性(命令,输入事件等)以外,它还提供了专门针对游戏的功能,比如后备屏幕缓冲和键盘状态查询的能力。 每个gamecanvas实例都会有一个为之创建的专用的缓冲区。因为每个gamecanvas实例都会有一个唯一的缓冲区。可以从gamecanvas实例获得其对应的graphics对象,而且,只有对graphics对象操作,才会修改缓冲区的内容。外部资源如其他的midlet或者系统级的通知都不会导致缓冲区内容被修改。该缓冲区在初始化时被填充为白色。 缓冲区大小被设置为gamecanvas的最大尺度。然而,当请求填充时,可被填充的区域大小会受限于当前gamecanvas的尺度,一个存在的ticker,command等等都会影响到gamecanvas的大小。gamecanvas的当前大小可以通过调用getwidth和getheight获得。 一个游戏可能提供自己的线程来运行游戏循环。一个典型的循环将检查输入,实现游戏逻辑,然后渲染更新后的用户界面。以下代码演示了一个典型的游戏循环的结构:/ 从后备屏幕缓冲获得graphics对象graphics g = getgraphics();while (true) ./ 检查用户输入并更新位置,如果有需要 int keystate = getkeystates(); if (keystate & left_pressed) != 0) sprite.move(-1, 0); else if (keystate & right_pressed) != 0) sprite.move(1, 0); / 将背景清除成白色 g.setcolor(0xffffff); g.fillrect(0,0,getwidth(), getheight(); / 绘制sprite(精灵) sprite.paint(g); / 输出后备缓冲区的内容 flushgraphics();3.绘图要创建一个新的gamecanvas实例,只能通过继承并调用父类的构造函数:protected gamecanvas(boolean suppresskeyevents),这将使为gamecanvas准备的一个新的缓冲区也被创建并在初始化时被填充为白色。为了在gamecanvas上绘图,首先要获得graphics对象来渲染gamecanvas:protected graphics getgraphics()返回的graphics对象将用于渲染属于这个gamecanvas的后备屏幕缓冲区(off-screen buffer)。 但是渲染结果不会立刻显示出来,直到调用flushgraphics()方法;输出缓冲区的内容也不会改变缓冲区的内容,即输出操作不会清除缓冲区的像素。每次调用这个方法时,都会创建一个新的graphics对象;对于每个gamecanvas实例,获得的多个graphics对象都将渲染同一个后备屏幕缓冲区。因此,有必要在游戏启动前获得并存储graphics对象,以便游戏运行时能反复使用。刚创建的graphics对象有以下属性:1 渲染目标是这个gamecanvas的缓冲区; 2 渲染区域覆盖整个缓冲区;3 当前颜色是黑色(black);4 字体和调用font.getdefaultfont()返回的相同;5 绘图模式为solid;6 坐标系统的原点定位在缓冲区的左上角。在完成了绘图操作后,可以使用flushgraphics()方法将后备屏幕缓冲区的内容输出到显示屏上。输出区域的大小与gamecanvas的大小相同。输出操作不会改变后备屏幕缓冲区的内容。这个方法会直到输出操作完成后才返回,因此,当这个方法返回时,应用程序可以立刻对缓冲区进行下一帧的渲染。 如果gamecanvas当前没有被显示,或者系统忙而不能执行输出请求,这个方法不做任何事就立刻返回。4.键盘如果需要,开发者可以随时调用getkeystates方法来查询键的状态。getkeystates()获取游戏的物理键状态。返回值的每个比特位都表示设备上的一个特定的键。如果一个键对应的比特位的值为1,表示该键当前被按下,或者自上次调用此方法后到现在,至少被按下过一次。如果一个键对应的比特位的值为0,表示该键当前未被按下,并且自上次调用此方法后到现在从未被按下过。这种“闭锁行为(latching behavior)”保证一个快速的按键和释放总是能够在游戏循环中被捕获,不管循环有多慢。下面是获取游戏按键的示例: / 获得键的状态并存储 int keystate = getkeystates(); if (keystate & left_key) != 0) . positionx-; else if (keystate & right_key) != 0) . positionx+; 调用这个方法的副作用是不能及时清除过期的状态。在一个getkeystates调用后如果紧接着另一个调用,键的当前状态将取决于系统是否已经清除了上一次调用后的结果。 某些设备可能无法直接访问键盘硬件,因此,这个方法可能是通过监视键的按下和释放事件来实现的,这会导致getkeystates可能滞后于当前物理键的状态,因为时延取决于每个设备的性能。某些设备还可能没有探测多个键同时按下的能力。请注意,除非gamecanvas当前可见(通过调用displayable.isshown()方法),否则此方法返回0。一旦gamecanvas变为可见,将初始化所有键为未按下状态(0)。 3 手机游戏开发过程3.1 拆房子游戏的规则简介游戏开始,由玩家扮演的拆房工人要尽量多地将该关卡内的所有墙块敲碎,较高楼层的墙块可借助梯子来帮忙,在规定的时间内,敲够一定数量的墙块后,玩家顺利过关。超出规定时间,玩家失败,游戏结束。在拆房的过程中,如果玩家被npc逮住,也算玩家失败。3.2 开发环境操作系统:microsoft windows vista程序语言:j2me开发包:sun java (tm) wireless toolkit 2.5.2 for cldceclipse sdk version: java(tm) 2 standard edition(jdk1.5.0_14)ide:eclipse 关于本作品的开发环境,整合j2dk+eclipse+nlpack-eclipse + eclipseme + wireless tool kit,其安装配置过程为另一方面的内容也比较简单,在此不再赘述。可以这么说,jdk提供了虚拟机来运行应用程序,而wtk提供了仿真器, eclipse及其它插件提供了开发测试程序代码的ide集成开发环境。此外,这些资源都是免费的,可以从网上直接下载,在下面小节中将做简单的介绍。3.2.1 下载jdk() 安装sunjdk:j2sdk-1_4_0_03-windows=i386 3.2.2 关于wirelesstoolkit wtk(wirelesstoolkit)是sun公司针对j2me推出的用于手机和palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他ide需集成采用的必备元素。 用于手机游戏开发的环境不是只建立一个javasdk就可以了,它还需要了一个一个库类,叫javatoolkit。首先安装javasdk再在原来的目录下安装javatoolkit这个新的环境就可以满足我们的需要了。然后我们编写一个最简单的程序用来验证这个环境是否可以用来编写我们的手机程序。 编写以下代码: 保存成hello.java文件。 importjavax.microedition.midlet.*; importjavax.microedition.lcdui.*; publicclasshelloextendsmidlet privatedisplaydisplay; publichello() display=display.getdisplay(this); publicvoidstartapp() textboxt=newtextbox(hellomidlet,hellomidp!,256,0); display.setcurrent(t); publicvoidpauseapp() publicvoiddestroyapp(booleanunconditional) 启动ktoolbar新建一个工程,取名hello。把以上文件拷到hello文件的目录编译。能通过编译并能运行,说明这个开发环境就能满足我们的需要了。3.2.3 关于eclipse eclipse 是一个开放源代码的、基于 java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,eclipse 附带了一个标准的插件集,包括 java 开发工具(java development tools,jdt)。 eclipse最初是由ibm公司开发的替代商业软件visual age for java的下一代ide开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟eclipse基金会(eclipse foundation)管理。 2003年,eclipse 3.0选择osgi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布。2008年6月发布代号为ganymede的3.4版。2009年7月发布代号为galileo的3.5版。 eclipse是著名的跨平台的自由集成开发环境(ide)。最初主要用来java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如c+和python的开发工具。eclipse的本身只是一个框架平台,但是众多插件的支持使得eclipse拥有其他功能相对固定的ide软件很难具有的灵活性。许多软件开发商以eclipse为框架开发自己的ide。 eclipse 最初由oti和ibm两家公司的ide产品开发组创建,起始于1999年4月。ibm提供了最初的eclipse代码基础,包括platform、jdt 和pde。目前由ibm牵头,围绕着eclipse项目已经发展成为了一个庞大的eclipse联盟,有150多家软件公司参与到eclipse项目中,其中包括borland、rational software、red hat及sybase等。eclipse是一个开发源码项目,它其实是 visual age for java的替代品,其界面跟先前的visual age for java差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。近期还有包括oracle在内的许多大公司也纷纷加入了该项目,并宣称eclipse将来能成为可进行任何语言开发的ide集大成者,使用者只需下载各种语言的插件即可。 虽然大多数用户很乐于将 eclipse 当作 java ide 来使用,但 eclipse 的目标不仅限于此。eclipse 还包括插件开发环境(plug-in development environment,pde),这个组件主要针对希望扩展 eclipse 的软件开发人员,因为它允许他们构建与 eclipse 环境无缝集成的工具。由于 eclipse 中的每样东西都是插件,对于给 eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。 基于 eclipse 的应用程序的突出例子是 ibm 的 websphere studio workbench,它构成了 ibm java 开发工具系列的基础。例如,websphere studio application developer 添加了对 jsp、servlet、ejb、xml、web 服务和数据库访问的支持。3.2.4 关于本次开发在这次进行实际开发之前,本游戏选择了集成开发环境利用eclipse.eclipse是一个开放源代码的,可扩展的开发环境,主要用于开发各种基于java的应用程序。使用eclipse开发j2me程序,需要使用eclipseme插件。 (1)在安装好eclipse后,单击“new”|“other”菜单,在弹出的“新建项目”对话框中选择创建j2me midlet套件,如图所示:(2)单击“next” 按钮,显示项目名称对话框,在其中输入项目的名称,如图所示 (3)单击“next”按钮,再单击“finish”按钮创建项目。3.2.5 java appication manager手机中负责调配程序运行资源的管理后台是java application manager。它所使用的传输媒体可以是红外线、网络、以及其他可用来传输的媒体。java application manager 会从网络上下载代表该application suite 的jar 档,接着在手机上安裝此midlet suite,然后在手机开始执行该应用程序。 3.3 详细设计主类:main 方法:public main() final protected void p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业公司销售培训
- 培训机构生源留存策略
- 支气管患儿的护理
- 5S作业现场活动培训
- 梁漱溟教育思想体系
- ICU镇静镇痛的护理管理
- 夫妻不自愿离婚协议书及后续财产分割执行细则
- 成都农村集体土地使用权买卖合同范本
- 餐饮企业战略投资股份协议书
- 跨区域车辆抵押担保协议书
- 《儿童食物过敏》课件
- 第四单元第1课+身临其境+课件-+【知识精研】人教版(2024)初中美术七年级上册
- 煤矿应急医疗救护常识课件
- 基于毫米波的工业 5G 创新应用白皮书
- DB37T 2640-2022 监狱安全防范系统建设技术规范
- 学校各功能室管理人员工作职责
- kpi绩效考核培训课件
- 2023-2024学年沪科版(2019)高中信息技术必修二第三单元项目五《规划并连接数字家庭系统的网络-组建小型信息系统网络(一)》说课稿
- RPA财务机器人开发与应用 课件 6.2 RPA银企对账机器人
- 2024年研究生考试考研植物生理学与生物化学(414)试题与参考答案
- 天津市南开区2023-2024学年六年级下学期期末数学试题
评论
0/150
提交评论