打飞机程序JAVA

/**
 * Created by Administrator on 2018/6/7.
 */
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
public class Plane1 extends JFrame{
    MyPanel mp=null;
    public static void main(String[] args){
        Plane1 p1=new Plane1();
    }
    public Plane1(){
        mp=new MyPanel();
        Thread t1=new Thread(mp);
        t1.start();
        this.add(mp);
        this.addKeyListener(mp);
        this.setSize(400,600);
        this.setLocation(600,200);
        this.setResizable(false);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}
class MyPanel extends JPanel implements KeyListener,Runnable
{
    MyPlane mpa=null;
    Vector<DiPlane> dfj=new Vector<DiPlane>();
    int dfjsl=3;


    public MyPanel(){
        mpa=new MyPlane(150,500);
        for(int i=0;i<dfjsl;i++){
            DiPlane dpa=new DiPlane((i)*150+30,0);
            Thread t2=new Thread(dpa);
            t2.start();
            DZidan zd1=new DZidan(dpa.x,dpa.y);
            dpa.dzd.add(zd1);
            Thread t3=new Thread(zd1);
            t3.start();
            dfj.add(dpa);
        }
    }
    public void paint(Graphics g){
        super.paint(g);
        g.fillRect(0, 0, 400, 600);
        g.setColor(Color.CYAN);
        if(mpa.shengming){
            this.drawMy(mpa.getX(), mpa.getY(), g);
        }
        for(int i=0;i<dfj.size();i++){
            DiPlane dpa=dfj.get(i);
            if(dpa.shengming){
//                this.drawDi(dpa.getX(),dpa.getY(), g);
                for(int j=0;j<dpa.dzd.size();j++){
                   DZidan dfzd=dpa.dzd.get(j);
                    if(dfzd.shengming){
                        Image tp3=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/2.png"));
                        g.drawImage(tp3, dfzd.x, dfzd.y, 30, 30,this);
                     }else {
                        dpa.dzd.remove(dfzd);
                    }
               }
           }
        }
        for(int i=0;i<mpa.aa.size();i++){
            Zidan zd=mpa.aa.get(i);
            if(zd!=null&&zd.shengming==true){
                g.setColor(Color.white);
                g.fill3DRect(zd.x, zd.y, 3, 3, false);
            }
            if(zd.shengming==false){
                mpa.aa.remove(zd);
            }
        }








    }
    public void drawMy(int x,int y,Graphics g){
        Image tp1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/1.png"));
        g.drawImage(tp1, x, y, 30, 30,this);
    }
    public void drawDi(int x,int y,Graphics g){
        Image tp1=Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/2.png"));
        g.drawImage(tp1, x, y, 30, 30,this);
    }
    public void keyTyped(KeyEvent e){}
    public void keyReleased(KeyEvent e){}
    public void keyPressed(KeyEvent e){
        if(e.getKeyCode()==KeyEvent.VK_W){
            this.mpa.xiangshang();
        }else if(e.getKeyCode()==KeyEvent.VK_A){
            this.mpa.xiangzuo();
        }else if(e.getKeyCode()==KeyEvent.VK_S){
            this.mpa.xiangxia();
        }else if(e.getKeyCode()==KeyEvent.VK_D){
            this.mpa.xiangyou();
        }
        if(e.getKeyCode()==KeyEvent.VK_J)
        {
            if(this.mpa.aa.size()<8){
                this.mpa.fszd();
            }


        }
        this.repaint();
    }
    public void jzdf(Zidan zd,DZidan dzd){
        if(zd.x>dzd.x&&zd.x<dzd.x+30&&zd.y>dzd.y&&zd.y<dzd.y+30){
            zd.shengming=false;
            dzd.shengming=false;
        }
    }
    public void jzwf(DZidan dzd,MyPlane mpa){
    if(dzd.x>mpa.x&&dzd.x<mpa.x+30&&dzd.y>mpa.y&&dzd.y<mpa.y+30){
    mpa.shengming=false;
    dzd.shengming=false;
    }
    }
    public void run(){
        while(true){
            try{
                Thread.sleep(100);
            }catch(Exception e){}
            for(int i=0;i<mpa.aa.size();i++){
                Zidan zd=mpa.aa.get(i);
                if(zd.shengming){
                    for(int j=0;j<dfj.size();j++){
                        DiPlane dpa=dfj.get(j);
                        for(int k=0;k<dpa.dzd.size();k++){
                            DZidan dfzd=dpa.dzd.get(k);
                            if(dfzd.shengming){
                                this.jzdf(zd,dfzd);
                            }
                        }
                    }
                }
            }
            for(int i=0;i<this.dfj.size();i++){
            DiPlane dpa=dfj.get(i);
            for(int j=0;j<dpa.dzd.size();j++){
            DZidan drzd=dpa.dzd.get(j);
            if(mpa.shengming){
            this.jzwf(drzd, mpa);
           
            }
            }
            }
            this.repaint();
        }
    }

}



import java.util.Vector;


/**
 * Created by Administrator on 2018/6/7.
 */
class Plane{
    int x=0;
    int y=0;
    int sudu=5;
    boolean shengming=true;


