ImageVerifierCode 换一换
格式:DOC , 页数:61 ,大小:1.13MB ,
资源ID:2432726      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2432726.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(毕业论文j2me游戏1.doc)为本站上传会员【可****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

毕业论文j2me游戏1.doc

1、 毕业设计说明书 学生姓名 学 号 学院 计算机科学与技术学院 专 业 计算机科学与技术(网络工程) 题 目 舰船对战手机游戏的设计与实现 指导教师 (姓 名) (专业技术职称/学位) 2011 年 5 月 摘要: 随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。 本篇论文共分为五个部分:包括引言、J2ME技术概览、开发环境及相关技术

2、游戏设计 和具体设计。其中具体设计是本篇论文的重点。整篇论文都是围绕着这一部分来展开论述的,在这一部分里详细介绍一款借助J2ME的MIDP类库开发手机游戏的全过程。 关键词:手机游戏,J2ME, MIDP Abstract:When cell phone is getting ever more popular nowadays, with the implementation of Java technology on mobile equipment, increment of capital on communication service exhibits i

3、ts force on people’s everyday life, providing them ever fast information just in hand. This paper is divided into five parts: including introduction, J2ME technology overview, development environment and related technology, game design,and the specific design.One specific design is the key in this

4、 paper. The whole thesis on this part to discuss, in this part of the detailed introduce the cell phone game development process by the MIDP class library of J2ME. Keywords:mobile game,J2ME,MIDP 目 录 1 引言 5 1.1 项目背景 5 1.2目的与意义 5 2 J2ME技术概览 5 2.1 J2ME简介 5 2.2 J2ME体系结构 6 2.

5、2.1 JVM ( 虚拟机 ) 6 2.2.2 J2ME配置 6 2.2.3 J2ME简表 7 3 开发环境及相关技术 8 3.1 游戏开发环境 8 3.2 关于Wireless Tool Kit 8 4 游戏设计 9 4.1 需求分析 9 4.2游戏的流程和类结构 9 4.2.1游戏基本运行流程 9 4.2.2游戏的类结构 10 5 具体设计 10 5.1游戏项目的创建 10 5.2 游戏主要设计思想 11 5.3 游戏主要功能的实现 11 5.3.1 游戏画布类FIRCanvas的实现 11 5.3.2 军舰类的实现 16 5.3.3 潜艇类的实

6、现 17 5.3.4 水雷类的实现 20 5.3.5 音乐类的实现 22 5.3.6 MIDlet应用程序类的实现 24 5.4游戏辅助功能的实现 25 5.4.1 游戏的闪屏类的实现 25 5.4.2 游戏功能设置菜单的实现 27 5.4.3 参数设置实现 28 5.4.4 游戏说明功能实现 29 6游戏的运行 30 7 系统测试 31 7.1 作为应用软件的测试 31 7.2 游戏娱乐性内容的评价 31 结 论 32 参考文献 33 致 谢 34 1 引言 随着经济的发展和社会节奏的加快,人们所面对的压力越来越大,总想寻求一种方式来释放自己的压力。

7、而我国科技水平在高速发展,计算机已经广泛应用于人们的日常生活中。因此,现在越来越多的人想借着计算机来达到释放自己压力,给自己充电的目的。而电脑游戏尤其是休闲小游戏正好可以起到这种效果。因此,休闲小游戏一直深受人们的喜欢。 1.1 项目背景 手机是人们日常生活中所用的非常频繁的通信工具,正是由于手机的高普及率,使得无线移动商务才得以迅速普及和发展。手机游戏则每个人都随时,随地地使用。尽管每个手机游戏都不贵,但是巨大的使用量将使得这个市场商机无限。国外的手机游戏市场更是日趋成熟,可以用登峰造极来形容,他们甚至可以把电脑游戏移植其中,可说功能强大。相比较而言中国只能算是起步而已。 因此,作为即

