说是飞机大战倒不如说是飞机躲避炮弹


//飞机游戏主窗口import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Date;import javax.swing.JFrame;import utils.GameUtil;public class MyGame09 extends Frame{public static final Thread Thead = null;Image bg=GameUtil.getImage("imgs/background.png");Image planeImg=GameUtil.getImage("imgs/hero0.png");Plane plane=new Plane(planeImg,200,500);//   Shell shell=new Shell();Shell [] shells=new Shell[50];Explode baoz;Date startTime=new Date();Date endTime;int period ;//游戏持续的时间@Overridepublic void paint(Graphics g) {//绘图 窗口类的主方法 自动执行super.paint(g);//调用父类的paintg.drawImage(bg,0,0,null);//画图片 plane.drawSelf(g);//画飞机Color c=g.getColor();//画出所有的炮弹for(int i=0;i<shells.length;i++) {shells[i].draw(g);//飞机和炮弹封装检测boolean flag=shells[i].getRect().intersects(plane.getRect());if(flag) {plane.live=false;if(baoz==null) {baoz=new Explode(plane.x,plane.y);endTime=new Date();period=(int)((endTime.getTime()-startTime.getTime())/1000);}baoz.draw(g);}if(!plane.live) {g.setColor(Color.red);g.setFont(new Font("宋体",Font.BOLD,50));g.drawString("存活时间为"+period+"秒", 100, 300);}}g.setColor(c);}//帮助我们重复的重画窗口class PaintThread extends Thread{public void run() {while(true) {repaint();//外部类方法 重画try {Thead.sleep(60);}catch(InterruptedException e) {e.printStackTrace();}}} }//定义键盘监听的内部类class KeyMonitor extends KeyAdapter{@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stub
//          System.out.println("按下"+e.getKeyCode());plane.addDirection(e);}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stub
//          System.out.println("松开"+e.getKeyCode());plane.minusDirection(e);}}//初始化窗口public void launchFrame() {this.setTitle("琳同学的飞机大战");this.setVisible(true);this.setSize(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);this.setLocationRelativeTo(null);this.setResizable(false);this.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});new PaintThread().start();//启动重画窗口的线程addKeyListener(new KeyMonitor());//给窗口增加键盘监听//初始化50个炮弹for(int i=0;i<shells.length;i++) {shells[i]=new Shell();}}public static void main(String []args) {MyGame09 f=new MyGame09();f.launchFrame();}private Image offScreenImage = null;public void update(Graphics g) {if(offScreenImage == null) {//这是游戏窗口的宽度和高度offScreenImage = this.createImage(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);}Graphics gOff = offScreenImage.getGraphics();paint(gOff);g.drawImage(offScreenImage, 0, 0, null);}
}
public class Constant {//控制游戏页面的大小public static final int GAME_WIDTH=500;public static final int GAME_HEIGHT=700;
}
import java.awt.Graphics;
import java.awt.Image;import utils.GameUtil;
//爆炸类,在飞机和炮弹碰撞时,一系列图片的显示
public class Explode {double x,y;static Image[] imgs=new Image[4];static {for(int i=0;i<4;i++) {imgs[i]=GameUtil.getImage("imgs/bom"+(i+1)+".png");imgs[i].getWidth(null);}}int count;public void draw(Graphics g) {if(count <=3) {g.drawImage(imgs[count],(int)x+20,(int)y+20,null);count++;}}public Explode(double x,double y) {this.x=x;this.y=y;}
}

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;//游戏物体的父类
public class GameObject {Image img;public  double x;public double y;int speed;int width,height;public void drawSelf(Graphics g) {g.drawImage(img, (int)x,(int)y,null);}public GameObject(Image img, double x, double y) {super();this.img = img;this.x = x;this.y = y;}public GameObject(Image img, double x, double y, int speed, int width, int height) {super();this.img = img;this.x = x;this.y = y;this.speed = speed;this.width = width;this.height = height;}public GameObject() {}//返回物体所在的矩形,便于后续的碰撞检测public Rectangle getRect() {return new Rectangle((int)x,(int)y,width,height);}}
import java.awt.Color;
import java.awt.Graphics;//炮弹类
public class Shell  extends GameObject {double degree;public Shell() {x=200;y=200;width=10;height=10;speed=4;degree=Math.random()*Math.PI*2;}public void draw(Graphics g) {Color c=g.getColor();g.setColor(Color.YELLOW);g.fillOval((int)x, (int)y, width, height);//炮弹沿着任意角度去飞x +=speed*Math.cos(degree);y +=speed*Math.sin(degree);if(x<0 || x>Constant.GAME_WIDTH-width-24) {degree=Math.PI-degree;}if(y<30 || y>Constant.GAME_HEIGHT-height) {degree=-degree;}g.setColor(c);}
}
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyEvent;public class Plane extends GameObject{int speed=8;boolean left,up,right,down;boolean live=true;public void drawSelf(Graphics g) {if(live) {g.drawImage(img, (int)x,(int)y,null);if(left) {x-=speed;}if(right) {x+=speed;}if(up) {y-=speed;}if(down) {y+=speed;}}else {}}public Plane(Image img,double x,double y) {this.img=img;this.x=x;this.y=y;this.speed=3;this.width=img.getWidth(null);this.height=img.getHeight(null);}//按下某个键,增加相应的方向public void addDirection(KeyEvent e) {switch(e.getKeyCode()) {case KeyEvent.VK_LEFT:left=true;break;case KeyEvent.VK_UP:up=true;break;case KeyEvent.VK_RIGHT:right=true;break;case KeyEvent.VK_DOWN:down=true;break;}}//取消相应的键public void minusDirection(KeyEvent e) {switch(e.getKeyCode()) {case KeyEvent.VK_LEFT:left=false;break;case KeyEvent.VK_UP:up=false;break;case KeyEvent.VK_RIGHT:right=false;break;case KeyEvent.VK_DOWN:down=false;break;}}
}


java——菜鸟飞机大战相关推荐

