收藏 分享(赏)

飞机大战案例分析.doc

上传人:gnk289057 文档编号:8174232 上传时间:2019-06-12 格式:DOC 页数:26 大小:390.30KB
下载 相关 举报
飞机大战案例分析.doc_第1页
第1页 / 共26页
飞机大战案例分析.doc_第2页
第2页 / 共26页
飞机大战案例分析.doc_第3页
第3页 / 共26页
飞机大战案例分析.doc_第4页
第4页 / 共26页
飞机大战案例分析.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、简单的微信飞机大战编写成员:张宏 万熊波 缪伟专业:11软件工程姓名:张宏 学号:2011103368姓名:万熊波 学号:2011103365姓名:缪伟 学号:2011103388摘要相信 Android(安卓)已经为人们熟知,经过 2011 年的洗礼,Android 智能手机火速上位,甚至说现在手机系统由 IOS 和 Android 平分也不为过。随着Android 智能手机在中国内地的风靡,基于 Android 平台的应用开发也逐渐成为 IT 开发的一大热门。游戏是智能机不可或缺的应用之一, “水果忍者” 、 “愤怒的小鸟”等 Android 游戏应用的成功,让人看到手机游戏在 Andro

2、id 平台上的巨大发展空间。基于此,采用 Eclipse 和 Android ADT 作为集成开发平台,开发本 Android 游戏 APP。本应用为 Android 飞机大战游戏,主要有 6 个操作界面分别为开始界面,游戏界面,设置界面,得分界面,Win 界面,Lose 界面。玩家可以选择自己进入设置界面对游戏进行设置,或进入的分界面查看自己本次操作是否在前六名等操作。作为游戏背景音乐的存在是不可或缺的,本应用在不同的操作界面演奏不同的背景音乐,玩家还可以在设置界面设置背景音乐的大小。由于Android 控件 Activity 的生命周期的特点,本应用会在被点击“EXIT”按钮的Activi

3、ty 中发送一个 EXIT 的广播,所有的本应用的 Activity 收到广播后会自动结束,使得本应用能够完全的退出系统。本应用采用 Android 的SurfaceView 绘制游戏界面,游戏的主界面美观,赏心悦目,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。目 录第 1 章 绪论 .11.1 系统开发背景 11.2 系统研究目的和意义 11.3 可行性分析 1第 2 章 系统需求分析 .22.1 用户功能需求分析 22.2 系统性能要求 32.3 业务流程分析 3第 3 章 系统总体设计 .43.1 系统功能模块分析 43.1.1 系统管理 .4

4、3.1.2 APP 应用设置 .43.1.3 玩家信息管理 43.2 系统类关系图 43.3 系统总体设计 6第 4 章 系统详细设计 .84.1 开发工具简介 84.3 游戏界面设计 .124.3.1 开始界面 124.3.2 游戏界面 194.3.3 设置界面 264.3.4 得分界面 .34第 5 章 工作总结和展望 53参考文献 .54致 谢 .55第 1 章 绪论1.1 系统开发背景 随着科技的发展,现在手机的功能已不仅仅是简单的接打电话、收发短信了。更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一

5、套适合各阶层人士的具有很强的娱乐性和交互性的飞机小游戏。虽然现在市面上存在着各种各样的游戏版本,可是飞机游戏其市场还是相当大的。因为它的特殊在于人们在玩游戏的时候的过程中使爱不释手。随着游戏关卡不断提高,其难度也更大,刺激性也更强。可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。这样的小游戏刚好迎合了他们的需求。1.2 系统研究目的和意义在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。这款小型的手机游戏,可以让我们随时随地都能享受游戏,从繁重

6、的日常生活中解脱出来。游戏的主界面应该力求美观,赏心悦目,以提高玩家对游戏的兴趣。游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。1.3 可行性分析该系统采用 Eclipse 集成 Android ADT 为开发平台进行 APP 开发。Eclipse是一个开放的源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。虽然大都数用户很乐于 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境,这个组件主要针对希望扩展 Eclipse的软件开

7、发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于Eclipse 中的每样东西都是插件,对于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。基于 Eclipse 的应用程序的插件开发诸如 Siemens 公司的 PLM 产品Teamcenter 的插件级开发。Android 专门针对 Eclipse 开发做了 ADT(Android Developer Tools)开发插件,因此该应用使用 Eclipse 开发完全可行。第 2 章 系统需求分析2.1 用户功能需求分析