8、将毕业的我,选择了《舰船对战手机游戏的设计和实现》作为我的毕业设计选题,希望在其过程中,能够清楚自己的不足,在以后的日子里能够更加努力地改进。   1.2 目的与意义 通过游戏程序增加编程的兴趣,提高编程水平。随着编程水平的提高,力争设计出人们喜欢的休闲小游戏,给人们带来愉悦的心灵享受。给那些长期因工作压力比较大的人们提供一种释放压力的途径,使他(她)们更有激情地工作,同时,也实现了自我的人生价值。 2 J2ME技术概览 2.1 J2ME简介 Sun Microsystems公司将J2ME定义为“一种以广泛的消费性信息产品为目标的,高度优化的java运行时环境”。它主要针对消费类电子

9、设备,例如,蜂窝电话和可视电话、数字机顶盒、汽车导航系统等。 J2ME技术在1999年的Java One Developer Conference 大会上正式推出,它将Java语言与平台无关的特性移植到小型潜入式设备上,允许移动无线设备之间共享应用程序。 在消费电子和嵌入式设备领域,内存从几百KB到几十MB,从没有屏幕到Web-TV,CPU从低功耗的嵌入式处理器到几百MHz的RISC处理器,硬件条件的差异是相当大的。这就使得J2ME的标准需要有不同的层次和类别来适应这个复杂的领域,因此相比之下J2ME就比J2SE和J2EE的标准要复杂得多。尽管如此,J2ME在适用于这些设备的同时也保留了J

10、ava的传统特性,即代码具有可移植性、部署灵敏性、安全的网络传输性和代码的稳定性等。因此,J2ME目前已经被广泛应用于消费类嵌入式设备,成为嵌入式开发的一种标准。 2.2 J2ME体系结构 从整体看,J2ME平台由以下几部分组成: ●Java虚拟机,针对不同的嵌入式设备以及为了满足不同的需要,提供了KVM和CVM两大虚拟机。 ●配置(configuration),它是将某一类特定应用范畴的设备的共性提取出来形成的规范。为开发人员提供了最基础,能在所有平台上通用的核心API类库。 ●简表(profile),它是将某一个特殊行业或领域内的设备的特性提取出来,形成对特定领域特性的总结,是作

11、为配置的一个补充。 ●一些可选包,主要包括设备厂商提供的OEM的API类库。 其中前三项组成了J2ME的基本运行环境。 其中Java虚拟机是运行环境的核心,其运行于设备中的操作系统之上,再往上是具体的J2ME配置,包括更具设备的资源需要而提供的基本核心API类库,配置的上面是一个或者多个针对不同应用领域而设置简表。 2.2.1 JVM ( 虚拟机 ) JVM是专门为微型电子设备与资源受限设备如:手机、寻呼机、移动互联网设备、家用微电子设备等设计的一种轻便、紧凑的JAVA虚拟机。 JVM可以为微型电子设备提供一个完整的JAVA运行环境,除了一些微型设备所必需的适当的功能有所不同外,它

12、是由JAVA虚拟机规范定义的真实的JAVA虚拟机。它是专门为那些受资源限制,只有几百K字节内存的微型设备设计的。 基于上述原因,JVM具有以下几个特点: (1)小,仅具有40KB至80KB的静态内存; (2)轻便、精巧; (3)模块化并可定制; (4)尽可能完全紧凑的完成设计目的。 2.2.2 J2ME配置 配置是将基本运行的环境定义为一套核心类和一个运行在特定类型设备上的特定的虚拟机。J2ME中提供了两种配置:CLDC和CDC。 CDC针对的设备主要是数字电视、机顶盒、网络电话、车载计算设备,特点是有线连接,稳定而持续的电源供应,设备资源比较受限。 CLDC支持的设备主要包

