[题目描叙]
多线程程序设计:炮打飞机
实验目的:学会使用多线程进行并发程序设计
实验内容:编写一个应用程序模拟大炮打飞机。在GUI界面上,飞机水平飞行,用界面上的按钮控制大炮的运行方向(如向左,向右,向上,向下)。当炮弹碰着飞机后,爆炸。
[程序代码]
MyGame.java
/*
* 项目名称:炮打飞机
* 版本:1.0
* 作者:张俊强
* 时间:2016/5/17
* */
package drawPanel;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
public class MyGame extends JFrame{
int killNum=0;
private MyPanel mp=null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyGame game=new MyGame();
}
public MyGame(){
mp=new MyPanel();
//启动画板线程
Thread t=new Thread(mp);
t.start();
this.add(mp);
this.addKeyListener(mp);
this.addWindowListener(mp);
this.setSize(600,450);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public int getKillNum() {
return killNum;
}
public void setKillNum(int killNum) {
this.killNum = killNum;
}
}
/*
* 窗口监听
* */
/*
* 画出面板
* */
class MyPanel extends JPanel implements KeyListener,Runnable,WindowListener{
/*
*画出一个大炮
*/
private Canon canon=null;
/*
* 画一些飞机
* */
private Vector<Plane> plane=new Vector<Plane>();
//定义炸弹向量
private Vector<Bomb> bomb=new Vector<Bomb>();
private int planeNum=5;
//定义三张图片,三张图片才能组成一颗炸弹
Image image1=null;
Image image2=null;
Image image3=null;
//击杀数
private int killNum=0;
public MyPanel(){
JOptionPane.showMessageDialog(this,"上下左右( w,s,a,d ),开火( j )", "提示",JOptionPane.PLAIN_MESSAGE);
canon=new Canon(150,150);
//初始化plane
for(int i=0;i<planeNum;i++){
int y=(int)(Math.random()*-100);
Plane pl=new Plane(y,(i+1)*80-70);
Thread t=new Thread(pl);
t.start();
plane.add(pl);
}
image1=Toolkit.getDefaultTo