8、由于本程序简单易操作,交互性好,对用户没什么特别要求。一般用户经过几分钟练系都可以熟悉本游戏的规则。2.2 系统性能要求1.实时性本应用为手机游戏因此对于用户的操作必须做出立即响应,否则本游戏即为失败。2.易操作性单机手机游戏的最大特点即为易操作性,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏的规则。这是本应用对于操作性的要求。2.3 业务流程分析依据系统的需求分析,得到系统的流程图如图 2-3 所示:图 2-3 系统流程图第 3 章 系统总体设计3.1 系统功能模块分析当前应用使用的 SurfaceView 来绘制的页面因此相对来说大部分逻辑都是由 Activity 来做处

9、理的。本系统的功能模块也根据 Activity 的不同来划分成6 个功能模块。3.1.1 系统管理 各个操作界面布局适当,颜色搭配等要美观。各个 Activity 之间的切换要快速(PS:它们各自的背景音乐也要随之切换,给用户以顺畅、自然的感觉)。用户在任何一个 Activity点击“EXIT”按钮或 ContextMenu 中的“ 退出”都要成功的将当前应用挂起的多个 Acitivity 和当前 Android 虚拟机显示的 Activity 顺利的停止,并销毁3.1.2 APP 应用设置设置应用系统背景音乐声音大小和游戏难度。使用 SeekBar 来控制系统音量,使用 RadioGroup

10、 来控制飞机难度。3.1.3 玩家信息管理在游戏结束时对于玩家的名称和得分进行记录,并在玩家查看排名情况时,以倒序形式显示前六名玩家的得分和姓名等信息。3.2 系统类关系图系统实体类、边界类、控制类之间的关系如图 3-1 所示图 3-1 实体类、控制类、边界类之间的关系各个界面类之间的关系如图 3-2 所示3.3 系统总体设计系统的中只有玩家一种用户,不必向其他的网站或者是教务系统一样进行身份验证等操作。玩家点击应用图标直接进入应用的开始界面。用户的操作总体可以归并成如 3-3 玩家用例图所显示的内容,子弹的用例图如图 3-4 所示,飞机的用例图如图 3-5 所示。用户的操作基本可以划分为“加

11、载游戏”,“开始游戏”,“设置游戏”,“玩游戏”,“查看分数”这五个用例。玩家用案例图子弹用例图飞机用例图第 4 章 系统详细设计4.1 开发工具简介Android 开发工具(ADT)是一个插件的 Eclipse IDE,目的是给开发人员提供一个强大的、集成的环境中构建 Android 应用程序。扩展能力的 Eclipse ADT 让你迅速建立新的 Android 项目,创建一个应用程序的用户界面,添加基于安卓框架的 API,调试您的应用程序使用 Android SDK工具,生成 apk 文件在使用 Eclipse 运行 Android 应用的时候 Eclipse 会自动的将生成的 apk 文

12、件自动的注册到 Android 虚拟机中。在 Eclipse ADT 发展与高度推荐,是一种最快的方式开始。与引导项目设置它提供,以及工具集成、定制 XML 编辑器和调试输出窗格,ADT 给了你极大的提高在发展中 Android 应用程序。使用 Eclipse 集成 Android ADT 做 Android 应用开发是目前企业中常用的Android 应用开发方式。本项目在开发环境: JDK 1.7 Eclipse 3.7.4,2 详细分析请看后面的代码第 6 章 工作总结和展望本应用以 Eclipse 集成 Android ADT 为开发环境,在 DalvikVM 中对自己编写的应用进行测试

13、。当时在编写这个应用的时候遇到过很多的问题,有技术性的问题,有性能性的问题,各种常见的异常,空指针,数组越界等问题。当时在做这个项目时最大的压力是时间,在对 Android 不是非常熟悉的情况下,培训机构仅仅给了我们十几天的时间让我们做出一个完善的 Android 应用。记得在刚下需求的时候,前两天一直都在研究需求,分析哪个功能点可以使用什么技术,哪个地方使用某种算法相对来说效率更高。记得有一次被卡在了activity 之间的跳转上,由于是在 SurfaceView 中跳转到另一个 Activity 的,一时间对于如何在当前 SurfaceView 中获得它所在的 Activity 的引用感到

14、不知所措,最后经历了两天的摸索,终于攻克了这一难点。经过自己认真研究攻克的技术点,总是会给人以很大的信心继续走下去,它所带来的那种成就感是难以用语言名状的。经过十多天的开发自己完成了一个相对比较完整的 Android 应用,这对于之前一直想要从事开发的我来说真的是很大的一次激励。在这个项目之后,感觉自己在实习公司这种真实的开发环境下也很少能够体验到可以与该项目压力相当的需求了。这个项目是我个人编程经历的一个节点,也是从这个项目之后,我正式进入公司实习真正的进入了 IT 这个行业。而这个项目所带给我的开发上的经验就是:无论当前的项目有多难,需求有多么复杂,时间有多么紧迫,一定要分析透需求,之后一