13、括无线电话、手机、PDA以及小型零售支付段等。处理能力较弱,只包含程序运行所需要的最小类库。 2.2.3 J2ME简表 简表是面向配置之上纵向设备,建立在配置的顶部,定义了配置之上受支持设备的类型。目前J2ME领域里使用最广泛的是移动信息设备简表(MIDP),主要针对手机和其他双向移动通信设备而设计的。 MIDPlet的开发环境需要有java2 SDK1.3版以上与MIDP的类库、以及后述的运行前验证工具三种。在J2MEWTK中除了包括MIDP的类库、运行前验证工具之外,还会把编译与包装(JAR文件化)、JAD文件的创建、模拟器的启动等在开发MIDP需要用到的操作加以集成。当完成了JDK

14、1.4以及J2MEWTK的安装以后,就可以开始对游戏项目进行创建了。 A.MIDlet开发的基本开发流程如下: (1) 编写MIDlet程序源代码; (2) 编译MIDlet程序; (3) 对编写后的类文件进行预校验; (4) 编写清单文件MANIFEST.MF; (5) 对MIDlet程序进行打包; (6) 编写Java应用程序描述符(jad)文件。 B.MIDlet文件的构成: (1)JAR(Java ARchive)文件:集成了Class File与图像、声音等内容的数据文件,虽然与J2SE的文件相同,但是列表的文件内容不同; (2)JAD(Java Applicat

15、ion Descriptor)文件:指定启动的MIDlet类名称或是数据文件大小、版本等信息; (3)KDDI的地方,使用组合了JAR文件与JAD文件的KDDI专用的KJK(KDDIJavaeXtension)。 C.生命周期是指程序从开始执行到退出的生命过程。 MIDlet是以下列的生命周期来运行的: (1) 系统调用继承自MIDlet类的默认构造方法,创建对象; (2)系统进入MIDlet生命周期的暂停状态,这个是MIDlet生命周期的第一个状态; (3)系统调用startAPP()方法,然后进入MIDlet的运行状态,程序正常执行; (4)如果在暂停转台或者运行状态下发生错

16、误,则程序会调用destoryAPP( )方法,然后进入销毁状态。 整个过程如图2-1所示 图 2-1 生命周期图 3 开发环境及相关技术 3.1 游戏开发环境 操作系统:Microsoft Windows XP 程序语言:Java 2 开 发 包:Java(TM) 2 Standard Edition (5.0) Sun Micro. J2ME   Wireless Tool Kit 2.2 3.2 关于Wireless Tool Kit WTK(Wire

17、less Tool Kit)是Sun公司针对J2ME推出的用于手机和Palm等移动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。它通用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟器的最基本组件,是其他IDE需集成采用的必备元素。目前我们可以获取的有四个版本,分别是1.0.4, 2.0, 2.1和2.2。每个版本都包括英语,日语,简体中文,繁体中文4个语种包。 ① 1.0.4版只能够开发MIDP1.0 应用程序; ② 2.0版只能够开发MIDP2.0 应用程序; ③ 2.1

18、版则可以同时开发MIDP1.0、 JTWI(CLDC 1.0, MIDP2.0, WMA1.1)可改用CLDC1.1或加入MMAPI1.1,自定义(自己随机组合Configuration, Profile以及Optional Package)三种环境下的应用程序; ④ 2.2版中,WTK全面的支持JTWI规范。具体的说,即MIDP 2.0, CLDC 1.1, WMA 2.0, MMAPI 1.1, Web Services (JSR 172), File and PIM APIs (JSR 75), Bluetooth and OBEX APIs (JSR 82), and 3D Gra

19、phics (JSR 184);同时您也可以使用该版本开发面向CLDC1.0 和MIDP1.0的应用程序。 系统要求上,WTK2.2至少需要50MB可用硬盘,128MB系统RAM和800MHZ Pentium III CPU。 4 游戏设计 4.1 需求分析 本系统主要是完成潜艇大战游戏的基本操作。用户可以自己练习和娱乐。本系统需要满足以下几点要求: (1) 利用方向键来改变军舰的运行方向; (2)确定键发射导弹,击中敌人得分,击中自己人扣分; (3) 选项键可以更换背景和背景音乐。 4.2 游戏的流程和类结构 4.2.1 游戏基本运行流程 本游戏的基本运行流程是在MI

