版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、淮阴工学院实验报告27 / 2120162017学年学期学 院计算机与软件工程学院课程名称 算法实训班级达内1151学 号 1151331134姓名陈龙指导教师 达内讲师算法实训实验报告一、实训目的及意义进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java 开发的实战经验。学习java的基础知识及正确的运用方法,和有用的相关技术, 提高自己的工作效率。通过实习,巩固大二所学专业的基本知识,提高分析、判 断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识, 了解软件开发的思考角度和主要流程。为毕业之后能够更快地进入工作状态并且 能够更好的工作,打好一定的
2、基础。、实训任务实习期间,通过学习一个简单的 Java程序一一飞机大战,了解和掌握 Java 编程的基础,如构造器、API接口等。最后可以独立完成一个小程序。、实习训语言Java的特点I. Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和 使用Java。另一方面,Java丢弃了 C+中很少使用的、很难理解的、令人迷 惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,不必为内存管理而担忧。2、Java 语言是一个面向对象的Java 语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承, 但支持接口之
3、间的 多 继承, 并支持类 与接口之间 的实现 机制(关键 字为 implements )。 Java 语言全面支持动态绑定, 而 C+ 语言只对虚函数使用动态 绑定。总之, Java 语言是一个纯的面向对象程序设计语言。3、 Java 语言是分布式的Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网 络应用编程接口( ),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、 ServerSocket 等。Java 的 RMI(远程方法激活)机制 也是开发分布式应用的重要手段。4、 Java 语言是健壮的Java 的
4、强类型机制、异常处理、废料的自动收集等是 Java 程序健壮性的重要保 证。对指针的丢弃是 Java 的明智选择。 Java 的安全检查机制使得 Java 更具健 壮性。5、 Java 语言是安全的Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的 攻击。除了 Java 语言具有的许多安全特性以外, Java 对通过网络下载的类具有 一个安全防范机制(类 ClassLoader ),如分配不同的名字空间以防替代本地的 同名类、字节代码检查,并提供安全管理机制(类 SecurityManager )让 Java 应用设置安全哨兵。6、 Java 语言是体系结构中立的Ja
5、va 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节 码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中 运行。这种途径适合于异构的网络环境和软件的分发。7、 Java 语言是可移植的 这种可移植性来源于体系结构中立性,另外, Java 还严格规定了各个基本数据 类型的长度。 Java 系统本身也具有很强的可移植性, Java 编译器是用 Java 实现 的,Java的运行环境是用ANSI C实现的。8、Java 是高性能的与那些解释型的高级脚本语言相比, Java 的确是高性能的。事实上, Java 的运 行速度随着 JIT(Just
6、-In-Time) 编译器技术的发展越来越接近于 C+。9、Java 语言是多线程的在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来 创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的 构造子将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。 值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法, 而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控 制。
7、Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关 键字为 synchronized )。10、Java 语言是动态的Java 语言的设计目标之一是适应于动态变化的环境。 Java 程序需要的类能够动 态地被载入到运行环境, 也可以通过网络来载入所需要的类。 这也有利于软件的 升级。另外, Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检 查。四、实习时间2016年 12月 12日 12月 16日五、实训项目 - 飞机大战 【1】方案1. 需求:2.需求分析:,Hero(英雄机),Airplane(敌机),Bee(小由图2可以看出游戏中至少有4 蜜蜂),Bulle
8、t(子弹)。3.类的设计1.创建 4个类敌机: Airplane小蜜蜂: Bee子弹: Bullet 英雄机: Hero2. 两个接口敌人: Enemy奖励: Award3. 一个父类飞行物: FlyingObject4. 一个测试类ShootGame 其中,敌机继承敌人,继承飞行物子弹,飞行物,继承飞行物小蜜 蜂继承奖励,继承飞行物5. 飞行物父类的对象和行为 对象:图形长宽,横纵坐标 行为:走步6. 奖励接口的对象和行为常量:奖励 0:双倍火力,奖励 1:一条命 抽象方法:奖励类型7. 敌人接口 抽象方法:分数8. 窗体类设置测试类ShootGame继承面板静态块:加载图形资源(方法区)初
9、始化静态资源在 mian() 中画窗体【2】项目目录如下:j 廿 rc m:ta fpti fly / Airpldnejad 丄 A.usard.java工 BeejavaJ Bu letjarra T Ennriyjavsj FlyinigO切J Hero a ShDoamev白* backgroundpngi bee.png% bu Irtpng g 占 mecgragD neroC.pngHL herol.pngP. MUSCiprigi3. Bullet1 pajectprivate Euffe户images = ;圭:m::二士private int index = 0;/圭圭k至
10、冃临蚩丰Wprivate int daubleFire;private int lifej口&5. Award1 package com . tarena . sfliootz;2S public interfa匚已 Award 45 int DWLE_FTftE = S;6 int LTF =_1; pubLic int getTypef);89 6. E nemypackageCoir.七arena . shaopublic interface Enemy public int gets匚口电();& 7. Flyi ngObject1 package com.tarena.shootj2
11、? + import java + awt, Image; |_56 public abstract class Flyingobject o9prteted int x; protected int y;10protected int width;11protected int height;12protected Buffeedlmae8.ShootGame1.加载图片眩1920pub丄让 cIses ShootGame extends DPanel public static final int WIDTH = 400; fj h*5 public static firuil int H
12、EIGHT - &54;面NM)222324252627282930313233343536public static public static pub-lit static public stat ic public static public atic public static public static public staticBufferedlmageBufferedlmage start;Bufferedlrrage g irpLan j BufferedImage bee; BufferedImage buciet;Buffsredlmage hro9;Bufferedlma
13、ge herd1, Bufferedlmage pduse; Bufferedlmage gareouer;private Flyingobject flyings = i privatebullets ; H 工圧二巨private Hero hero = new H皀广o(); : t 王:三:3738394041斗243444546474S4950占七atic /寺护三,士壬任宴占矢以y C background = Imagero. reutjSlio-atljfne. c lass.getResource (background. prtg); start - InageIO.rea
14、rffShootGame. class. getResaurceCsta rt .png1); G?trp LcriE = ImagelD厂f trd3hcic)tCinnE,匚las getResourcetairplane pri耳 bef = Hm戶昌Shoots目me*bpng);buL tet rmagelOread(ShootGame .class. getResource( bu lletpng.)j hero& = Image 10-read(ShootGamt. getRes&drce( Mhero0. png);herdl = Irra10-rearff ShdatGame
15、. class “ getReour( herol. png-); pause = Image 10. reacf( ShaotGame. class . getRes(Jurce( pau se. png1); pajpeover = ImagelO.read(5hootGsue-class ,ge七只亡50111:呂国0111电口*豐厂匚 png1);51 catch (Exception e) e. |rlfiftstac kT rare( ; )2.绘制窗体12S-127328129130131132133154血public static void maintStrlng a-gs)
16、 JFrame franis = neu IFrame (,n:=Lyr,);ShootG a me ame = new 5h&otGame; );/ 主frame旨dd(gaee); H 麻言-:=蔦?.JFeit巴申 frame. 5 etSize(KrOTW; 7 77fraire- 5etAlaysflrTop(true); /7 發鼻吕丄f rare. setDef aul tCloseOpe ratior)( J Frame. FXI T_0JV_Ci.代码重构1.1.在FlyingObject 类中添加get.set 方法(可在Source中生成)丄! +222描Zb27 兀39
17、*35public void setX(int x public int getY() public void setYfint 7) (Rlpublic int getuiidth() Qpublic void setWldth(int width) f口public in+ 吕utHE: fihrtO Ipublic void setHeightfint height)(public BGfie-edlflia_public void setImage(Buff&redlmage linage) J1.2.在Airplane , Bee, Bullet中添加构造方法L2-public Ai
18、rplane() 13th is. image = ShootGam. oi rL Gri i_-width = image -getwidtli( ;J.5lie ight = image .getlleightO;width);16 /y=-heiglit;17 /)c=(int)(Math,random()*5hootGame.WIOTH -ISK=10;19y=10;15 public Bee()16 this itriage = ShootGanre .bei?;17 width = Lmage.getwidtliO;18 height = image.getiEight()3119
19、/y = -height;2SI;Rsndom 电nd = new Ftandoirf );pl/:v = rnd* nctlnt( ShwtGame. WIDTH - width J j22x =y = 200;4 /awardType randHnextInt(2);H l11 public Bullet(inty) 12 this .3( = w;this.y = y;this . Image - ShootSam已.butL吕tr;15 16l- -public Image getImageC) 18 return null;19 2&public void setlmagefBuff
20、 eiredlrage irrags) this.image = image;231.3在ShootGame中画出英雄机,子弹,和飞行物&7684 6970717273747576777879-盹5284-95眈87旳9091 疥9354959697/* 3 V(iOver ridEpublic vxid paint (Graphics g) g h drawlmagef backgroundt 昭# 0f nul1);?paintHero(g)j Hpaint Bullets(e) j / 5=5= paintFlylngObjflttsfg); / paint5core(g)j J J录.
21、監 paintSlate(g) J- h七于t衣严 SMfi. */public void paintHero(Graphics g) g.drawlm自呂亡(h亡心一firs呂亡, hero.)c, hero.y null); 严*求冷* public void paintBulle七卩(丘厂phiusr g) for (int i - G; i +) Bull&t b - bullets5g.daImage(b.image, b.xf b.yjnull);public void paint FlyingOb-j sets (Graphics 呂) for (int i = 6; i fly
22、ings. 1ength; 1-H-) Fly1ngObject f = flyings1j gcfrawlmage (f.f f null);10.飞行物出场(工厂方法):n ext On e():随机出现蜜蜂和飞机206/*飞輕粧人爲/22 -public void nterAtti Flyingpbject obj = nejctOnef); / Sir生味一/戈战211 flyings = Ar rays. copy.敌机:扩充走步public void 毎七亡y += speedy2.小蜜蜂:扩充走步n2329393132 站343536public void itepQy += x
23、Speed;y += ySpeed;h.子弹:扩充走步(有参构造)q/5-2627public void 5tep() 、-=speed;4.英雄机:图片交换838487S 眇/*巻芒b/Overrld已public void step() iF(i耐吕丄即芬li町irr.age = imagesindex-H-/10351 mages_length;. =rher 20 be-cL其中,对比敌机走步与子弹走步,y是相反的,因为子弹是由英雄机发射,向上 飞行,敌机只有下落功能。蜜蜂是倾斜下落的,所以会发杂一些。英雄机的走步就是图片的交换,形成动画效果见图1,图1中有heroO和herol两张图
24、片,分别如:图 heroO 图 herol12.飞行物走步231233233public void flyngStepAeticn() for ( ini: i = i .在Hero中添加发射子弹的方法6768-697671727:7475.2777879HP81戈S手兰public Bullet 5hoct()int xStep = width/4:4土int yStep = 20i f.汙if (dcmtileFiree) /-=new Bullet2Dulletfx+xStepjy-yStep) i .Vy-ySteprzl)0ullet(x+3*x5tepjy-yStep)jBulle
25、t bullets bullet$O13ullets;bullets returnn new new/单晋止七Bullet bullets bullets0 = new return bullets;=neu Bullet1;Bullet(x+2*xStepy-ySt&p);2.在ShootGame中进行子弹入场(数组追加)241242publi匚 void shootAction() shootlndex-i-i-;246243244if (hcotlndex % 3Q - 6) 7一忝0ullet bs = hero.shootf); / 更t;杆二壬圮245纽24Bbullets Arr
26、ays.c-opyOfCbullets, bullets*length + t*s. length); / 5y5tem. arraycopybs, bullets, bullets-l亡n君th - ts . length, bs.length)i / 蛙二十山14.碰撞检测1.在Hero中添加如下代码public void addLife()public int isDoubleFirE( J return doutileFire;public wid setDoubleFlre(int doiiblei-e) this doubleFirc = doubleFirej/*讀乂火力*7pu
27、blic void ad(i&DutaleFir()dajblefipe = 403/*public void 5uttrattLLfe () life - -j/* */publi匚 iivt getLife( return life;勺1严9丄public boolean liit(FlyingObject other)9354intxl = othe.x -thiswidth/2j/?(呈京$:云吏95intx2 = o+he r*c 4-hds.width/2 4- cher + iidth 96intyl = othary -this height/2;-li哀97CQinty2 -
28、 other.y +this.height/2 + etherxl & heroxCrZ herxjyyl & hcroycyZ; FF区亡邑 可昭二了13 丁2.在ShootGame中进行碰撞检测2S1/*子皋宅戈弓特屋龙世懑*7252-public void bangAction() 253 for fint i = 0; i bulletslength; i卄) / :z;-=254 Bullet b = bullet3i;355bar)g(b); f/手冬丐戈呻此之卫尹上防丘琶256357312313314315516317318319320321322页325326 垃732S329
29、33033333233333433533633733S339349341342345344345346347/*壬上址飞冲戏艺m笏st畏哇整public voLd bang(Bullet bullet)-int index: = -1; /7 壬申刁广圭弓for (int i = Q; i flyings *length; i+) FlyingObject obj = flying5i;if (obj . shoot By (bullft) / .index = 1; /丘圧歧壬中比、“二弓break;if (indoc !- -1 HFlyingObject one - flyingsfLn
30、dexj / *受芒申出XI:FlyingObject temp = flylngsind&5(; H飞籽皙到民呑一4*14?幽更擬flyings index = flyings flyings . length - 1;flyings flyings .length - 1 = terp;flyings = ArrBys.copyOflyS5! flyings .length * 1); /,.些咯-口 恋才(卽徑壬串申) 遂兰口口亡封u去(狀九玄亍.锁甘念)if (one instanceof Enemy) H 二豈贺二壬右一-:二严fnemy e = (Eriemy) me; i 专匚韩
31、亍矛代sore += Ui呂电tS匚/ 匚寸 else i.在 hero,Airplane,bee,bullet中添加越界方法GL6263S465/*ifiOverridepublic: boolean cutOf Bounds ( ) rfturn FjalsejHhero类中需添加的越界方法29 glOver ridepublic boolean outOfBounds(31 return y Sh &otGa(re. I6WT;Airplane和bee类中需添加的越界方法15.状态切换1.画分和命gg 10&- lei 102 1C3104105L06107Lfl5109/*-壘彷鱼*7
32、public void paintScor?(Graphfcs g) fint x = L&; . J ickvint y = 25; /font font = new Fort(Font.545_SKT Font.aQLD 14; / 芋忑 g.setColar(new Color(0X3A3B3BJ);g,. etFont(font); / 強覽二博g- drawString(1RSCOFJE :,h 十 score k, y); L 宣二方y += 20;/ y気于#20g,drawString(*LrFt:十 hero. gctLifef),y);/ ”2.画状态23242526272
33、g;* 柱張封里电W墓:START RDNNirJG PAUSE (5AME_0VER */ private int tate;private static -final int START = 0;private static inal inrt RUNffING = 1;private static final int PAU5t = 2;private static final int GAfiir_OVER = 3;111 112113114U5116117 LIB115J. 56123122123124/* 1public void paint5tat&(Graphics g) sw
34、itch (state) case 5TART: .-7 吏Ml交吕d可wTiiw耳亡fwtcr厂nullb广u刊k;CdSC PAUE: /琶哼艺芒gdrarflinage0, &? null); breakscase CiAHE QVfFl: p .二 丁 ri;二匸夺吕.d 1玄1(/1|11玄吕亡(牙71?亡.状态切换146/*霄盖救吟杞m*7141-public void action() 142/量评人孑耳昨143-MouseAdapter 1 = new MouseAdaptE() 144-Override* 145public void(nouseMoved(Hou5eEven
35、t e) .714Cif (state RUfiNING) / :兰誉下书號吏主-严二147int k 二亡.getX();14Sint y = e.ctY();149her?+ mcveTo(xj y)j156151)153153Override血丄54public void mouseEntered(MoueEvent e) .兰心- .155if (state = PAUSE) / 哲书貯吝下三F156state = RUNfUNG-157156)15916&V獣)y亡rid己161public void iFiou5eExlted(rou5efwent e ) / - :1 162if
36、 (st日七已!= GAKE_OVER) /垮金未金亲.二坯芸飞営哼163state = PAUSE)1S4165Rn-r1&71-Override16Spublic void H)usClicked(MojteEvent e) 丿#,年卢青169switch (state) 17&tdse START:171State = RUWNIW5; /;三?上主=三吁172break;173毛毎QAME_OV(t 口宁z三盂存亍174flyings = new Flyingobject fl; / 主甘片175bullets = new &cilletd; / 弓仝二兰17&h&ro = new H
37、er-oQ; / 兰煙三匕匚177score - 0;/壬空式灯17&state = SFAflTi誉垃賣一乍k179break;131811S2J;1S3this. addMcuseListererfl);/ .宝匕弓壬夢吃L34 r*Lthis. addnicuEeMoti-anListener (2) ;7 互三匸丘产严:游戏界面效果:六、总结这次实训让我学到了很多东西,让我整体素质有所提升,明白了很多做人做 事的道理。第一、毕业了以后不是学习的结束,而是学习的开始,在当今社会, 只有不断地汲取新信息新知识,才能获得事业进步的动力,武装自己的头脑,提 升自己的能力,扩展自己的视野。第二、学习要联系实践,一个人的价值是通过 实践活动来实现的,也只有通过实践才能提升人的品质, 彰显人的意志。学到的 理论只有通过实践的检验才是合格的。第三、我们要做一个勤于思考的人,我们 只有注意观察、分析、总结、提炼,才能积累经验,使自己的工作做出成绩。同 时我也明白了遇到麻烦解决的办法有很多:第一、就是上网查询,不懂的可以查 查,不要一不会就去问别人,得先自己想办法解决;第二。请教别人。当自己查 资料解决不了,就去问一下别人,不要老死扣着,反而浪费时间。当然遇到麻烦 的事情千万不要着急,越着急越然人昏头转向,越着
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自我管理在职场发展中的重要性
- 工程信号与系统(第2版)课件 第1-4章 信号与系统概述 -傅里叶变换域频域分析
- 备战中考的演讲稿(集锦15篇)
- 2026年注册会计师CPA《审计》考前密押卷
- 译林版英语六年级下册Unit 5单元测试卷
- 2026年消防沙使用安全操作规程及注意事项
- 立柱盆安装施工工艺流程
- 生产外包管理实施办法
- 工地实验室仪器设备清单
- 鼠药中毒护理个案
- 《插花艺术课件》课件
- DLT596-2021电力设备预防性试验规程
- “多测合一”收费指导标准(示范文本)
- 2025届云南师大附中高一下数学期末检测试题含解析
- T-NIFA 22-2023 金融数据安全应急响应和处置指引
- 肌骨系统超声临床应用课件
- 《插花基础知识》课件
- 社会体育指导员工作规范课件
- 人教版 七年级下册 历史 期中测试(一)
- 手机保护壳工业分析与模具设计说明书-毕业论文
- 八年级数学-张美玲-海伦公式
评论
0/150
提交评论