Mattie

Untitled

Jan 12th, 2011
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.15 KB | None | 0 0
  1. package bomberman41;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Rectangle;
  5.  
  6. /*******************************************************************************************
  7.  *
  8.  * <p>De klasse Botsing is een bibliotheek met statische methoden om te controleren of twee Componenten
  9.  * elkaar raken of overlappen.</p>
  10.  *
  11.  * <p>Deze klasse is gemaakt ter ondersteuning bij het project "Realisatie van Software"
  12.  * van de opleiding Informatica aan de hogeschool Leiden</p>
  13.  *
  14.  * <p>Voorbeeld van gebruik:</p>
  15.  *
  16.  * <code>if (<strong>Botsing.overlapt( pacman, spookje )</strong> )</code>
  17.  * <code>     // doe iets...</code>
  18.  *      
  19.  * <p><strong>Let op</strong>: je hoeft géén instantie van de klasse Botsing te maken en je roept de methode aan via de naam van de klasse</p>
  20.  *
  21.  * @author  Nelleke Louwe Kooijmans
  22.  * @version maart 2009
  23.  *
  24.  */
  25. public class Botsing
  26. {
  27.   /*****************************************************************************************
  28.    *
  29.    * @param een   een Component ( b.v. een JPanel )
  30.    * @param twee  een andere Component ( b.v. een JPanel )
  31.    * @return      een boolean die aangeeft of de twee componenten elkaar aan één van de zijden raken
  32.    */
  33.   public static boolean raakt( Component een, Component twee )
  34.   {
  35.     Rectangle r2 = new Rectangle( twee.getX()-1, twee.getY()-1, twee.getWidth()+2, twee.getHeight()+2 );
  36.     Rectangle doorsnede = doorsnede( een, r2 );
  37.     return ( ( doorsnede.width == 1 ) || (doorsnede.height == 1 ) );
  38.   }
  39.  
  40.   /*****************************************************************************************
  41.    *
  42.    * @param een   een Component ( b.v. een JPanel )
  43.    * @param twee  een andere Component ( b.v. een JPanel )
  44.    * @return      een boolean die aangeeft of de twee componenten elkaar overlappen
  45.    */
  46.   public static boolean overlapt( Component een, Component twee )
  47.   {
  48.     Rectangle doorsnede = doorsnede( een, twee );
  49.     return !doorsnede.isEmpty();
  50.   }
  51.  
  52.   /*****************************************************************************************
  53.    *
  54.    * @param een   een Component ( b.v. een JPanel )
  55.    * @param twee  een andere Component ( b.v. een JPanel )
  56.    * @return      een boolean die aangeeft of component twee geheel wordt overlapt door component één
  57.    */
  58.   public static boolean bevat( Component een, Component twee )
  59.   {
  60.     Rectangle doorsnede = doorsnede( een, twee );
  61.     Rectangle r2 = new Rectangle( twee.getX(), twee.getY(), twee.getWidth(), twee.getHeight() );
  62.    
  63.     return doorsnede.equals( r2 );
  64.   }
  65.  
  66.   /*****************************************************************************************
  67.    *
  68.    * @param een   een Component ( b.v. een JPanel )
  69.    * @param twee  een andere Component ( b.v. een JPanel )
  70.    * @return      een int die aangeeft hoeveel pixels de twee componenten elkaar overlappen
  71.    */
  72.   public static int pixelsOverlap( Component een, Component twee )
  73.   {
  74.     Rectangle doorsnede = doorsnede( een, twee );
  75.     return doorsnede.width * doorsnede.height;
  76.   }
  77.  
  78.   /*****************************************************************************************
  79.    *
  80.    * @param een   een Component ( b.v. een JPanel )
  81.    * @param twee  een andere Component ( b.v. een JPanel )
  82.    * @return      een int die aangeeft hoeveel procent van component één wordt overlapt door component twee
  83.    */
  84.   public static int procentOverlap( Component een, Component twee )
  85.   {
  86.     return pixelsOverlap( een, twee ) / ( een.getWidth() * een.getHeight() );
  87.   }
  88.  
  89.   // hulpmethode om de doorsnede van twee componenten te berekenen
  90.   private static Rectangle doorsnede( Component een, Component twee )
  91.   {
  92.     Rectangle r1 = new Rectangle( een.getX(), een.getY(), een.getWidth(), een.getHeight() );
  93.     Rectangle r2 = new Rectangle( twee.getX(), twee.getY(), twee.getWidth(), twee.getHeight() );
  94.    
  95.     return r1.intersection( r2 );
  96.   }
  97.  
  98.   // hulpmethode om de doorsnede van twee component en een rectangle te berekenen
  99.   private static Rectangle doorsnede( Component een, Rectangle r2 )
  100.   {
  101.     Rectangle r1 = new Rectangle( een.getX(), een.getY(), een.getWidth(), een.getHeight() );
  102.     return r1.intersection( r2 );
  103.   }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment