此项目主要使用到了Graphics 绘图类,要想实现此Demo需要熟练掌握此类,以及它的对象是如何创建的,此项目凡是可以飞行的都可以写一个顶级父类,其子类用来继承,我在项目后期才发现可是项目已经实现了很多要想修改需要时间由于我们项目时间很短,所以并没有来得及修改,如果有同学愿意修改,可以尝试一下,联系一下继承和接口嘛,谢谢!
package com.view;
import javax.swing.JFrame;
import com.listener.FrameMouseMotionListener;
import com.model.Enemy001;
import com.model.Enemy002;
//设置框架
public class MyFrame extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
public static int frameWidth=450;//要用类调用
public static int frameHeight=700;
//关联,需要把面板添加到框架中
public MyPanel panel;
//存放鼠标移动监听器
public FrameMouseMotionListener frameMouseMotionListener;
public MyFrame() {
//调用父类构造,设置窗口名称
super("飞机大战....");
//设置窗口的大小
setBounds(0, 0, frameWidth, frameHeight);
//设置窗口的位置,居中
setLocationRelativeTo(null);
//布局方式
setLayout(null);
//设置可见
setVisible(true);
//窗口大小不可调整
setResizable(false);
this.panel=new MyPanel();
//设置面板的大小
this.panel.setBounds(0, 0, frameWidth, frameHeight);
//将面板添加到框架中
this.add(this.panel);
//窗口关闭
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//调用监听器封装函数
setTouchListener();
//添加敌机的类型
addEnemyType(Enemy001.class);
addEnemyType(Enemy002.class);
}
//封装监听器函数
public void setTouchListener() {
this.frameMouseMotionListener=new FrameMouseMotionListener();
this.frameMouseMotionListener.MyFrame=this;
//注册监听器
this.addMouseMotionListener(this.frameMouseMotionListener);
}
public void addEnemyType(Class c) {
this.panel.enemyType.add(c);
}
}
package com.view;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import javax.swing.JPanel;
import com.Thread.DrawableThread;
import com.model.Bullet;
import com.model.Enemy;
import com.model.Player;
public class MyPanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
public Image bgImage;
public DrawableThread drawableThread;
public Player player;
//存放所有子弹对象
public ArrayList<Bullet> bullets=new ArrayList<Bullet&