import java.awt.Graphics;
import java.awt.Image;import javax.swing.ImageIcon;
/*** 飞机类* @author Administrator**/
public abstract class Airplane implements Drawable ,Runnable{protected int x,y;//位置坐标protected Direction dir;//方向属性protected ImageIcon airplaneImage;//图片名public Airplane(){this.x = 230;this.y = 400;}public abstract void move(Direction newDir);public abstract void draw(Graphics g);public abstract void fire();public void setDir(Direction newdir) {this.dir = newdir;}public Direction getDir(){return dir;}
}
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.security.Key;
import java.util.ArrayList;
import java.util.List;import javax.swing.ImageIcon;
/*** 轰炸机* @author Administrator**/
public class Battleplane extends Airplane {List<Shot> list = new ArrayList<Shot>();//子弹public Battleplane() {this.airplaneImage = new ImageIcon("01.png");}@Overridepublic void draw(Graphics g) {g.drawImage(this.airplaneImage.getImage(), x, y, null);if (list != null) {for (Shot temp : list) {temp.draw(g);}}}@Overridepublic void move(Direction newDir) {switch (newDir) {case UP:this.y -=10;break;case DOWN:this.y +=10;break;case LEFT:this.x -=10;break;case RIGHT:this.x +=10;break;}}public void fire() {}private class Shot implements Drawable{private int x,y;public Shot(int begin,int end) {this.x = begin -2;this.y = end - 5;} @Overridepublic void draw(Graphics g) {g.fillRect(x, y, 4, 10);}public void move(){this.y -=10;}}/*** 自动发射子弹*/@Overridepublic void run() {list.add(new Shot(x+22, y));for(Shot temp : list){temp.move();}if (list.size() > 100 ) {list.remove(0);}}
}
import java.awt.Graphics;import javax.swing.ImageIcon;public class Biuplane extends Airplane{public Biuplane() {this.airplaneImage = new ImageIcon("03.png");}@Overridepublic void draw(Graphics g) {g.drawImage(this.airplaneImage.getImage(), x, y, null);}@Overridepublic void move(Direction newDir) {switch (newDir) {case UP:this.y -=8;break;case DOWN:this.y +=8;break;case LEFT:this.x -=8;break;case RIGHT:this.x +=8;break;}}public Direction getDir(){return dir;}public void setDir(Direction dir) {this.dir = dir;}@Overridepublic void fire() {}@Overridepublic void run() {}
}
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;import javax.swing.ImageIcon;public class Bomberplane extends Airplane {public Bomberplane() {this.airplaneImage = new ImageIcon("02.png");}@Overridepublic void draw(Graphics g) {g.drawImage(this.airplaneImage.getImage(), x, y, null);}@Overridepublic void move(Direction newDir) {this.dir = newDir;switch (newDir) {case UP:this.y -=6;break;case DOWN:this.y +=6;break;case LEFT:this.x -=6;break;case RIGHT:this.x +=6;break;}}public Direction getDir(){return dir;}public void setDir(Direction dir) {this.dir = dir;}@Overridepublic void fire() {}@Overridepublic void run() {}
}
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Timer;/*** 画板画布界面* @author Administrator**/
public class CorintFrame extends JPanel{public class MouseHandler extends MouseAdapter{//添加鼠标点击事件@Overridepublic void mousePressed(MouseEvent e) {if (e.getSource()==labels[0]) {air = new Bomberplane();repaint();} else if (e.getSource() ==labels[1]) {air = new Battleplane();repaint();}else if (e.getSource() == labels[2]) {air = new Biuplane();repaint();}}}private Image offImage = new BufferedImage(600, 650, 1);//缓存图片private ImageIcon bgImage = new ImageIcon("bg.jpg");//背景图片private Airplane air = new Battleplane();private JLabel[] labels = new JLabel[3];private Timer timer = null;private ExecutorService ex = Executors.newFixedThreadPool(2);private String[] labelsImageNames = {"02.png","01.png","03.png"};public CorintFrame(){this.setSize(450,670);this.setLayout(null);this.addKeyListener(new KeyAdapter() {@Overridepublic void keyPressed(KeyEvent e) {}});for (int i = 0; i < labels.length; i++) {labels[i] = new JLabel("i");labels[i] = new JLabel(new ImageIcon(labelsImageNames[i]));//添加图标labels[i].setBounds(500, 50+60*i, 60, 60);labels[i].addMouseListener(new MouseHandler());this.add(labels[i]);}timer = new Timer(50, new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {ex.execute(air);repaint();}});timer.start();}public void setKeyCode(int keyCode){//方向Direction newDir =null;switch (keyCode) {case 38:newDir = Direction.UP;break;case 40:newDir = Direction.DOWN;break;case 37:newDir = Direction.LEFT;break;case 39:newDir = Direction.RIGHT;break;}if (newDir != null) {air.move(newDir);repaint();}}@Overridepublic void paint(Graphics g) {Graphics g2 = offImage.getGraphics();super.paint(g2);g2.drawImage(bgImage.getImage(), 0, 0, null);air.draw(g2);g.drawImage(offImage, 0, 0, null);}}
/**方向
*/
public enum Direction {UP,DOWN,LEFT,RIGHT
}
import java.awt.Graphics;
/*** 绘画接口* @author Administrator**/
public interface Drawable {public void draw(Graphics g);
}
import java.awt.Graphics;
import java.awt.RenderingHints.Key;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.Timer;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.xml.crypto.dsig.keyinfo.KeyValue;
/*** 弹窗界面* @author Administrator**/
public class GameDialog extends JDialog {private CorintFrame frame =new CorintFrame();private ImageIcon bgImage = new ImageIcon("bg.JPG");public GameDialog(){this.setTitle("雷神");this.setSize(600, 650);this.setResizable(false);this.setLocationRelativeTo(null);this.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});this.addKeyListener(new KeyAdapter() {public void keyPressed(KeyEvent e) {int keyCode =e.getKeyCode();if (keyCode == 37||keyCode == 38||keyCode == 39||keyCode == 40||keyCode == 32) {frame.setKeyCode(keyCode);repaint();}}});this.add(frame);}
//  @Override
//  public void paintComponents(Graphics g) {//      super.paintComponents(g);
//      g.drawImage(bgImage.getImage(), 0, 0, null);
//  }public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());new GameDialog().setVisible(true);}
}
import java.awt.Graphics;
/*** 图形类* @author Administrator**/
public abstract class Shape implements Drawable{protected int x,y;protected String name;public Shape() {}@Overridepublic abstract void draw(Graphics g);
}
import java.awt.Graphics;
import java.awt.Image;import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JPanel;/*** 用户界面工具类* @author jackfrued**/
public final class UIUtil {private UIUtil() {}@SuppressWarnings("serial")public static void setBackgroundImage(final JFrame frame, final Image bgImage) {frame.setContentPane(new JPanel() {@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);g.drawImage(bgImage, 0, 0, frame.getWidth(), frame.getHeight(), null);}});}@SuppressWarnings("serial")public static void setBackgroundImage(final JDialog dialog, final Image bgImage) {dialog.setContentPane(new JPanel() {@Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);g.drawImage(bgImage, 0, 0, dialog.getWidth(), dialog.getHeight(), null);}});}
}