15、点一点的按照常规的开发进行下去,遇到技术难点不要跳过,解决掉这个再进行下一步的开发,否则,问题越积越多你会对自己失去信心。对于未来,希望自己做一个技术比较过硬的 IT 编程人员,能够将设计模式融会贯通到自己的代码中,希望自己能够有一个让人一看就一目了然的编程风格。虽然有些碎碎念,但终归是开发过程中的一些真实的经历。值得自己铭记具体代码如下:StartFrame.javaimport java.awt.Graphics;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.I

16、mageIcon;import javax.swing.JFrame;import javax.swing.JPanel;import com.tarena.LocationUtil;/* StartFrame类主要是打飞机开始加载页面* 关取得当前页面的坐标值传 入新的页面中*/public class StartFrame extends JFrameint x;int y;public StartFrame()/窗体打开的位置,宽和高this.setBounds(200, 0, 400, 654);/禁止 标题栏显示this.setUndecorated(true);/设 置窗体的图标t

17、his.setIconImage(new ImageIcon(“images/icon.jpg“).getImage();/创 建自定义面板并 实例化StartPanel panel = new StartPanel();/窗体移 动LocationUtil util = new LocationUtil(this);/当面板添加到当前窗体this.add(panel);/窗体 显示this.setVisible(true);/启 动多线程new Thread(panel).start();public static void main(String args) StartFrame t =

18、new StartFrame();/自定义 面板,实现多线 程接口和鼠标事件class StartPanel extends JPanel implements Runnable,MouseListener/定 义一个开始加载飞 机的坐标int x= -57;int y = 400;public StartPanel()this.addMouseListener(this);Overridepublic void paint(Graphics g) super.paint(g);/画背景图g.drawImage(new ImageIcon(“images/startback.png“).get

19、Image(),0,0,this);/画加载时的飞 机g.drawImage(new ImageIcon(“images/start_aircraft.png“).getImage(),x,y,this);/关闭图片g.drawImage(new ImageIcon(“images/close.png“).getImage(),360,3,this);/最小化图片g.drawImage(new ImageIcon(“images/min.png“).getImage(),325,3,this);/多 线程run() 方法Overridepublic void run() /开始加载时的 飞机循

20、环画while(x=360 / 子弹数组Vector enemys = new Vector();/ 敌机数组Vector bombs = new Vector();/ 爆炸数组/ 英雄机的坐 标int hero_x = 200;int hero_y = 500;public GamePlane(JFrame frame) this.frame = frame;public void paint(Graphics g) super.paint(g);/ 画背景 图g.drawImage(new ImageIcon(“images/backmain.png“).getImage(), 0,0,

21、this);g.drawImage(new ImageIcon(“images/close.png“).getImage(), 360, 3,this);g.drawImage(new ImageIcon(“images/min.png“).getImage(), 325, 3,this);/ 如果英雄机 为trueif (heroLive) g.drawImage(new ImageIcon(“images/hero.png“).getImage(),hero_x, hero_y, this);/ 画子 弹for (int i = 0; i = this.getWidth() - 100)

22、hero_x = this.getWidth() - 100;if (hero_y = this.getHeight() - 120) hero_y = this.getHeight() - 120;repaint();/鼠标单击Overridepublic void mouseClicked(MouseEvent e) if (e.getX() = 360 x =(int)(Math.random()*(mainview.getWidth()-49);hint();hint1();mainview.repaint();/判断是否碰撞public float getX() return x;p

23、ublic void setX(int x) this.x = x;public float getY() return y;public void setY(int y) this.y = y;BulletMoveThread.java/* * 炮弹 移动*/public class BulletMoveThread extends Thread/定义炮 弹信息Bullet bullet;public BulletMoveThread(Bullet bullet)this.bullet= bullet;public void run() while(bullet.isLive)bullet.

24、move();try Thread.sleep(30); catch (InterruptedException e) e.printStackTrace();Bullet.java/* * 炮弹类*/public class Bullet public int x;public int y;GamePlane mainview;public boolean isLive =true;public Bullet(int x,int y,GamePlane view)this.x = x;this.y = y;this.mainview = view;/定义炮 弹移动public void move()y-=20;mainview.repaint();/出上 边窗体消除if(y=5)x = -100;y=-100;isLive = false;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报