    public int getSudu() {
        return sudu;
    }


    public void setSudu(int sudu) {
        this.sudu = sudu;
    }


    public int getX() {
        return x;
    }


    public void setX(int x) {
        this.x = x;
    }


    public void setY(int y) {
        this.y = y;
    }


    public int getY() {
        return y;
    }
    public Plane(int x,int y){
        this.x=x;
        this.y=y;
    }
}
class MyPlane extends Plane {
    Vector<Zidan> aa=new Vector<Zidan>();
    Zidan zd=null;
    public MyPlane(int x,int y){
        super(x,y);
    }
    public void xiangshang(){
       if(y>0)
       {
           y-=sudu;
       }


    }
    public void xiangzuo(){
       if(x>0)
       {
           x-=sudu;
       }


    }
    public void xiangxia()
    {
       if(y>550){
           y+=sudu;
       }


    }
    public void xiangyou()
    {
        if(x<360){
            x+=sudu;
        }


    }
    public void fszd(){
        zd=new Zidan(x+12,y);
        aa.add(zd);
        Thread t=new Thread(zd);
        t.start();
    }


}
class DiPlane extends Plane implements Runnable{
    Vector<DZidan>dzd=new Vector<DZidan>();
    Vector<DiPlane>dfj=new Vector<DiPlane>();
    int time=0;
    public DiPlane(int x,int y){
        super(x,y);
    }
    public void run(){
        while (true){
            int a=(int)(Math.random()*2);
            switch (a)
            {
                case 0:
                    for (int i=0;i<30;i++){
                        if(x<360){
                            x+=sudu;
                            try{
                                Thread.sleep(50);
                            }catch(Exception e){}
                        }


                    }
                    break;
                case 1:
                    for (int i=0;i<30;i++){
                        if(x>0) {
                            x -= sudu;
                            try {
                                Thread.sleep(30);
                            } catch (Exception e) {
                            }
                        }
                    }
                    break;
            }
            if(this.shengming==false){
                break;
            }
            this.time++;
            if(time%2==0){
                if(shengming){
                    if(dzd.size()<5){
                        DZidan zd=null;
                        zd=new DZidan(x+10,y);
                        dzd.add(zd);
                            Thread t5=new Thread(zd);
                            t5.start();
                    }
                }
            }
        }
    }
}
class Zidan implements Runnable{
    int x=0;
    int y=0;
    int sudu=5;


    boolean shengming=true;
    public Zidan(int x,int y){
        this.x=x;
        this.y=y;
    }
    public void run(){
        while(true){
            try{
                Thread.sleep(50);
            }catch (Exception e){}
            y-=sudu;
            if(x<0||x>400||y<0||y>600){
                this.shengming=false;
                break;
            }
        }
    }
}
class DZidan implements Runnable{
    int x=0;
    int y=0;
    int sudu=5;
    boolean shengming=true;
    public DZidan(int x,int y){
        this.x=x;
        this.y=y;
    }
    public void run(){
        while(true){
            try{
                Thread.sleep(50);
            }catch (Exception e){}
            y+=sudu;
            if(x<0||x>400||y<0||y>600){
                this.shengming=false;
                break;
            }
        }
    }
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值