20、Dlet启动后把整个画布作为一个线程,随时准备响应用户按键操作的KeyPressed()方法,100ms扫描一次潜艇和水雷等物体的运行状态。 图 4-1 运行流程图 在扫描潜艇和水雷运动时,执行各个物体画面的移动方法。程序并不为每隔新增潜艇和水雷开启一个新线程,太多线程会造成程序的性能直线下降;而是将每一个物体类型直接加入到画布中,每当一个新物体产生,将直接在画布上画出;当物体消除时,将直接在画布上被消除。这样就形成一种注册机制,所有游戏物体的产生和消除都需要画布注册,画布拥有不同类型物体的所有“名单”,所以,当执行移动命令是只需要遍历画布中所有游戏物体,依次执行每隔游戏物体中定义的移动方

21、法即可。 游戏的基本运行流程如图4-1所示: 4.2.2 游戏的类结构 在本游戏的设计过程中,严格按照面向对象的程序设计思想对程序进行设计,主要显示类包括主界面类、游戏画布类、菜单类、选项类、音乐类、说明类和分别代表军舰、水雷和潜艇的各种实体类。 ●FIRMIDlet:是游戏的主类,控制着游戏的生命周期,在FIRMIDlet类中的startapp()方法中先载入游戏画面:在FIRMIDlet类中定义了一个static型的quitapp()方法,以方便在游戏过程中随时点击“退出”键来结束改游戏,和一个static型的setcurrent方法方便在其他类中调用不同的显示对象。startap

22、p()方法当中,加载本游戏的选择菜单;quitapp()方法以结束midlet应用程序并释放内存;采用setcurrent()方法来设置display对象中要显示的屏幕画面。 ●FIRCanvas:画布类,负责绘制游戏中的各种游戏物体,并响应用户的按键操作。 ●Boat:军舰类,定义游戏中军舰的外观、移动和绘制方法。 ●Submariner:潜艇类,定义游戏中潜艇的外观、移动和绘制方法。 ●Bomb:水雷类。定义游戏中水雷的外观,移动,控制以及碰撞检测的方法。 5 具体设计 5.1 游戏项目的创建 在J2MEWTK当中,是以项目这个单位来管理MIDletSuite,因此在进行程序

23、编写前必须先要创建项目。首先要将项目取名为SimpleMIDlet。在Windows“开始”菜单启动J2MEWTK的KToolbar,启动之后,单击“New project”按钮。然后在“New project”对话框的“project Name”与“MIDlet Class Name”的文本框输入项目的名称“FIRMIDlet”,并单击“Create project”按钮。这样就完成了对游戏项目的创建。 WTK 产生项目后,不同类型的资源有着相对固定的存放位置。Java 源文件被放在apps 目录下\Puzzle \src 下,相关程序资源文件(图片,音频)放在\res 下,应用程序库文件

24、放在\lib 下,这在WTK 中是必须注意的,即便是相对路径,也必须是在该类型目录下建立。点击wtk工具栏的”生产”按键。编译通过顺利后,将这个游戏程序压缩成jar包以方便以后对改游戏程序的发布,依次选择ktoolbar菜单中的“项目“”包“”产生包“,jar文件生成后,ktoolbar的提示窗口中会显示成功的提示。运行成功以后,在bin目录下,将会产生一个程序描述文档jad,它清楚的描述了当前MIDlet的名称与版本,发行人,指定的jar包名称与大小,支持CLDC与MIDP版本的信息。 5.2 游戏主要设计思想 此游戏的关键点是潜艇是否被击中的判断,整个屏幕是一个二维坐标系军舰在一个水平

