java用键盘的方向键控制一个图形块推着另一个图形块移动

来源:互联网 发布:南京 人工智能 编辑:程序博客网 时间:2024/06/08 18:29


/*一个图形推着另一个图形移动 */

 import java.awt.*;

 import java.awt.event.*;

 import javax.swing.*;

 public class Ex3_2extends JFrame 

 {

  public Ex3_2()

   { super("推着另一图形移动");

      setSize(400,400);

      setVisible(true);

      setDefaultCloseOperation(EXIT_ON_CLOSE);

      MovePanel m1 = newMovePanel();

      add(m1,BorderLayout.CENTER);

      m1.requestFocus();

      validate();

   }

 

 public static voidmain(String args[])

  {

     JFrame.setDefaultLookAndFeelDecorated(true);

     new Ex3_2();

   }

 }

 

 class MovePanel extendsPanel implements KeyListener 

 { //创建一个可推动图形的面板

  int step = 10;

  int x1=50, y1=50;

  int x2=100, y2=100;

   draw_red draw1;

   draw_black draw2;

 

  MovePanel()

  {

      setBounds(0,0,400,400);

      draw1 = newdraw_red();

      draw2 = newdraw_black();

      addKeyListener(this);

   //  repaint();

  }

  public voidpaint(Graphics g)

  { 

    draw1.draw(g,x1,y1);

    draw2.draw(g,x2,y2);

  }

 

   public voidkeyPressed(KeyEvent e)//设置键盘事件

   {

 

     if(e.getKeyCode()==KeyEvent.VK_UP)

       { moveUp();}

     elseif(e.getKeyCode()==KeyEvent.VK_DOWN)

       { moveDown(); }

     else if(e.getKeyCode()==KeyEvent.VK_LEFT)

       {moveLeft(); }

     elseif(e.getKeyCode()==KeyEvent.VK_RIGHT)

       { moveRight(); }

   }

  public voidkeyTyped(KeyEvent e) {}

  public voidkeyReleased(KeyEvent e) {}

 

  public void moveUp()

   {

      if((draw1.y-1) == (draw2.y+draw2.HEIGHT)&& draw1.x == draw2.x)

       {

          draw1.y -= step;

          draw2.y -= step;

       }

      else draw1.y -= step;

      y1=draw1.y;

      y2=draw2.y;

      repaint();

  }

 public void moveDown()

  {

      if((draw1.y+1+draw1.HEIGHT) == draw2.y&& draw1.x == draw2.x)

       {

          draw1.y += step;

          draw2.y += step;

       }

      else  draw1.y += step;

      y1=draw1.y;

      y2=draw2.y;

      repaint();

  }

 public void moveLeft()

  {

      if((draw1.x-1) == (draw2.x+draw2.WIDTH)&& draw1.y == draw2.y)

       {

          draw1.x -= step;

          draw2.x -= step;

       }

      else draw1.x -=step;

      x1=draw1.x;

      x2=draw2.x; 

      repaint();

  }

 public void moveRight()

  {

      if((draw1.x+1+draw1.WIDTH) == draw2.x&& draw1.y == draw2.y)

       {

          draw1.x += step;

          draw2.x += step;

       }

      else draw1.x += step;

      x1=draw1.x;

      x2=draw2.x;

     repaint();

  }

 }

 

 class draw_red

 {

  int WIDTH = 30, HEIGHT= 30;

  int x, y;  

  public voiddraw(Graphics g, int _x, int _y)

  {

      x = _x;

      y = _y;

    g.setColor(Color.red);

    g.fillRect(x,y,WIDTH,HEIGHT);

    }

 }

 

 class draw_black

 {

  int WIDTH = 30, HEIGHT= 30;

  int x, y;  

  public voiddraw(Graphics g, int _x, int _y)

  {

      x = _x;

      y = _y;

    g.setColor(Color.black);

    g.fillRect(x,y,WIDTH,HEIGHT);

    }

 };

0 0
原创粉丝点击