就是在Applet中两个图片进行碰撞检测。

解决方案 »

  1.   

    我不太清楚JAVA画图是怎么画的。。
    但我这里有需要考虑的问题,
    一:UPDATE是是对当前的球重新画还是对于怎么图象重新画
    反正我的意思就是要同步,不是对当前球的检测,要对整个系统的检测。球2的坐标也要是它真实的坐标。
      

  2.   

    有没有人能帮我看一下一个程序?yulin001122() 有没有兴趣?可能有点长。
      

  3.   

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;public class ScrollScreen extends Applet implements Runnable,KeyListener
    {
       int          AppletWidth,AppletHeight,ImageWidth,X1,X2,key,X,Y,ImageX,ImageY,ox;
       Image        scrollImage,scrollImage2,OffScreen, UFO,air;
       Image[]      bs=new Image[20];
       Thread       newThread; 
       Graphics     drawOffScreen;
       MediaTracker MT;   ImageSprite  plane;
       BulletSprite[] bullet=new BulletSprite[20];
       enemyPlane   EP;   public void init()
       {
          AppletWidth  = getSize().width;
          AppletHeight = getSize().height;
          MT           = new MediaTracker(this);
          scrollImage  = getImage(getDocumentBase(),"Images/scroll.gif"); 
          UFO = getImage(getDocumentBase(),"Images/6.gif");
          air = getImage(getDocumentBase(),"Images/AIRPLANE.gif");
          for(int i=0;i<20;i++)
             bs[i]  = getImage(getDocumentBase(),"Images/BULLET.gif");       MT.addImage(scrollImage,0); 
          MT.addImage(UFO,0);
          MT.addImage(air,0);
          for(int i=0;i<20;i++)
             MT.addImage(bs[i],0);      addKeyListener(this);      try
          {
             MT.waitForAll();
          }      
          catch(InterruptedException E){ }      scrollImage2 = createImage(scrollImage.getSource());      ImageWidth   = scrollImage.getWidth(this);      X1           = 0;               
          X2           = ImageWidth;     
           
          OffScreen     = createImage(AppletWidth,AppletHeight);
          drawOffScreen = OffScreen.getGraphics();      plane = new ImageSprite(air,this);
          EP    = new enemyPlane(UFO,this);
          for(int i=0;i<20;i++)
             bullet[i] = new BulletSprite(bs[i],this,AppletWidth,AppletHeight);   }   public void start()                
       {
          newThread = new Thread(this);   
          newThread.start();
       }   public void stop()         
       {
          newThread = null;        
       }   public void paint(Graphics g)
       {      drawOffScreen.clearRect(0,0,AppletWidth,AppletHeight);
          drawOffScreen.drawImage(scrollImage,X1,0,this);
          drawOffScreen.drawImage(scrollImage2,X2,0,this);
          plane.paintSprite(drawOffScreen,this);
          //EP.paintSprite(drawOffScreen,this);
          for(int i=0;i<20;i++)
             bullet[i].paintSprite(drawOffScreen,this);
          EP.paintSprite(drawOffScreen,this);
                     
          g.drawImage(OffScreen,0,0,this); 
       }   public void update(Graphics g)    
       {
          paint(g);                 
       }   public void run()
       {
          while(newThread != null)
          {
             repaint();                     try
             {
                Thread.sleep(10);    
             }
             catch(InterruptedException E){ }
             EP.updateState();         for(int i=0;i<20;i++)
                bullet[i].updateState(EP);          if(X1 == - AppletWidth)
             {
                X1 = - 1;
             }
             else
             {
                X1--;
             } 
             if(X2 == 0)
             {
                X2 = ImageWidth - 1;
             }
             else
             {
                X2--;
             }
             if((bullet[0].X+getWidth()>=EP.getX())&&(bullet[0].Y+bullet[0].getHeight()>=EP.getY())&&(EP.getX()+EP.getWidth()>=bullet[0].X)&&(EP.getY()+EP.getHeight()>=bullet[0].Y))
             {
                bullet[0].setVisible(false);
                bullet[0].setMove(false);
                EP.setVisible(false);
             } 
          }
       }
        
       public void keyTyped(KeyEvent e){}   public void keyReleased(KeyEvent e){}     public void keyPressed(KeyEvent e)
       {
          key=e.getKeyCode();
          if(key==e.VK_RIGHT)
          {
             plane.X+=3;
          }
          if(key==e.VK_LEFT)
          {
             plane.X-=3;
          }
          if(key==e.VK_UP)
          {
             plane.Y-=3;
          }
          if(key==e.VK_DOWN)
          {
             plane.Y+=3;
          }
          if(key==e.VK_SPACE)
          {
             if(ox==19)
             {
                bullet[ox].setLocation(plane.X+60,plane.Y+40);
                bullet[ox].setVisible(true);
                bullet[ox].setMove(true);
                ox=0;
             }
             else
             {
                bullet[ox].setLocation(plane.X+60,plane.Y+40);
                bullet[ox].setVisible(true);
                bullet[ox].setMove(true);
                ox++;
             }
          }                 
       }  
    }
      

  4.   


    class enemyPlane  
    {
       int     X=450,Y=50,width,height;
       boolean visible,active;
       Image  SpriteImage;           
       Applet Game;                  
      
       public enemyPlane(Image SpriteImage,Applet Game)
       {
          this.SpriteImage   = SpriteImage;
          this.Game          = Game;
                
          setLocation(450,50);         
          setVisible(true);        
          setMove(true);         
       }   public int getX()
       {
          return X;
       }   public int getY()
       {
          return Y;
       }   public void setLocation(int X,int Y)
       {
          this.X = X;
          this.Y = Y;
       }   public int getWidth()
       {
          return width;
       }   public int getHeight()
       {
          return height;
       }   public void setSize(int width,int height)
       {
          this.width  = width;
          this.height = height;
       }   public boolean canVisible()
       {
          return visible;
       }   public void setVisible(boolean v)
       {
          visible = v;
       }   public boolean canMove()
       {
          return active;
       }   public void setMove(boolean m)
       {
          active = m;
       }   public void updateState()
       {
          X-=1;
       }   public void paintSprite(Graphics g,Applet Game)  
       {
          if(visible == true)      
             g.drawImage(SpriteImage,450,50,Game);  
       }
    }class BulletSprite 
    {
       int     X,Y,width,height;
       boolean visible,active;
       int AppletWidth,AppletHeight;
       Image  SpriteImage;    public BulletSprite(Image bullet,Applet Game,int AppletWidth,int AppletHeight)
       {           
          this.SpriteImage  = bullet;
          this.AppletWidth  = AppletWidth;
          this.AppletHeight = AppletHeight;      setVisible(false);          
          setMove(false);             
       }   public int getX()
       {
          return X;
       }   public int getY()
       {
          return Y;
       }   public void setLocation(int X,int Y)
       {
          this.X = X;
          this.Y = Y;
       }   public int getWidth()
       {
          return width;
       }   public int getHeight()
       {
          return height;
       }   public void setSize(int width,int height)
       {
          this.width  = width;
          this.height = height;
       }   public boolean canVisible()
       {
          return visible;
       }   public void setVisible(boolean v)
       {
          visible = v;
       }   public boolean canMove()
       {
          return active;
       }   public void setMove(boolean m)
       {
          active = m;
       }   public void updateState(enemyPlane ep)     
       {
          if(active == true)
          {
             if(X > AppletWidth)    
             {
                setVisible(false); 
                setMove(false);    
             }
             else
                X = X + 10;     
          }
          if((X+width>=ep.getX())&&(Y+height>=ep.getY())&&(ep.getX()+ep.getWidth()>=X)&&(ep.getY()+ep.getHeight()>=Y))
          {
             setVisible(false);
             setMove(false);
             ep.setVisible(false);
          }
       }   public void paintSprite(Graphics g,Applet Game)
       {
          if(visible == true)
             g.drawImage(SpriteImage,X,Y,Game);
       }
    }class ImageSprite 
    {
       int     X,Y,width,height;
       boolean visible,active;
       Image  SpriteImage;           
       Applet Game;                  
      
       public ImageSprite(Image SpriteImage,Applet Game)
       {
          this.SpriteImage   = SpriteImage;
          this.Game          = Game;
                
          setLocation(0,0);         
          setVisible(true);        
          setMove(true);         
       }   public void updateState()
       {
       }   public void paintSprite(Graphics g,Applet Game)  
       {
          if(visible == true)      
             g.drawImage(SpriteImage,X,Y,Game);  
       }   public int getX()
       {
          return X;
       }   public int getY()
       {
          return Y;
       }   public void setLocation(int X,int Y)
       {
          this.X = X;
          this.Y = Y;
       }   public int getWidth()
       {
          return width;
       }   public int getHeight()
       {
          return height;
       }   public void setSize(int width,int height)
       {
          this.width  = width;
          this.height = height;
       }   public boolean canVisible()
       {
          return visible;
       }   public void setVisible(boolean v)
       {
          visible = v;
       }   public boolean canMove()
       {
          return active;
       }   public void setMove(boolean m)
       {
          active = m;
       }
    }
      

  5.   

    我觉得太长了。希望有同志能copy过去帮我看看。先谢过了。
      

  6.   

    因为我这里没有java 的运行环境拉。.
    所以现在我只能提供你一点应该注意的地方 再说我对JAVA画图没有研究过..
    所以我的意见你可以作为参考拉。....