25、位置移动当在某个位置发射鱼雷判断鱼雷的图片与不断移动的潜艇图片是否有重合的地方,如果有发生爆炸,如果没有继续移动。 5.3 游戏主要功能的实现 5.3.1 游戏画布类FIRCanvas的实现 FIRCanvas继承Canvas类,用来实现整个游戏的主界面。 代码具体如下: public FIRCanvas(){ CMD_BG = new Command("更改背景",8, 2); CMD_SOUND = new Command("切换声音", 8, 2); CMD_BACK = new Command("退出", 8, 2);

26、 addCommand(CMD_BG); 图 5-1 屏幕坐标示意图 addCommand(CMD_SOUND); addCommand( CMD_BACK); setCommandListener(this); try { imgBack = Image.createImage (getWidth(), getHeight()); gBack = imgBack.getGraphics(); sound = SoundEffects.

27、getInstance(); boatImage[0] = Image.createImage("/res/ship0.png"); boatImage[1] = Image.createImage("/res/ship1.png"); bombImage = Image.createImage("/res/boom.png"); sImage1[0] = Image.createImage("/res/q1.png"); sImage1[1] = Image.createImage("/res

28、/h2.png"); sImage2[0] = Image.createImage("/res/r1.png"); sImage2[1] = Image.createImage("/res/q2.png"); boomImage[0] = Image.createImage("/res/b.png"); boomImage[1] = Image.createImage("/res/f1.png"); boomImage[2] = Image.createImage("/res/b2.png");

29、 } catch (Exception e) { e.printStackTrace( );} width = this.getWidth(); //获得屏幕宽度 height = this.getHeight();//获得屏幕高度 imgBack = Image.createImage (getWidth(),getHeight()); gBack = imgBack.getGraphics(); //创建次画面和次画笔 offScreen = Im

30、age.createImage(width, height); offG = offScreen.getGraphics(); boat = new Boat(boatImage, width); init(0); init(1); bomb = new Bomb(bombImage, 0, 0, height); Thread t = new Thread(this); t.start( ); playMusic();} private voi

31、d init(int num) { if (num == 0) { submarine[0] = new Submarine(sImage1, width, height, 0, boomImage);} if (num == 1) { submarine[1] = new Submarine(sImage2, width, height, 1, boomImage);}} ●类中声明了游戏中需要的各种对象,并载入游戏中的图片 ●在类中启动新线程,调用线程类得run()方法来运行程序 protected void paint(Graphic

32、s g) { //清屏 offG.setColor(0xffffff); offG.fillRect(0, 0, width, height); offG.setColor(0); //绘制 if(imgBack != null) { offG.drawImage(imgBack, 0, 0, Graphics.TOP | Graphics.LEFT);} boat.paint(offG); submarine[0].paint(offG);

33、 submarine[1].paint(offG); if (bomb.isDisplay) { bomb.paint(offG);} //绘制得分 offG.drawString("得分:" + score,4,4,Graphics.TOP | Graphics.LEFT); //将次画面贴到主画面 g.drawImage(offScreen, 0, 0, Graphics.TOP | Graphics.LEFT);} ●Paint()方法用来游戏中的各种物体图片绘制到屏幕上 public

34、 void keyPressed(int keyCode) {//转换为游戏动作 int action = this.getGameAction(keyCode); switch (action) { case Canvas.LEFT: //向左 isRepeated = true; boatDirection = Boat.BOAT_MOVE_LEFT; break; case Canvas.RIGHT: isRepeate

35、d = true; boatDirection = Boat.BOAT_MOVE_RIGHT; break; case Canvas.FIRE: if (!bomb.isDisplay) { bomb.isDisplay = true; bomb.setX(boat.x+boat.getBoatImageWidth()/2-bomb.getImageWidth() / 2); bomb.setY(boat.Y + boat.getBoatImag

36、eHeight() - bomb.getImageHeight()); } //设置坐标 break; } //重新绘制 repaint(); } ●keyPressed()方法用来判断用户的按键,从而控制军舰的移动 protected void drawBackground (Graphics g) { byte bX = 0, bY = 0; int imgWidth, imgHeight; Image image

37、 if (back < 0) { g.setColor (0x00AAAAFF); g.fillRect (0, 0, CanvasWidth, CanvasHeight); } else {try {image = Image.createImage (BackArray[back] ); imgWidth = image.getWidth(); imgHeight = image.getHeight(

38、); while (bY * imgHeight <= CanvasHeight) {bX = 0; while (bX * imgWidth <= CanvasWidth) {g.drawImage (image, bX * imgWidth, bY * imgHeight, Graphics.TOP|Graphics.LEFT); bX++; } bY++

39、} } catch (IOException ioe) { System.out.println ("Img not found:" + BackArray[back]); g.setColor (0x00AAAAFF); g.fillRect (0, 0, CanvasWidth, CanvasHeight); } } } ●drawBackground()方法用来绘制背景图片 public vo

40、id run() { while (isRunning) { try { Thread.sleep(100); } catch (Exception e) {} if (isRepeated) { boat.move(boatDirection);} if (!submarine[0].isIsBoom()) { submarine[0].move();

41、 } else { //播放爆炸效果 submarine[0].boom();} if (!submarine[1].isIsBoom()) { submarine[1].move(); } else { //播放爆炸效果 submarine[1].boom();} if (bomb.isDisplay) { bomb.move(); if (bomb.co

42、llidesWith(submarine[0])) { bomb.handlecollidesWith(submarine[0]); score-= 10; } if (bomb.collidesWith(submarine[1])) { bomb.handlecollidesWith(submarine[1]); score += 10; }}

43、 System.gc(); repaint();}} ●run()方法用来运行程序 private void playMusic(){ sound.stopMusic(); switch(music){ case 0: break; case 1: sound.playSpringMusic(); break; case 2: sound.

44、playCityMusic(); break; case 3: sound.playFlowerMusic(); break; default:break;}} ●playMusic()方法用来执行音乐的选择和播放 public void commandAction(Command c, Displayable d) {if (c == CMD_BACK) {midlet.instructionsBack();

45、 }else if (c == CMD_SOUND) { music++; if(music==5)music=0; playMusic();} else if (c == CMD_BG) {back++; if(back==BackArray.length)back=0; drawBackground(gBack); repaint(); }}} ●按钮的事件处理方法:更换背景,更换背景音乐,

