Java手机游戏开发 毕业论文.doc_第1页
Java手机游戏开发 毕业论文.doc_第2页
Java手机游戏开发 毕业论文.doc_第3页
Java手机游戏开发 毕业论文.doc_第4页
Java手机游戏开发 毕业论文.doc_第5页
免费预览已结束,剩余26页可下载查看

下载本文档

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

文档简介

毕业设计论文题 目: java手机游戏开发专 业: 计算机应用技术 指导老师: 姓 名: 二 一 一 年 九 月 二 十 日摘 要经过多年的发展,java已经逐渐壮大成熟,在近几年全球编程语言排行榜上始终名列前茅,由于java“一次编写,随处运行”的特性,使得java开发的程序可能适应不同的操作竹编和硬件。同时具有面向对象、跨平台、安全性高、免费等优势,在很多高校中,java已经成为很多科研、课程应用和计算的首先语言。java编程语言及平台成功地应用在网络、手机游戏、及移动应用领域。j2me 是sun 公司针对嵌入式、消费类电子产品推出的开发平台,其继承了java的跨平台能力。目前绝大多数的手机游戏均是采用j2me技术开发的。本课题的研究任务是采用j2me技术开发一个支持midp2.0的手机游戏程序飞机大战,游戏以珍珠港战役为背景,展现了空中格斗的精彩场景,游戏开发的核心技术在于其游戏引擎的构建。本文详细介绍了java发的展、开发环境的构建、“飞机大战”游戏软件的设计思路和主要功能算法的具体实现。让读者充分了解手机游戏的开发流程。 关键字:j2me java 喜洋洋大战 java中的类 项目目录摘 要1abstract2前 言5一、java是一门经过充分发展,已经十分成熟的语言。5二、java作为平台,极大的方便了游戏脚本的使用5三、跨平台5第一章java简介7历史版本7java技术7同类会议规模之纪录7第二章、java开发环境及特点81.1 开发环境81.2 java语言特点82. 安全性83. 面向对象84. 分布式85. 健壮性86. 可移植性87.解释型88.高性能8第三章、游戏设计的需求分析95.1 midp中的游戏api95.2 游戏类构成95.2.1 boxer类的实现95.2.2 gamecanvas类的功能及特点95.2.3 sprite类的功能及特点9样例: 5.3 游戏角色的处理95.4 游戏中的事件处理105.4.1 key pressed方法105.4.2 key released方法10第五章、喜羊羊大战灰太狼项目分析12一、游戏的由来12二、喜羊羊大战灰太狼的游戏规则12三、在项目中所用的类12) startgame主类122)food类(现实给喜羊羊加血条的类)193)fly类(实现灰太狼飞行的类)204)enemybu类(实现在窗体中画出敌机的子弹类)255)bossbu类(实现喜羊羊子弹飞行类)27本项目的爆炸图展示:282)敌军老王展示图:283)背景展示图:284)敌军子弹图展示:295)我军展示图:296)我军子弹、敌军子弹、加血条展示图:297)游戏进行中的截图:29五、本项目中的重点和难点:291、窗体监听292)代码展示294) 背景移动305) 双缓冲30第六章、结论31致谢32参考文献33前 言java自问世以来,以其得天独厚的优势,在it业界掀起了研究、开发它的浪潮,显示了鹏程万里的美好前景。作为一种与底层硬件无关的、“编写一次,到处运行”的高级语言和计算平台,java天生就具有将网络上的各个平台连成一体的能力,真正实现了“网络就是计算机”的理念。以java为代表的网络的成长,改变了我们的联系方式、生活方式、学习方式和经营方式。它的来到使我们目睹了一场类似印刷术的重大变革。毫无疑问,它将影响人类社会的发展,这就是: java加速人类进入网络时代!由于java技术的不断发展,java程序的运行速度有了显着提升,同时硬件技术也在不断进步,从而使得java处理比较复杂的3d图形成为可能。 lwjgl,jogl,java3d等技术的出现,使java语言可以方便的利用现在的显卡日益强大的硬件加速能力。实际上目前已经有许多基于java的 2d和3d游戏,其中不乏大型多人在线游戏。一、java是一门经过充分发展,已经十分成熟的语言。java语言称霸企业级应用这么多年,事实证明了它非常适合于开发大型软件。当java的运行效率不再是问题的时候,java语言严谨、高抽象、可读性强的优势就体现出来了。这对于规模越来越庞大的游戏软件来说,有着不小的诱惑。二、java作为平台,极大的方便了游戏脚本的使用对于游戏开发来说,由于涉及到比较复杂的情况(有时候甚至是美学问题),开发过程很多时候是一个不断修改的过程,可以方便的修改游戏内容是十分关键的。对于很多游戏引擎来说,都有自己编写的脚本解释器,用来解释一些自定义的游戏脚本语言(一般为命令式脚本,比如moveplayer(int x,inty),playersmile()之类的东西),另一些则提供了例如lua和rubby等的脚本语言来访问游戏引擎。由于其虚拟机特性,java本身就可以用来编写游戏脚本,目前也有例如beanshell、groovy等脚本语言可以方便的无缝的和java语言进行交互,这些都极大的方便了java游戏编程。三、跨平台跨平台,每当比较java与其他语言的时候,总是要谈到跨平台。但是在java游戏领域,write once ,run everywhere,听起来更像是一个冷笑话。这个笑话有多冷呢?(手机游戏我不熟悉,但是确实有人用“痛苦”来形容开发运行在不同手机上的 javame游戏)对于其他大多数java游戏来说,或者通过applet或者通过java web start来部署,这两种方式无一例外的都要用到浏览器。对于java web start来说,问题相对较小,程序员必须处理的问题主要是如何让非专业用户成功安装指定的jre版本的问题,虽然很麻烦,但是是可以解决的。对于applet来说,问题就变得复杂的多,很多问题只会在特定的操作系统配上特定的浏览器时才会出现,即使是同一品牌的浏览器,不同的浏览器版本也会出现不同的问题,同时这里还涉及到客户机默认是使用opengl pipeline还是directdraw pipeline的问题。而我们现在甚至还没有开始讨论当3d游戏需要使用底层图形api时的情况,无论是applet还是web start一旦在程序中使用了任何一种opengl的java绑定,客户机各不相同的显卡以及同一款显卡的不同驱动都会带来不同的问题,而这些问题是随着操作系统和浏览器的不同而不同的,操作系统数浏览器数(web start不需要考虑浏览器)显卡数每款显卡平均的驱动版本数=噩梦。最后你不得不妥协于这样一个现实-即使电脑在硬件上满足程序的要求,你也无法让你的程序运行在这些电脑中的每一台上,除非你的用户都是专业人士。对于不使用java的大多数游戏来说,根本就只能运行在一个平台上,许多游戏对directx或者 opengl的版本有要求,更不要提那些运行在家用游戏机上的游戏了,跨平台是整个游戏业的大问题,java只是像其他人一样没有把这个问题彻底解决掉而已,但仍然比其它技术做得要好。不过,值得一提的是,在那些不直接使用硬件加速的网页小游戏上,java确实在稳定性和方便安装上输给了flash;在家用机方面,java是0,而微软的xna(c#)可以跨xbox360和vista。第一章java简介java,是由sun microsystems公司于1995年5月推出的java程序设计语言和java平台的总称。java平台由java虚拟机(java virtual machine)和java 应用编程接口(application programming interface、简称api)构成。java分为三个体系javase(java2 platform standard edition,java平台标准版),javaee(java 2 platform,enterprise edition,java平台企业版),javame(java 2 platform micro edition,java平台微型版)。历史:java自1995诞生,至今已经16年历史。java的名字的来源:java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。java语言中的许多库类名称,多与咖啡有关,如javabeans(咖啡豆)、netbeans(网络豆)以及objectbeans (对象豆)等等。sun和java的标识也正是一杯正冒着热气的咖啡。历史版本1995年5月23日,java语言诞生 1996年1月,第一个jdk-jdk1.0诞生 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入java技术 1996年9月,约8.3万个网页应用了java技术来制作 1997年2月18日,jdk1.1发布 1997年4月2日,javaone会议召开,参与者逾一万人,创当时全球同类会议规模之纪录 1997年9月,javadeveloperconnection社区成员超过十万 1998年2月,jdk1.1被下载超过2,000,000次 1998年12月8日,java2企业平台j2ee发布 1999年6月,sun公司发布java的三个版本:标准版(j2se)、企业版(j2ee)和微型版(j2me) 2000年5月8日,jdk1.3发布 2000年5月29日,jdk1.4发布 2001年6月5日,nokia宣布,到2003年将出售1亿部支持java的手机。2001年9月24日,j2ee1.3发布 2002年2月26日,j2se1.4发布,自此java的计算能力有了大幅提升。 2004年9月30日18:00pm,j2se1.5发布,成为java语言发展史上的又一里程碑。为了表示该版本的重要性,j2se1.5更名为java se 5.0。 2005年6月,javaone大会召开,sun公司公开java se 6。此时,java的各种版本已经更名,以取消其中的数字“2”:j2ee更名为java ee,j2se更名为java se,j2me更名为java me。 2006年12月,sun公司发布jre6.0。 第二章、java开发环境及特点1.1 开发环境操作系统:microsoft windows xp / windows 7程序语言:java 开发平台ide: eclipse 3.011.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语句、操作符、重载等不易被掌握的特性,提供垃圾收集器自动回收不用的内存空间。6. 可移植性这种可移植性来源于体系结构中立性,另外,java还严格规定了各个基本数据类型的长度。java系统本身也具有很强的可移植性,java编译器是用java实现的,java的运行环境用ansi c实现的。7.解释型java程序在java平台上被编译为字节码格式,然后可以在实现这个java平台的任何系统中运行。在运行时,java平台中的java解释器对这些字节码进行解释执行,执行过程质量关需要的类在联接阶段被载入到运行环境中。8.高性能与那些解释型的高级脚本语言相比,java的确是高性能的。事实上,java的运行速度随着jit(just-time)编译器技术的发展越来越接近于c+。第三章、游戏设计的需求分析 5.1 midp中的游戏apimidp是专门为互联受限设备配置设计的,它为移动设备提供了一套api集合,midp包含用户界面类、持久存储功能与网络功能。早在midp1.0版本时,是没有单独的游戏api的,在midp2.0后增加了一个新的专门的游戏软件包javax.microedition.lcdui.game,顾名思义,此包中定义了游戏开发的各种类型。这个软件包是一个专门为在移动信息设备上开发游戏应用而设计的,所以又叫作游戏api。10它里面的成员类有以下几个:gamecanvas、layer、layermanager、sprite、tiledlayer。gamecanvas是提供基本的游戏界面;layer是一个用来表示游戏中的可视元素的抽象类;layermanager管理一系列的layer;sprite是一个基本的可视元素,它本身包含了许多操作,比如将一个图片切分成若干画面帧(row frame),再对这些画面帧编排出一个动画序列(frame sequence);tiledlayer是一个可以被许多图片填充的类似于表格的可视元素。10本论文在设计游戏过程中涉及到其中的gamecanvas类和sprite类。5.2 游戏类构成在游戏中,主要的一些类构成有pocket boxing、boxer、enemy、gamecanvas。其中pocket boxing类继承了midlet类,用来进行midlet的live cycle控制;boxer存储了玩家的拳击手的信息,进行拳击手的描绘;enemy存储电脑控制的拳击手的信息,进行拳击手的描绘,它继承了boxer类;gamecanvas继承了canvas类,进行画面的描绘与操作。各类都是用与类名称相同的文件名来存储的。5.2.1 boxer类的实现boxer类是用来存储玩家拳击手状态的信息,再以次为根据进行描绘。boxer类由于与用来表现对手的enemy类大致上是相同的,所以要以继承了enemy类为前提来实现。在boxer类的constructor当中,会进行拳击手图像的获取。这里要准备拳击手的身体、上段防御的手腕、下段防御的手腕、上段拳击的手腕、下段拳击的手腕等五种图像。通过身体图像四种类图像的配合,就可以描绘出生动拳击手动态。5.2.2 gamecanvas类的功能及特点gamecanvas类是javax.microedition.lcdui软件包中的cavas类的一个子类,它可以为游戏提供基本的显示功能;gamecanvas类是提供了游戏的中心属性,如游戏键当前状态的能力、双缓存绘图等;gamecanvas类是一个专门的为每一个gamecanvas实例填充初始化纯白像素的缓存器;通过调用graphics对象可以改变缓存器中的内容。5.2.3 sprite类的功能及特点sprite类是一个能显示几个绘图帧(frame)中的其中一帧的基本动态层;这些帧大小相同并且由一个单独的图片(image)对象提供;sprite类可以使许多帧连续的运动,可以使一个定制的序列以任何方式被放置;另外还可以提供转化于检测方法。下面是sprite代码样例: 5.3 游戏角色的处理这里的游戏角色拳击手的初始化是以将拳击手设为后退,并将生命值设为默认值为主要目的。拳击手在挥出拳之后,将会在等待一段时间后恢复原本的防御状态。为了要进行这个等待处理,使用到了tick计数。当现在的状态为上下拳击时,就会开始tick计数,当数到4以上的状态时就会回到原来的防御位置。这样一来就可以表现出拳击手出拳头后再回到原来防御状态的样子。不过,在后退时挥出拳击的情况中,这里不能马上回到后退状态。要在挥出拳击后回到后退状态时,就得通过玩家自己的操作来进行了。5.4 游戏中的事件处理事件可以分为低层事件( low-level event )与高层事件( high-level event )。低层事件一般用来处理设备事件,如:按键事件、探针事件。高层事件用来处理应用中的相关事件,如:命令事件、组件状态变化事件。由于开发手机游戏时我们主要用到的是key事件的处理方法,因为移动设备的键盘是传递用户意图的最主要的输入设备,key事件属于低层事件。那么低层事件中用下面的两种方法来处理应用的key事件。5.4.1 key pressed方法方法key pressed是用来处理键被按下的事件,这个方法没有与其对应的显示的听众对象( listener ),这些听众对象有系统根据实际对象缺省提供,例如后面提到的canvas对象就是默认的key事件听众对象,它缺省地实现了key listener接口。简单的一个样例代码:public void keypressed (int keycode) if (keycode 0) /输出当前被按下键的键码system. out.println(“keypressed ” +( (char) keycode ) ); else 当按下手机的操作键盘上的按键时,就会触发这key事件,系统并会自动调用keypressed()方法,并且系统将捕获到的键码传递给该方法,在上面的那段代码中方法判断了所按的按键值是否大于0,如果大于0输出所按的手机键盘上的实际值,否则执行其他的操作任务。 5.4.2 key released方法可以说方法key released()与上面提到的keypressed()方法是对应的。它是用来处理手机操作键盘上的按键被释放的事件,这个方法也同样没有与之对应的显示的听众,这些听众也是由系统根据实际对象提供的。下面是一个样例代码: public void keyreleased(int keycode) if (keycode 0 ) / /输出当前被释放键的键码system.out.println(“keyreleased ” +( (char) keycode) ); else 当释放手机操作键盘上被按下的按键时,则会触发这个key事件,系统并会自动交由keyreleased()方法来处理该事件,同样的上面的这段代码中,该方法判断了所按的按键值是否大于0,如果大于0则输出所释放的手机键盘上的被按下的按键的实际键值,否则执行其他的操作任务。 上面说的是在开发手机游戏过程中遇到的两种低层事件的方法keypressed方法和keyreleased方法,下面就具体介绍“pocket boxing”手机游戏的开发过程。第五章、喜羊羊大战灰太狼项目分析一、游戏的由来本游戏是通过动画片由感而发,合适儿童娱乐。让他们亲身体验一下动画中的主角,从而达到轻松的、放松的目的。二、喜羊羊大战灰太狼的游戏规则 用w、a、s、d分别控制喜羊羊的上、左、下、右的移动 ,用wa、wd分别控制喜羊羊的左下、右下的移动。背景移动的同时,灰太狼在画面中随机产生。同时灰太狼也随机发送子弹。当灰太狼被喜羊羊的子弹击中同时红色血条变为o,灰太狼消失。用来发子弹。三、在项目中所用的类) startgame主类(实现把各个类中的对象集在一起,并在窗体中画出各个对象)import java.awt.frame;import java.awt.graphics;import java.awt.image;import java.awt.mediatracker;import java.awt.toolkit;import java.awt.event.keyadapter;import java.awt.event.keyevent;import java.awt.event.windowadapter;import java.awt.event.windowevent;import java.util.arraylist;import java.util.list;import java.util.random;/* * 游戏主窗体 * * author yxy 2011/4/24 10:00 * */public class startgame extends frame private static final long serialversionuid = 1l;/ 窗体宽public int width = 800;/ 窗体高public int height = 500;/ 使用toolkit工具private static toolkit tool = toolkit.getdefaulttoolkit();/ 背景图片private image bk_image = null;public string bktuurl;/ 背景移动x坐标private static int bk_move = 0;/ 创建子弹集合bulistpublic arraylist bulist = new arraylist();/ 创建敌机集合public arraylist em_fly = new arraylist();/创建boss子弹集合public arraylist bossbu = new arraylist();/ 爆炸类的集合public list explode_list = new arraylist();/补给品列表public list food_list = new arraylist();/游戏胜利public image gameoverwon=tool.getimage(boss.class.getresource(/image/gameoverwon.png);public image won=tool.getimage(boss.class.getresource(/image/won.gif);/* * 爆炸图片 */private image image0 = tool.getimage(startgame.class.getresource(/image/bao001.png);private image image1 = tool.getimage(startgame.class.getresource(/image/bao002.png);private image image2 = tool.getimage(startgame.class.getresource(/image/bao003.png);private image image3 = tool.getimage(startgame.class.getresource(/image/bao004.png);/ 获取爆炸需要的4个图片public image explode_imgs = image0, image0, image0, image0, image0,image1, image1, image1, image1, image1, image2, image2, image2,image2, image2, image3, image3, image3, image3, image3;/ 创建一个媒体跟踪器public static mediatracker mt = null;/ 新建一个fly类的fly对象fly fly = new fly(this);boss boss = new boss(this);/ 计时器private int time;/下一个敌机出现间隔private int newenemytime=60;/ boss出现时间private int bosstime = 1800;/关卡控制public int lv=1;/boss可发射子弹信号public boolean bossshit=false;/* * 显示游戏窗体 */public void showwindow() / 设置标题settitle(喜羊羊大战灰太狼);/ 设置窗体大小setsize(width, height);/ 设置x坐标int w_width = (int) (tool.getscreensize().getwidth() / 2 - width / 2);/ 设置y坐标int h_height = (int) (tool.getscreensize().getheight() / 2 - height / 2);/ 设置坐标setlocation(w_width, h_height);setresizable(false);/* * 窗体关闭监听 */addwindowlistener(new windowadapter() overridepublic void windowclosing(windowevent arg0) system.exit(0););/ 按键监听addkeylistener(new keyadapter() overridepublic void keypressed(keyevent key) / 键盘响应飞机移动fly.move(key);overridepublic void keyreleased(keyevent e) fly.rmove(e););/ 创建绘制线程repaintthread re = new repaintthread();/ 设置显示setvisible(true);re.start();/ 新建一个媒体跟踪器mt = new mediatracker(this);/* * 把爆炸的图片加载到媒体跟踪器里面 */mt.addimage(explode_imgs0, 0);mt.addimage(explode_imgs1, 0);mt.addimage(explode_imgs2, 0);mt.addimage(explode_imgs3, 0);try / 开始加载媒体跟踪器里面的图片mt.waitforid(0); catch (interruptedexception e1) e1.printstacktrace(); /* * 绘制线程类 * * author yxy 2011/4/24 14:30 * */private class repaintthread extends thread override/* * 线程方法 */public void run() while (true) try thread.sleep(25); catch (interruptedexception e) e.printstacktrace();if(fly.flylive=false)em_fly.removeall(em_fly);bulist.removeall(bulist);bossbu.removeall(bossbu);explode_list.removeall(explode_list);food_list.removeall(food_list);if(boss.bosslive=false&fly.flylive)bossbu.removeall(bossbu);lv+=1;time=0;if(lv=2&time=0)boss.bosslive=true;boss.blood=boss.bossimage_x;fly.flyblood=100;/设置boss坐标boss.boss_y=height-50;boss.boss_x=width-boss.bossimage_x;if(lv=3&time=0)boss.bosslive=true;boss.blood=boss.bossimage_x;fly.flyblood=100;/设置boss坐标boss.boss_y=height-50;boss.boss_x=width-boss.bossimage_x;time+;fly.tomove();/ 重绘em_list();bossbu_list();food_list();repaint();/* * 创建di机列表 * * return */public void em_list() random r = new random();if (time % newenemytime= 0 & time bosstime) bossbu bossbullet=new bossbu(this); bossbullet.setlocat(boss.boss_x, boss.boss_y+boss.bossimage_y/3*2); bossbu.add(bossbullet); public void food_list() random r = new random(); if (time%400=0) food food=new food(this); food.setlocat(width,r.nextint(height) + 35 ); food_list.add(food); /* * 调用fly飞机类绘制方法 */overridepublic void paint(graphics g) / 绘制飞机fly.paint(g);/ 绘制子弹for (int j = 0; j bulist.size(); j+) / 在框内则绘制子弹bulist.get(j).paint(g);/ 绘制敌机for (int i = 0; i em_fly.size(); i+) em_fly.get(i).paint(g);/ 显示爆炸for (int i = 0; i = bosstime&fly.flylive=true) boss.paint(g);bossshit=true;/* * boss绘制出后,可以开始发射子弹 */if(bossshit=true)for (int i = 0; i 3&boss.bosslive=false)g.drawimage(gameoverwon,180,80,400,400,this);g.drawimage(won,320,230,this);for(int i=0;ifood_list.size();i+)food_list.get(i).paint(g);/* * 消除闪烁 背景移动 */overridepublic void update(graphics g) / 缓冲图片为空,创建一个跟窗体大小一样的图片if (bk_image = null) bk_image = this.createimage(width, height);/ 新建一个画笔bk_g,得到缓冲图片画笔graphics bk_g = bk_image.getgraphics();/* 设置背景缓冲图片 *1-3关卡背景 */if(lv=1) bktuurl=/image/beijing010.gif;if(lv=2)bktuurl=/image/beijing005.gif;if(lv=3)bktuurl=/image/beijing003.gif; image back_image = tool.getimage(startgame.class.getresource(bktuurl);bk_g.drawimage(back_image, -bk_move, 0,width, height, this);bk_g.drawimage(back_image, width - bk_move, 0,width, height, this);/ 图片绘制坐标控制if (bk_move width) bk_move += 2; else bk_move = 0;/ 在缓冲图片上画图paint(bk_g);/ 将缓冲图片画在主窗体上g.drawimage(bk_image,0,0,this);/* * 入口方法 * * param args */public static void main(string args) / 创建游戏主界面startgame s = new startgame();s.showwindow();2)food类(现实给喜羊羊加血条的类)import java.awt.graphics;import java.awt.image;import java.awt.rectangle;import java.awt.toolkit;/* * boss zidan * author yxy 2011/5/8 * */public class food / 使用toolkit工具private static toolkit tool = toolkit.getdefaulttoolkit();/ 补给品public string yaourl;/ 图片绘制大小public int yaotu_x = 50;public int yaotu_y = 50;/ 补给品坐标public int yao_x ;public int yao_y;/生命状态public boolean yao_live = true;/ 设置发射子弹坐标public void setlocat(int yao_x, int yao_y) this.yao_x = yao_x;this.yao_y= yao_y;startgame game;public food(startgame game) this.game=game;public void paint(graphics g) yaourl=/image/yao002.png;image bossbullt = tool.getimage(startgame.class.getresource(yaourl);if(yao_live=true)g.drawimage(bossbullt,yao_x,yao_y,yaotu_x,yaotu_y,game);bossbumove();public void bossbumove()yao_x-=3;if(yao_x100)game.fly.flyblood=100;yao_live=false;public rectangle getrectangle()return new rectangle(yao_x,yao_y,yaotu_x,yaotu_y);3)fly类(实现灰太狼飞行的类)import java.awt.color;import java.awt.graphics;import java.awt.image;import java.awt.rectangle;import java.awt.toolkit;import java.awt.event.keyevent;public class fly / 使用toolkit工具private static toolkit tool = toolkit.getdefaulttoolkit();/ 飞机图片public image img = tool.getimag

温馨提示

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

评论

0/150

提交评论