基于java的手机程序设计

基于java的手机程序设计

ID:13616375

大小:334.00 KB

页数:22页

时间:2018-07-23

上传者:jjuclb
基于java的手机程序设计_第1页
基于java的手机程序设计_第2页
基于java的手机程序设计_第3页
基于java的手机程序设计_第4页
基于java的手机程序设计_第5页
资源描述:

《基于java的手机程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

学士学位论文基于JAVA的手机程序设计目录引言2一、系统分析2(1)开发平台和技术分析...2(2)JAVA语言特点3(3)需求功能分析4(4)数据流程分析5二、系统设计5(1)程序流程设计5(2)程序类设计7三、系统功能实现9(1)通过双缓冲技术实现动画9(2)游戏菜单的绘制9(3)游戏逻辑及屏幕GAMECANVAS类10(4)游戏按键的实现14结论17参考文献:18附录19致谢2122 学士学位论文基于JAVA的手机程序设计引言目前,中国的手机用户已经突破4亿大关,同时手机用户还在翻倍增长,远远没有达到饱和的程度,用户数量持续高攀,市场的潜力和巨大的商机已经不言而喻。4亿的国内手机用户在满足了基本的通信等需求后,还渴望着有更丰富的无线增值业务。而经过3年多的市场培育,目前手机对手机游戏的认知度和普及率已经显著提高,手机游戏市场的需求无线膨胀,前景相当乐观。作为无线娱乐产业的先行者,手机游戏势必会在其领域中脱颖而出,占领绝大部分的市场份额。同彩铃、彩信等其他业务相比,手机游戏的创造性、娱乐性互动性和用户黏性都具有绝对的先天优势,这也是其他无线业务所无法比拟的。手机游戏产业已成为政府部门、海内外运行上、SP(服务提供商)行业关注的焦点,作为运营商的中国移动将手机游戏作为新业务发展的一个战略性的重点业务。3G的推出对手机游戏来说,客户端与服务器的数据传输速度会更快,图像视频更加清晰流畅,社区交互更加便捷,画面显示更加夺目,这些要素的大幅度生化使得用户的游戏体验更加丰富。玩家站在任何地方,都可以对是打开手机,享受手机游戏带来的无线乐趣。1、系统分析1.1开发平台和技术分析1.1.1Eclipse简介集成开发环境(IntegratedDevelopingEnvironment,简称IDE)是一个综合性的工具软件。目前所有的IDE中,Eclips可以说是有发展前途的产品之一。EclipsPlatform是一个开放的可扩展的IDE。EclipsPlatform提供建造块和构造并运行集成软件开发工具的平台,允许工具建造者独立开发与他人工具无缝结成的工具,无需分辨一个工具功能在那里结束,而另一个工具功能在哪里开始。Eclips项目产生的工具和来自其他开放源代码的第三方软件组合而成。Eclips项目生产的软件一CPL发布,第三方软件有各自的许可访问协议。1.1.2WirelessToolKit简介WTK(WirelessToolKit)是Sun公司针对J2ME推出的用于手机和Palm22 学士学位论文基于JAVA的手机程序设计等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。1.1.3Java2MicroEdition简介J2ME(Java2MicroEdition)是Java2的一个重要组成部分,它与J2SE、J2EE并称。根据SUN公司的定义:J2ME是一种高度优化的Java运行环境,是主要针对如蜂窝电话、可视电话、数字机顶盒和汽车导航系统等消费类电子设备的。J2ME是为了那些使用有限的电力、有限的网络连接及有限图形用户界面能力的设备开发的。它最初的目标是具备16位或32位处理器、16MHz时钟频率、512KB或更少内存的设备。J2ME本质上是一个针对小型设备的Java版本,通过裁减某些在小型设备上不许需要的功能,以达到减小Java虚拟机的体积以及相应运行库的体积,目标是为小型设备提供一个可靠,资源占用少的运行平台。所有的J2ME组件都围绕一个中心,这些被称为configuration(配置)它们中的每一个配置都是用于消费电子和嵌入设备的某一个特定的类别。1.2Java语言特点(1)平台无关性Java引进虚拟机原理,并运行于虚拟机,实现不同平台之间的Java接口。Java的数据类型与机器无关。(2)安全性Java的编程类似C++,但舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针入侵系统。它提供了安全管理器,防止程序的非法访问。(3)面向对象Java吸收了C++面向对象的概念,将数据封装于类中,实现了程序的简洁性和便于维护性,使程序代码可以只需一次编译就可反复利用。(4)分布式Java建立在TCP/IP网络平台上,提供了用HTTP和FTP协议传送和接收信息的库函数,使用其相关技术可以十分方便的构建分布式应用系统。(5)健壮性Java22 学士学位论文基于JAVA的手机程序设计致力与检查程序在编译和运行时的错误,并自动回收内存,减少了内存出错的可能性。自己操作内存能减少了内存出错的可能性。1.3需求功能分析需求分析过程是整个系统开发最重要的阶段,分析的成功与否,决定着整个系统功能的完善性以及稳定性。在该阶段需求分析人员需要确定整个产品的功能要求,并且将现实事务抽象成对象并建模。根据现在手机游戏所需要的各项要求以及具体情况,需要满足以下需求:1.游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。2.游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。3.玩家飞机的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;敌人飞机的运行算法也要进行相关的设置,已免游戏过于简单。玩家飞机还设置了法宝键,按此键可加快子弹速度。4.双方的飞机在前进时也需要考虑到是否碰撞到对方飞机,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。每一次刷新页面、每前进一步都需要进行相关的碰撞检测。7.游戏的地图不可能通过绘图来解决。否则,不仅难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小,失去手机上程序的原则和Java的优势。8.Java是基于虚拟机的半解释型编译系统,其执行效率较C++等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器(Obfuscator)进行程序打包后的优化。9.22 学士学位论文基于JAVA的手机程序设计游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。1.4数据流程分析根据系统的功能和数据流程的分析,现将数据流程图显示如下:主循环Logo画面游戏菜单开始游戏关于游戏游戏帮助声音开关退出游戏初始化数据据绘制场景帮助说明游戏说明开关页面死亡2、系统设计2.1程序流程设计MIDletsuite是MIDP应用程序的最小单位,JAM负责将手机内的MIDletsuite以图形化的方式呈现,让用户能够选取欲执行的MIDletsuite,一旦选取了某个MIDletsuite,操作系统就会激活KVM执行里面的MIDlet。MIDlet及相关的支持类组成了MIDP应用程序的实际内容。而每个MIDlet都必须继承javax.microedition.midlet.MIDlet这个抽象类。在MIDP规范中定义了MIDlet的生命周期,以及可以存在的三种状态,包括Paused、Active以及Destroyed,每一个MIDlet在任何时刻只可能处于其中的一个状态。这三种状态的转换关系如图3-1所示:22 学士学位论文基于JAVA的手机程序设计消减状态(Destroyed)停止状态(Paused)运行状态(Active)StartApp()DestroyApp()呼叫MIDlet的构造函数DestroyApp()PauseApp()图2-1MIDlet的流程MIDlet有三个状态,分别是pause、active和destroyed。在启动一个MIDlet的时候,应用管理软件会首先创建一个MIDlet实例并使得他处于pause状态,当startApp()方法被调用的时候MIDlet进入active状态,也就是所说的运行状态。在active状态调用destroyApp(booleanunconditional)或者pauseApp()方法可以使得MIDlet进入destroyed或者pause状态。值得一提的是destroyApp(booleanunconditional)方法,事实上,当destroyApp()方法被调用的时候,AMS通知MIDlet进入destroyed状态。在destroyed状态的MIDlet必须释放了所有的资源,并且保存了数据。如果unconditional为false的时候,MIDlet可以在接到通知后抛出MIDletStateChangeException而保持在当前状态,如果设置为true的话,则必须立即进入destroyed状态。本游戏所有界面都是在底层屏幕类Canvas上绘画,首先创建一个离屏画布,将游戏所用地图,玩家飞机以及子弹先绘画在离屏画布上。程序主要有两个类。gameStart类继承自MIDlet,gameCanvas类继承自GameCanvas。游戏经过两个LOGO画面进入到菜单选项,可进行开始游戏,游戏帮助,关于游戏,声音开关,退出游戏等选项。游戏开始时,主线程一直运行,另外还设置了4个定时器,分别用来控制子弹的生产,子弹的移动,敌机的生产和敌机的移动。程序使用gameStart类调用sartApp()方法开始游戏,通过Display对象将屏幕显示转给gameCanvas类对象。22 学士学位论文基于JAVA的手机程序设计2.2程序类设计2.2.1MIDlet类用于启动游戏的开始,在MIDlet中通过Display进行用户界面管理,负责与用用程序管理进行交互。2.2.2画布Canvas类为了能有程序开发人员控制接口的外观和行为,需要使用大量的初级用户接口类,尤其在游戏程序中,几乎完全依赖的就是Canvas抽象类进行绘图。从程序开发的观点看,Canvas类可与高级Screen类交互,程序可在需要时在Canvas中掺入高级类的组件。Canvas提供了键盘事件、指点杆事件(如果设备支持),并定义了允许将键盘按键映射为游戏控制键的函数。键盘事件由键代码指定,但这样控制游戏会导致缺乏通用性,并不是每个设备的键盘布局都适合游戏的操作。应当将键代码转换为游戏键的代码,以便硬件开发商能定义他们自己的游戏键布局。2.2.3界面设计游戏开始界面如图2-2所示。图2-2游戏开始界面游戏进入界面后就会看到“开始游戏”,“游戏帮助”,“关于游戏”,“音乐开关”,“退出游戏”选项。单击开始游戏进入游戏。在游戏帮助中会告诉玩家如何操作游戏的信息。关于游戏则告诉玩家游戏的开发信息。菜单界面如图2-3所示:图2-3游戏菜单界面22 学士学位论文基于JAVA的手机程序设计2.2.4按键设计主流市场上的手机键盘设置一般都是4*3的格局,根据人手指案件的习惯游戏中一般用到的都是2,4,5,6,8键。*、#、左侧功能键和右侧功能键做其他特殊用。因此在本程序中按键做表2-4中的设置:键位功能数字4键向左移动数字2键向上移动数字5键使用武器进行射击数字6键向右移动数字8键向下移动数字0键发射飞弹左侧功能键暂停右侧功能键返回主菜单表2-4战斗界面中的按键说明2.2.5功能设计图2-3菜单界面在设计手机游戏的菜单是,要充分考虑设备的原有操作习惯,比如NOKIA的手机用户会使用左软键作为确定,右软键作为返回菜单。而MOTO的手机用户右软键作为确定,左软键作为返回菜单。中国移动的百宝箱业务的开发规范中对游戏的按键进行了要求。在底层屏幕类中,核心的方法是paint(),keyPressed()和run()这三个方法,分别用来控制屏幕的绘制、按键的处理和游戏逻辑的处理。这3个方法的工作是在一个状态变量gameState协调下完成的。gameState存储了当前整个系统的状态,当游戏加载时,按键控制快速跳过画面,run()方法控制往下,当显示菜单时keyPressed()方法所接受的按键用来改变菜单的状态变量menuState;当进行游戏时,用户按键控制的就是主角的移动而不是修改菜单选项。run()方法测试对游戏的所有逻辑数据进行加工和计算,计算完成之后,在paint()方法中根据计算的结果再进行绘制,下面代码是paint()方法的核心结构:publicvoidpaint(Graphicsg){offG.setClip(0,0,SCREENWIDTH,SCREENHEIGHT);switch(gameState){casePAUSE://暂停状态caseMENU://菜单状态22 学士学位论文基于JAVA的手机程序设计switch(this.menuState){case0://载入Logo图片break;case1://载入第二幅Logo图片break;case2://绘制菜单break;…………………break;caseLOAD://游戏加载状态break;caseGAMEING://游戏进行中状态break;caseGAMEOVER://游戏结束状态break;}//将脱屏缓冲区的内容绘制到屏幕g.drawImage(im,0,0,0);}3、系统功能实现3.1通过双缓冲技术实现动画在底层屏幕的paint()方法中要执行大量的图形绘制,而在绘制的过程中手机屏幕又要显示,很可能当前帧没有绘制完成下一帧的绘制任务就已经开始,这样就会导致屏幕的闪烁。避免闪烁的方法是使用图像的双缓冲技术,定义一个完全脱离屏幕的缓冲画布,在缓冲画布绘制所有内容,当绘制完成时再将缓冲画布中的所有像素信息整个贴到当前手机屏幕上,在J2ME中可以使用Image类创建一个可修改的缓冲画面,代码如下:Imageim=Image.createImage(SCREENWIDTH,SCREENHEIGHT);//创建脱屏画布GraphicsoffG=im.getGraphics();//脱屏画笔将所有画面都绘制在im上,然后将im画布在贴到当前画面上。3.2游戏菜单的绘制菜单背景的静态绘制:直接在离屏画布上绘制静态图片,重新绘制离屏画布的大小,如果背景图片没有加载到,则将背景用黑色代替。22 学士学位论文基于JAVA的手机程序设计菜单选项的绘制:本游戏的菜单的所有选项的界面都是通过图片加载所实现的,如果每个选项都把图片作为单独的一个文件,则会大大增加图片的数量,同时也增加了整个程序的大小。我们将所有选项的画面保存在同一个图片文件中就可以节省资源。我们就只需要加载一张图片就可以了,在这里我们需要用到setClip()方法绘制图片的一部分。setClip()方法是用来绘制指定坐标后面区域的图片。通过setClip()方法可以将图2-5做成游戏中的单个选项的画面。图2-5在方法外设置一个nowFramemenu变量记录菜单中的各个选项,用按上下键来确定所需选项。具体剪裁菜单选项的代码如下:publicvoiddrawmenu(GraphicsoffG){//设定剪裁区xywh//剪裁区的范围在屏幕重绘的时候受到影响其它区域不受影响offG.setClip(0,178,130,30);offG.drawImage(menu,0,178,0);offG.setClip(0,182,94,20);offG.drawImage(menu,20,182-30-20*nowFramemenu,0);}3.3游戏逻辑及屏幕gameCanvas类gameCanvas类是游戏的主要核心,gameCanvas中的方法决定着地图的滚动,子弹的产生,子弹的移动,敌人的产生,控制着敌人的移动,判断敌人及玩家是否被击中等。它控制着整个游戏的线程。3.3.1地图的创建以及背景滚动的实现本游戏通过加载一张与屏幕大小一致的PNG图片作为地图,然而一张图片加载上去是静态的,如何实现背景的滚动22 学士学位论文基于JAVA的手机程序设计呢?我们先将地图初始化,将两张地图凑在一起画在离屏画布上,第一张地图画在离屏画布的正上方,第二张地图贴着离屏画布的左上角,每重绘一次地图的纵坐标递增1像素,则整个图片就会向下移动1像素,当第2张图片纵坐标超过屏幕的限制时,返回到初始化状态。通过在该图上再次绘制填补空白。实现代码如下:publicvoiddrawBack(){offG.setClip(0,0,SCREENWIDTH,SCREENHEIGHT);switch(this.level_Mode){case1:offG.drawImage(mapbk,0,mappy,0);offG.drawImage(mapbk,0,mappy-208,0);}mappy+=1;if(mappy>=208){mappy=0;}}其中,level_Mode是关卡的值,通过不同关卡值可以绘制不同关卡图片。3.3.2游戏角色飞行的实现在实现飞行的过程中,首先对飞机的图片、坐标、方向定义进行定义和初始化,图片和实现代码如下:px=176/2-15;py=208-30;direct=0;因为在飞行中,飞机在各个方向飞行时的样子是不同的,比如说向右飞行的时候左翼则会侧飞,为了增加游戏的逼真效果,本游戏使用了setClip()方法对飞机的动画进行切割使用,当按下方向键时即时的设置按下该方向键所需要的帧实现代码如下:publicvoiddrawPlane(){//画飞机offG.setClip(px,py,30,30);22 学士学位论文基于JAVA的手机程序设计offG.drawImage(imPlane,px-dirFrame[direct]*30,py,0);画出不同方向时飞机的样式offG.setClip(0,0,176,208);}通过在keyPressed()方法中处理按键来改变飞机的飞行方向,而run()方法控制了定时的屏幕绘制。这样,每次都会根据按键处理方法中修改的结果进行新的屏幕绘制,我们就会看到不同方向飞机飞行的效果。3.3.3使用定时器和向量类实现子弹效果在飞机发射子弹过程中,会有多于一个1颗的子弹在空中飞行,子弹的数量不能确定,要存储不确定的一组数据可以采用向量Vector。因为这个类提供了管理任意数量对象的方法,可以方便的将对象添加到向量中进行管理,也可以随时移出,当对象从向量中移出时,系统会自动对内容进行清空。以下是子弹向量的定义:allBullet=newVectior();子弹在用户按下按键时能够连续发射是通过一个定时器实现的。当按下开火键的时候,定时器检测到并开始按没0.3秒的速度产生子弹,将子弹的数据(子弹当前的坐标,以及图片帧)添加到向量中,子弹产生后,不会一直不动,它的坐标因该不停的变化,程序中创建了第二个定时器不断对子弹的坐标进行调整,在子弹还在屏幕中的时候,每0.2秒向上移动8个像素,并且对屏幕进行重绘。如果在子弹移动进行中,用户按了0键,子弹速度将突然爆发,以0.2秒移动40个像素的速度击毙敌人。在子弹移出屏幕以后,从向量中将该子弹对象移出。由于Java中Vector是按照对象的方式来处理的,可以将其添加到向量中进行管理。在方法drawBullet()中获取子弹的向量对象,从向量中获取子弹的坐标,并在该坐标上绘制子弹的图片,因为子弹的图片为3个帧,因此可以看到在子弹飞行的过程中,子弹的样子是不断变化的。通过按键控制了子弹发射开关变量isFire的值为true,在抬起按键以后又将isFire的值设置false。3.3.4按0键增加子弹速度的实现如果在子弹移动进行中,用户按了0键,子弹速度将突然爆发,以0.2秒移动40个像素的速度击毙敌人。22 学士学位论文基于JAVA的手机程序设计在方法外设置一个参数quick来确定用户是否按了0键。将下面代码嵌入到第二个定时器内,用来捕获quick参数的取值。if(quick)tmp[1]+=40;//如果按了加速键,则向上移动40像素elsetmp[1]-=8;3.3.5使用定时器实现敌机飞行效果为了控制方便,敌机的出现不用主线程控制,而用定时器实现。因为敌人出现的位置不固定,为了使得敌机出现的随机性,设置了一个随机数random%168作为敌机出现的横坐标,从上面飞下来。通过定时器没0.2秒随机产生一架敌机,并将之放入向量数组中,记录敌机的初始坐标和敌机类型,并通过另一个计时器,每秒将敌机的坐标向前推进8像素,并且将paint()方法重绘。使用方法drawPlaneAi()从向量中获取敌机的信息,根据敌机的坐标在相应位置绘制相应的敌机图片。敌机的图片如图2-6下:图2-6敌机图片敌机随机出现的表现形式如图2-7所示:图2-7敌机随机出现表示和子弹射击3.3.5碰撞检测的实现游戏进行中,需要进行玩家飞机、子弹与敌机进行碰撞检测。当玩家角色与敌机碰撞的时候会死亡,产生爆炸,然后返回主菜单页面。因此设置了一个变量NPCdead记录玩家角色的生存状态,当NPCdead为True时则不绘制玩家飞机,22 学士学位论文基于JAVA的手机程序设计并在主线程中将gameState改为主菜单的状态,同时再将NPCdead设置为false,以并下次游戏开始初始化玩家角色。当敌机碰到玩家子弹的时候,将敌机从Vector向量中移出,并在当初位置绘制爆炸图片。检测算法主要判断敌机与子弹的位置是否相等,由于当初设置子弹和敌机的时候他们的位置只是一个点,因此在碰撞检测的时候将这个点的范围变大,这样可以有效实现碰撞的效果。碰撞检测是由方法isChecked(intx1,inty1)实现的,判断基于位置(x1,y1)这个点的范围有没有子弹出现,如果有则返回ture,否则返回false;同时在函数内将这个位置记录到一个全局变量数组中,用来设置爆炸图片绘制的位置。如图2-8所示,显示了爆炸图片的制作效果:图2-8击毙敌机和被敌机碰撞产生的爆炸3.3.6爆炸图片的实现为了体现爆炸的真实性,那么爆炸不可能只是单一的一个静态画面。为了实现爆炸的动画效果则需要4个帧,每次绘制的时候将帧的值加1,换成下一个爆炸图片,其实现也是用setClip()方法实现。当玩家被敌机碰撞后产生爆炸后返回到主菜单。3.4游戏按键的实现在底层屏幕类中是用keyPressed()方法进行按键控制的。因为游戏分为很多状态,所以不同状态中按键的效果又有不同。当在进入LOGO画面的时候,按键是没有效果的。当gameState=MENU的时候,按上下键可以进行选项处理。由于选项多个,因此需设置一个menuState来标识不同的选项,以确定按下确定键的时候处理哪中选择。当gameState=GAMEING时,玩家可通过上下左右22 学士学位论文基于JAVA的手机程序设计来进行游戏角色的上下左右移动。并更改玩家角色的坐标,来实现飞机的飞行。在游戏进行中,按左侧软键可以进行暂停,按右侧软键可以退出游戏,返回主菜单。具体代码如下:publicvoidkeyPressed(intn){if(gameState==GAMEING)//当游戏状态处于GAMEING时,进行上下左右的运动{intk=this.getGameAction(n);switch(k){caseCanvas.UP:direct=1;py-=8;break;caseCanvas.DOWN:…………..caseCanvas.FIRE:direct=1;this.isFire=true;}if(n==48)//设置加速键quick=true;if(n==-7)//在游戏开始时按右软键则返回主菜单gameState=MENU;}elseif(gameState==MENU||gameState==PAUSE){//处理音乐if(menuState==5&&(n==Canvas.KEY_NUM5||n==-5)){this.soundOn=!this.soundOn;this.repaint();//重绘屏幕return;22 学士学位论文基于JAVA的手机程序设计}//处理关于………………………if(menuState>=3){//在菜单状态时,实现按上下左右键选择游戏选项if(n==Canvas.KEY_NUM2||n==-1||n==1&&(menuState!=4&&menuState!=6)){nowFramemenu--;//改变选项帧if(nowFramemenu<=0){nowFramemenu=0;}}if(n==Canvas.KEY_NUM8||n==-2||n==2………………………}}if((n==-7||n==7)&&(this.menuState!=3)){this.menuState=3;this.repaint();return;}if(nowFramemenu==1){//将选项帧与菜单状态对应this.menuState=4;}if(nowFramemenu==2){this.menuState=6;}……………………………………this.repaint();22 学士学位论文基于JAVA的手机程序设计}return;}通过keyReleased()方法处理按键抬起是的动作。publicvoidkeyReleased(intn){direct=0;if(this.getGameAction(n)==Canvas.FIRE){this.isFire=false;}}结论几乎每一个计算机程序都会有这样那样的不足,尤其是未经过精心维护的非商业软件。即使是作为操作系统的各种版本的Windows也时常会发生许多类型的错误和漏洞。本游戏程序对于初涉此领域的毕业设计课题来说,尤其在开始初期,感觉逻辑复杂,难以控制,经过同学试用后的建议,本游戏应该完善的功能如下:1.敌机最好能发子弹,可增加游戏的可玩性;2.最好有接宝物的设置,增强可玩性;3.应设置关卡BOSS,如当敌机消灭一定数量的时候就会出现一个BOSS。7.没有添加成绩记录,即英雄榜;6.最大的遗憾,敌人不够智能化。以上不足需要我继续学习,在原有的基础上不断努力,掌握足够的知识,以便以后在工作岗位中能更好的发挥自己的才能!希望不远的将来,我能够有能力对这个游戏进行重写,加以完善。22 学士学位论文基于JAVA的手机程序设计这款游戏作为我的毕业设计,是本人目前做过的最有意义的程序,学习期间做过很多课程设计,大多规模很小。在数据库、各种应用软件和游戏中,我仍觉得对游戏的设计有极大的热情。因为其各个模块间的联系十分紧密,代码重复执行率高,当经过无数次的调试、修改后,能最终看到成品,有无比自豪的心情。大学期间做过图书馆管理程序等简单的数据库管理系统的课程设计,思想大致相似,变化范围有限,没有太多自己可发挥的余地。大家作品的最终结果都离不开同一个模式。相比一些数据库软件,游戏的设计有很多人情色彩和艺术思想的发挥,正式商业的软件的人性化界面和各个游戏间不同的结构每每会让人有去开发的冲动。22 学士学位论文基于JAVA的手机程序设计参考文献:[1]JoshuaBloce著,潘爱民译:《EffectiveJava中文版》,机械工业出版社.,2004年7月第4版。[2]BruceEckel,侯捷译,《Java编程思想》,机械工业出版社出版社,2005年3月第1版。[3]王森著,《Java手机/PDA程序设计入门》,电子工业出版社,2005年2月第3版。[4]JamesKeogh著,潘颖王磊译,《J2ME开发大全》,清华大学出版社,2004年2月第1版。[5]IanSommerville著,程成等译,《软件工程》,机械工业出版社,2003年1月第1版。[6]FrandM.Carrano,JanetJ.Prichard著,韩志宏译,《数据抽象和问题求解——JAVA语言描述》,清华大学出版社,2005年4月。[7]李振鹏,龚剑编,《J2ME手机游戏开发技术详解》,清华大学出版社,2006年3月第1版。[8]雍俊海编,《Java程序设计习题集》,清华大学出版社,2006年4月第1版。[9][美]《BruceEckel.ThinkingInJava》英文第4版,北京机械工业出版社,2007年3月第1版。[10]丁振凡主编,《Java语言实用教程》,北京北京邮电大学出版社,2005年6月第1版。[11]王路群编,《Java高级程序设计》,北京中国水利水电出版社,2006年7月第1版。[12]柳西玲,许斌编著,《Java语言应用开发基础》,北京清华大学出版社,2006年1月第1版。[13]吴其庆编著,《Java程序设计实例教程》,北京冶金工业出版社,2006年2月第1版。[14]赵毅主编,《跨平台程序设计语言——Java》,西安电子科技大学出版社,2006年8月第1版。[15]郑莉,王行言,《马素霞编著.Java语言程序设计》,清华大学出版社,2006年3月第1版。[16]JonathanKnudsen著,《What'sNewintheJ2MEWirelessToolkit》,2004年4月第1版。22 学士学位论文基于JAVA的手机程序设计附录系统使用说明(一)系统开发环境操作系统:WindowsXP开发环境:Eclipse3.2编译打包工具:J2MEWTK2.5,JDK1.6.0_13(二)系统开发测试打包简介1.首先解压Eclipse3.2,并将中文包NLpack1-eclipse解压出来的features和plugins文件夹覆盖到Eclipse安装路径下,然后运行eclipse.exe,先设置工作空间,然后进入工作台,在“帮助”下点“软件更新”以及“查找并安装”,然后,搜索要安装的新功能部件,点“下一步”,新建已归档的站点,打开eclipseme.feature_1.0.0_site插件,进行安装。2.点击“窗口”下的首选项,打开左边的J2ME,并点击PlatformComponents,右击右边窗口的WirelessToolkits,点AddWieslessTooklkits,找到WTK22的安装目录,点完成。再打开左边窗口的Java,点击构建路径,将“源和输出文件夹”设置成“文件”,然后确定。3.将系统flaygame文件夹复制到工作区路径下,运行Eclipse,打开文件下的新建,新建一个项目,打开J2ME,并点击J2MEMidletsuite然后下一步,设置项目名为flygame,选择J2MEWirelessToolkit2.2MIDP2.0Platform,然后确定。4.在左边窗口下,依次点击flygamesrc缺省包,右击Midletfly,在运行方式下,选择EmulatedJ2MEMidlet,会看到运行的效果。5.使用WTK的新建项目功能建立一个新项目,要求与Eclipse工作区下的项目名称MIDlet类名相同。6.新建项目后,将Eclipse工作区下的.java文件拷入src文件夹,将.class文件拷入class文件夹(需要新建),将pic文件夹拷入res文件夹,点击生成,如一切正常。7.选择项目-包-生成包,生成的jar和jad文件存储在lzhhdm/bin目录下。8.运行DefaultColorPhoneDevice,使用J2ME22 学士学位论文基于JAVA的手机程序设计自带的手机模拟器进行测试点击Lanuch按钮,即可以进行游戏了。电脑键盘的方向键上、下、左、右可以控制玩家飞机的运动,回车可以发射子弹。可以将鼠标移动到相应的按钮处单击,以测试相应的按钮。22 学士学位论文基于JAVA的手机程序设计致谢首先感谢我的指导老师景波老师,他在我的毕业设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在毕业设计过程中碰到问题时能及时得以解决,并一直很耐心地对我的设计系统提出修改建议,找到设计编程的最优路径,使我的系统完成目标功能,达到目标要求。感谢我的同学在当我遇到困难时,他们鼓励我,支持我;当我遇到一些技术上的问题时,大家一起交流,提供了一些建议。感谢学校对我们的悉心教育,并给予我们很多亲手实践的机会!22

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