大学课程设计飞机大战_第1页
大学课程设计飞机大战_第2页
大学课程设计飞机大战_第3页
大学课程设计飞机大战_第4页
大学课程设计飞机大战_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

湖北大学本科课程设计 题 目 Java 课程设计飞机大战 姓 名 学 号 专业年级 指导教师 职 称 2015 年 12 月 18 日-目录-1项目介绍- 12概要设计2.1 资源需求- 12.2 游戏流程- 13类设计3.1 游戏界面类- 23.2 飞行物类- 23.3 敌机类- 23.4 蜜蜂类- 33.5 玩家飞机类- 33.6 子弹类- 44编码分析 4.1 游戏界面类- 44.2 飞行物类- 114.3 敌机类- 124.4 蜜蜂类- 134.5 玩家飞机类- 134.6 子弹类- 155游戏测试画面- 166总结- 18- 1 -游戏主界面一项目介绍针对 Java 课程设计,我做了一个小游戏飞机大战,游戏代码包含到本学期所学的所有知识点。程序运行后,进入到开始画面,鼠标单击开始游戏。敌机自上向下移动,随机出现,玩家机随鼠标移动并发射子弹,消灭敌机可以获得分数,随机出现小蜜蜂,消灭后可获得奖励。二概要设计2.1 资源需求此游戏需要导入图片:背景图片,开始界面,玩家飞机,敌机,小蜜蜂,子弹,暂停界面,结束界面。2.2 游戏流程单击鼠标 鼠标移出单击鼠标玩家死亡显示标题界面暂停界面游戏结束- 2 -三程序结构 游戏界面:ShootGame extends JPanelstatic 块:导入图片main():创建窗口重写 paint():画图action():鼠标事件TimerTask 重写 run():游戏运行的活动飞行物类:abstract FlyingObject属性:x,y 坐标,image ,图片长宽move():飞行物移动outOfbound():飞行物出界shootBy():子弹击中飞行物敌机类:Airplane extends FlyingObjectInt speed:移动速度重写 move()重写 outOfBound()getScore():击中敌机后得分Airplane():初始化敌机- 3 -蜜蜂类:Bee extends FlyingObjectInt xSpeed,ySpeed :移动速度Int awardType:奖励类型(双倍活力或加命)Bee():初始化蜜蜂重写 move()重写 outOfBound()getType():获取奖励类型玩家飞机类:Player extends FlyingObjectInt life,doubleFire :生命,双倍火力Player():初始化玩家重写 move():换图片,形成飞机的动态效果重写 outOfBound()shoot():生成子弹moveTo():玩家机移动isHit():玩家碰撞到飞行物setDoubleFire():设置双倍火力addDoubleFire():奖励双倍火力addLife():奖励生命deleteLife():减命getLife():获取生命数- 4 -子弹类:Bullet extends FlyingObjectInt speed:移动速度Bullet():初始化子弹重写 move()重写 outOfBound()四编码分析(1)ShootGame 类此类继承 JPanel 类构建游戏窗口并控制游戏的运行类的成员变量:public static final int WIDTH=400;/窗口宽public static final int HEIGHT=600;/窗口高/图片属性public static BufferedImage airplane;public static BufferedImage background;public static BufferedImage bee;public static BufferedImage bullet;public static BufferedImage gameover;public static BufferedImage player0;public static BufferedImage player1;public static BufferedImage pause;public static BufferedImage start;public static final int DOUBLE_FIRE=0;/双倍火力的属性为 0public static final int LIFE=1;/奖励生命的属性为 1public Player player=new Player();/创建玩家对象private Bullet bullets=;/创建子弹对象(当前为空)private FlyingObject flyings=;/创建飞行物对象(当前为空)public static final int START=0;/状态:开始为 0public static final int RUNNING=1;/状态:运行为 1public static final int PAUSE=2;/状态:暂停为 2public static final int GAME_OVER=3;/状态:游戏结束为 3private int state=0;/当前状态- 5 -1.static 块静态块,在类加载时导入游戏所需的图片statictry airplane=ImageIO.read(ShootGame.class.getResource(“airplane.png“);background=ImageIO.read(ShootGame.class.getResource(“background.png“);bee=ImageIO.read(ShootGame.class.getResource(“bee.png“);bullet=ImageIO.read(ShootGame.class.getResource(“bullet.png“);gameover=ImageIO.read(ShootGame.class.getResource(“gameover.png“);pause=ImageIO.read(ShootGame.class.getResource(“pause.png“);start=ImageIO.read(ShootGame.class.getResource(“start.png“);player0=ImageIO.read(ShootGame.class.getResource(“player0.png“);player1=ImageIO.read(ShootGame.class.getResource(“player1.png“); catch (Exception e) e.printStackTrace();2. main()在 main 方法中创建窗口public static void main(String args) JFrame frame=new JFrame(“ShootGame“);ShootGame game=new ShootGame();frame.add(game);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLocation(400, 100);frame.setAlwaysOnTop(true);frame.setVisible(true);frame.setSize(WIDTH, HEIGHT);game.action();3. paint()- 6 -/画图(g 是画笔)public void paint(Graphics g) g.drawImage(background, 0, 0, null);paintPlayer(g);/画玩家飞机paintFlyings(g);/画飞行物paintBullets(g);/画子弹paintScore(g);/画分数paintState(g);/画游戏状态/画每一个子弹private void paintBullets(Graphics g) for(int i=0;ibullets.length;i+)Bullet b=bulletsi;g.drawImage(b.image, b.x,b. y, null);/画飞行物(敌机,蜜蜂)private void paintFlyings(Graphics g) for (int i = 0; i flyings.length; i+) FlyingObject flying=flyingsi;g.drawImage(flying.image,flying. x,flying. y, null);/画玩家private void paintPlayer(Graphics g) g.drawImage(player.image, player.x, player.y, null);/画分数public void paintScore(Graphics g)g.setColor(Color.RED);/设置画笔颜色为红g.setFont(new Font(Font.SANS_SERIF,Font.BOLD,20);/设置字体,加粗,字号g.drawString(“Score:“+score, 10, 25);g.drawString(“Life:“+player.getLife(), 10, 45);/画状态public void paintState(Graphics g)switch(state)case START:- 7 -g.drawImage(start, 0,0,null);break;case PAUSE:g.drawImage(pause, 0, 0, null);break;case GAME_OVER:g.drawImage(gameover, 0, 0, null);break;4. action()此方法处理鼠标响应事件:玩家机随鼠标移动,点击鼠标则游戏开始,鼠标移出则暂停游戏public void action()MouseAdapter l=new MouseAdapter()/鼠标移动事件public void mouseMoved(MouseEvent e)if(state=RUNNING)int x=e.getX();int y=e.getY();player.moveTo(x,y);/鼠标点击事件:如果当前状态为 start 则开始游戏,如果当前状态为游戏结束则初始化所有对象,游戏重新开始public void mouseClicked(MouseEvent e) switch(state)case START:state=RUNNING;break;case GAME_OVER:flyings=new FlyingObject0;player=new Player();bullets=new Bullet0;score=0;state=START;/鼠标移出,在当前状态为运行的情况下,改 state 为暂停public void mouseExited(MouseEvent e) if(state=RUNNING)state=PAUSE;- 8 -/鼠标移入,在当前状态为暂停的情况下,游戏继续运行public void mouseEntered(MouseEvent e) if(state=PAUSE)state=RUNNING;this.addMouseListener(l);this.addMouseMotionListener(l);5. TimerTask.run()/ 游戏运行private Timer timer; private int interval=10;/时间间隔,10 毫秒int score=0;/分数timer=new Timer();/每隔 10 毫秒运行一次 run 方法timer.schedule(new TimerTask() Overridepublic void run() if(state=RUNNING)enterAc

温馨提示

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

最新文档

评论

0/150

提交评论