模拟雷神飞机游戏(简易版)相关推荐

  1. python棋类项目规划一——五子棋游戏简易版——项目一

    五子棋游戏简易版 目前只能人人对战 o 代表黑棋 x 代表白棋 . 代表无棋子 以下是代码: def nemBoard():'''初始化棋盘''' board = [[0 for i in range ...

  2. C与C++游戏项目练习9:接金币游戏简易版

    ## C与C++游戏项目练习9:接金币游戏简易版 还是只能在devC++里面运行,不要用VS!!! 还是只能在devC++里面运行,不要用VS!!! 还是只能在devC++里面运行,不要用VS!!!* ...

  3. 用Python做一个游戏——简易版贪吃蛇

    前言 今天,我来分享个中等级的简易版贪吃蛇,这次不是用turtle库,而是用pygame库和sys库. 1.导入库 我们需要把游戏所用的库导入进来: import pygame import sys ...

  4. HTML+JavaScript飞机大战小游戏简易版

    点击开始游戏后拖动鼠标在蓝色区域内即可操作飞机移动 打中敌方得分,被敌方碰撞则减分掉血 运用延时调用函数实现连续发射子弹 运用随机函数使敌方飞机在蓝图随机刷新 运用坐标判断子弹和敌方飞机距离,碰撞则消 ...

  5. 使用Pygame制作微信打飞机游戏PC版

    前一阵子看了一篇文章:青少年如何使用Python开始游戏开发 .看完照葫芦画瓢写了一个,觉得挺好玩儿,相当于简单学了下Pygame库.这篇文章是个12岁小孩儿写的,国外小孩儿真心NB,想我12岁的时候 ...

  6. 康威生命游戏简易版python_turtle实现

    以下资料引用至百度百科 ​ 康威生命游戏(Game of Life),剑桥大学约翰·何顿·康威设计的计算机程序. 概述: 生命游戏没有游戏玩家各方之间的竞争,也谈不上输赢,可以把它归类为仿真游戏.事实 ...

  7. jQuery实现别踩白块小游戏(简易版)

    别踩白块分享 这是个漫长的寒假,编程使我快乐.在学习jQuery时,在家练习做了这个小游戏,也算是提升一下实际使用能力. 现在记录下来给大家参考,不足之处请大家谅解. 先上截图: 使用代码前请先导入j ...

  8. JS实现飞行的小鸟游戏-简易版

    效果图: 实现代码: <!doctype html> <html lang="en"> <head><meta charset=" ...

  9. C语言飞机大战简易版(包含两种界面)

    以下两种代码均适用于初学者: 先上第一种粗糙的代码,讲解都在代码中了. #include<stdio.h> #include<stdlib.h> #include<con ...

最新文章

  1. 是否finally块总是用Java执行?
  2. DIV CSS初学者需重视的10个简单问题与技巧
  3. 利用FormData对象实现AJAX文件上传功能及后端实现
  4. yum php5.6源码,5.2 YUM升级PHP5.6
  5. 统计学习方法 第八章总结
  6. 账号集中管理系统设计与实现----OpenLDAP
  7. 无线射频识别技术与条形码的比较
  8. 利用python来解决 小鸡,公鸡,母鸡的数学问题
  9. vue 商城浏览足迹_vue 移动端记录页面浏览位置的方法
  10. 使用着色器模拟雾效果
  11. 基于Spring Security与JWT实现单点登录
  12. Android webView长按保存图片到本地相册(队列下载实现)
  13. Python常用轮子下载网站
  14. 盖茨、马斯克都遵循的终身学习法则:知识不是由学科划分的
  15. 软件开发技术职位分析及职业规划
  16. Springboot 使用管道设计模式 , 实践案例玩一玩
  17. maven js css 压缩,使用wro4j和maven在编译期间压缩js和css文件(经典)
  18. 深入了解Google HDMI-CEC框架(一)
  19. 交叉导轨具体应用在哪些领域?
  20. 3D视觉概述与立体成像原理

热门文章

  1. 华科计算机考研复试往年机试题
  2. 数据结构-顺序表(SeqList)
  3. 操作系统考研——考点5:进程的通信
  4. 如何选择动态IP软件
  5. WEB1.0起源:全球首个网站info.cern.ch
  6. 使用VBA快速制作工资条
  7. 【侯捷】C++面向对象高级编程(上)
  8. arm linux 进程调度,详解ARM Linux 2.4.x进程调度
  9. 美国顾客满意度指数模型(转载)
  10. Redis实现微博热度前100