坦克打子弹

//何勇  2009-5-9 坦克打子弹

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class PaintFrame extends Frame

{

    //xy是左上角坐标

    int dir=1,x1=200,y1=455,x2=210,y2=460,x3=190,y3=450,x4=220,y4=450,x5=205,y5=430,x6=210,y6=435;

    int bulletX=100,bulletY=100;

    boolean Thebullet=false;

    public void paint(Graphics gr)

     {

        gr.setColor(Color.white);

        gr.fillRect(0,0,this.getWidth(),this.getHeight());

        if(Thebullet==true){

            gr.setColor(Color.blue);

            gr.fillOval(bulletX-5, bulletY-5, 10, 10);

        }

        if(dir==1) {

         gr.setColor(Color.black);//设画图颜色

         gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形

         gr.drawLine(x2,y2,x6,y6);

         gr.fillOval(x3,y3,10,30);

         gr.fillOval(x4,y4,10,30);

         gr.fillOval(x5,y5,10,10);

        }

        if(dir==2) {

         gr.setColor(Color.black);//设画图颜色

         gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形

         gr.drawLine(x2,y2+40,x6,y6+20);

         gr.fillOval(x3,y3,10,30);

         gr.fillOval(x4,y4,10,30);

         gr.fillOval(x5,y5+60,10,10);

        }

        if(dir==3) {

         gr.setColor(Color.black);//设画图颜色

         gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形

         gr.drawLine(x2+10,y2+5,x6+30,y6+30);

         gr.fillOval(x3+5,y3-5,30,10);

         gr.fillOval(x4-25,y4+25,30,10);

         gr.fillOval(x5+30,y5+30,10,10);

        }

        if(dir==4) {

         gr.setColor(Color.black);//设画图颜色

         gr.fillRect(x1,y1,20,20);//用当前颜色,添充矩形

         gr.drawLine(x2+10-40,y2+5,x6+30-20,y6+30);

         gr.fillOval(x3+5,y3-5,30,10);

         gr.fillOval(x4-25,y4+25,30,10);

         gr.fillOval(x5-30,y5+30,10,10);

        }

     }

    class MyThread extends Thread implements Runnable{

        int dir;

        public MyThread(int dir){

            this.dir=dir;

        }

        public void run(){

           try{

               while(true){

                if(bulletX<0||bulletX>500||bulletY<0||bulletY>500){

                    Thebullet=false;break;

                }

                else{

                    if(dir==1)bulletY=bulletY-6;

                    if(dir==2)bulletY=bulletY+6;

                    if(dir==3)bulletX=bulletX+6;

                    if(dir==4)bulletX=bulletX-6;

                    repaint();

                    }

                Thread.sleep(8);

              }

         }catch(Exception e){

            e.printStackTrace();

            }

      }

   }

    public static void main(String[] args)

   {

       PaintFrame frm=new PaintFrame();

 

       frm.setSize(500,500);

       frm.setLocation(360, 200);

       frm.show();

    }

public PaintFrame()

   {

        class KClass implements KeyListener

       {

           public void keyPressed(KeyEvent e)

          {

             switch(e.getKeyChar())

             {

                       case 'w':dir=1;y1=y1-2;y2=y2-2;y3=y3-2;y4=y4-2;y5=y5-2;y6=y6-2;break;

                 case 's':dir=2;y1=y1+2;y2=y2+2;y3=y3+2;y4=y4+2;y5=y5+2;y6=y6+2;break;

                 case 'd':dir=3;x1=x1+2;x2=x2+2;x3=x3+2;x4=x4+2;x5=x5+2;x6=x6+2;break;

                 case 'a':dir=4;x1=x1-2;x2=x2-2;x3=x3-2;x4=x4-2;x5=x5-2;x6=x6-2;break;

                 case 'j':

                 case ' ':

                     Thread.interrupted();

                     if(dir==1){bulletX=x5+5;bulletY=y5+5;}

                     if(dir==2){bulletX=x5+5;bulletY=y5+60-5;}

                     if(dir==3){bulletX=x5+30;bulletY=y5+30+5;}

                     if(dir==4){bulletX=x5-30+5;bulletY=y5+30+5;}

                     Thebullet=true;

                    Thread thread01=new Thread(new MyThread(dir));

                     thread01.start();

              }

              repaint();//重画窗体

          }

          public void keyReleased(KeyEvent e){}

          public void keyTyped(KeyEvent e){}

       }

        class wclass implements WindowListener

        {

             public void windowClosing(WindowEvent e){

                 if   (e.getID()==e.WINDOW_CLOSING)   {

                      int selection=JOptionPane.showConfirmDialog(null,"确实要退出程序吗?","退出",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);

              if(selection==JOptionPane.YES_OPTION)

                  System.exit(0);

          }

 

             }

             public void windowOpened(WindowEvent e){}

             public void windowIconified(WindowEvent e){}

             public void windowDeiconified(WindowEvent e){}

             public void windowClosed(WindowEvent e){}

             public void windowActivated(WindowEvent e){}

             public void windowDeactivated(WindowEvent e){}

        }

 

       this.addKeyListener(new KClass());

       this.addWindowListener(new wclass());

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值