  1. java版飞机大战代码

    java版飞机大战代码 前言 Plane PlaneStatus类 Power类 Gift Diji play类 over类 MainFrame主类 MyZiDan DijiZiDan Before ...

  2. 基于Java的飞机大战游戏的设计与实现论文

    源码下载 http://www.byamd.xyz/hui-zong-1/ 摘 要 现如今,随着智能手机的兴起与普及,加上4G(the 4th Generation mobile communicat ...

  3. 基于Java的飞机大战游戏的设计与实现(含源文件)

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 基于Java的飞机大战游戏的设计与实现 摘   要 现如今,随着智能手机的兴起与普及,加上4G( ...

  4. 【Java】Java基础飞机大战小游戏完整代码

    Java基础飞机大战小游戏完整代码 先来展示一下代码实现结果图 主函数ShootGame 初始化游戏原始背景图片,游戏人物图片,游戏开始结束图片:构建产生敌人算法:产生英雄机算法:发射子弹算法:判断是 ...

  5. 毕业设计 基于Java的飞机大战游戏的设计与实现

    文章目录 前言 一.项目设计 1. 模块设计 功能需求 游戏状态控制功能模块 游戏难度的调整模块 游戏界面绘画功能模块 玩家游戏控制功能模块 2. 实现效果 二.部分源码 项目源码 前言 今天学长向大 ...

  6. 基于Java的飞机大战游戏的设计与实现

    项目介绍 飞机大战主要需要我方飞机和敌方飞机,还有子弹,特殊nPC,开始背景,结束背景,以及背景音乐.我方飞机可以随意移动,敌方飞机无规律出现.游戏玩家通过鼠标移动控制飞机移动,我方飞机在游戏开始时就 ...

  7. 基于Java的飞机大战游戏的设计与实现(论文+源码)

    毕业设计(论文)任务书 第1页 毕业设计(论文)题目:基于Java的飞机大战游戏的设计与实现毕业设计(论文)要求及原始数据(资料):1.综述基于Java的飞机大战游戏的现状:2.深入了解Java的设计 ...

  8. 基于Java Swing 飞机大战游戏

    一.项目概要: 基于Java Swing飞机大战游戏,打死飞机,可以随机出现加血包.子弹升级包.并支持根据游戏的分数,调整游戏难度. 二.界面展示: 三.主要代码: package com.maoxu ...

  9. java做飞机大战_Java+swing版飞机大战

    Java小游戏实训--飞机大战 一.实验目的 使用Java+swing实现飞机大战小游戏 二.实验要求 1.掌握Java的基本语法. 2.掌握面向对象的编程思想. 3.掌握利用swing布局游戏界面的 ...

最新文章

  1. 【android】安卓平台版本和API版本的对应关系
  2. JavaScript 编程精解 中文第三版 十一、异步编程
  3. CAD2010安装说明
  4. faster-rcnn处理图片格式
  5. 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - H.移动距离
  6. vsco使用教程_VSCO如何使用 vsco新手教程
  7. NodeJS常用模块介绍
  8. Redis 是如何执行的?
  9. Hexo 入门指南(五) - 搬家 备份
  10. 所以進入到二十一世紀之後
  11. 移动端报表JS开发示例--获取定位
  12. 清华linux网络编程视频,清华大学视频课件:基于Linux的C++(自主模式)
  13. java关于Exception(异常)的详解
  14. python图例重复显示_python matplotlib图例重复
  15. 记录注册邓白氏编码过程
  16. passwd -l 锁与linux用户属性修改与sbin/nologin区别
  17. java并发惊群_成都汇智动力-Java并发:其他(总结性的东西)
  18. 疯壳出品-“鸿蒙OS”海思HI3518EV300开发快速入门
  19. 时钟信号测到摆幅偏大是啥情况
  20. 【瑞模网】fbx模型压缩成gltf格式

热门文章

  1. ARM各版本架构区别,各架构的系列芯片。
  2. 一种基于物理信息极限学习机的PDE求解方法
  3. Golang 开发之Cobra初探
  4. iOS的就业前景与广州iOS培训机构
  5. 牛客网剑指offer(Python版)
  6. 如何破解超级用户密码?
  7. HTTP和TCP之间的关系
  8. 编译原理之简单语法分析器(c语言)
  9. Java垃圾回收与算法
  10. uniapp使用高德地图线路规划