46、退出游戏 5.3.2 军舰类的实现 游戏中有用户控制的军舰类Boat主要用来在屏幕中绘制出军舰的外观,并定义其移动的方法。具体代码如下: public Boat(Image[] boatImage, int width) { this.boatImage = boatImage; this.width = width; this.boatImageWidth = boatImage[0].getWidth(); this.boatImageHeight = boatImage[0].getHeight();}

47、●类的构造器Boat()中声明要显示的图片 public void paint(Graphics g) { g.drawImage(boatImage[direction], x, Y, Graphics.TOP | Graphics.LEFT);} ●paint()方法用来绘制军舰的外观 public void move(int direction) { this.direction = direction; if (this.direction == BOAT_MOVE_LEFT) { if (x > dx) {

48、x -= dx; } else { x = 0; } } if (this.direction == BOAT_MOVE_RIGHT) { if (x + boatImageWidth < width - dx) { x += dx; } else {x = width - boatImageWidth;}} } ●move()方法用来定义军舰的移动方法 军舰是向左或向右移动,要进行边界检测如果到边后就不能再移动。 5.3.3 潜

49、艇类的实现 游戏中的潜艇类submarine主要用来在屏幕中绘制出潜艇的外观,并定义生成潜艇、移动潜艇以及潜艇爆炸方法,具体代码定义如下: public Submarine(Image[] submarineImage, int width, int height, int num,Image[] boom) { this.submarineImage = submarineImage; this.width = width; this.height = height; this.num = num;

50、 this.boom = boom; this.imageWidth = submarineImage[0].getWidth(); this.imageHeight = submarineImage[0].getHeight(); generate();} ●类的构造器submarine()中声明要显示的图像,并产生一个潜艇对象 public void paint(Graphics g) { if (!isBoom) { g.drawImage(submarineImage[di

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服