import java.awt.*; import javax.swing.*; import java.awt.image.*; import java.awt.event.*; import java.net.URL; import java.net.MalformedURLException; public class ObstacleApplet extends JApplet { public ObstaclePanel p; private MediaTracker tracker=null; public void init() { Image combatImg = loadImageCompletely("combat.gif"); p = new ObstaclePanel(combatImg); this.getContentPane().add(p); } private Image loadImageCompletely(String imgName) { //load image using URL. wait for load using MediaTracker Image img; if (tracker==null) { tracker = new MediaTracker(this); } try { img = Toolkit.getDefaultToolkit().getImage(new URL(this.getDocumentBase(),imgName)); tracker.addImage(img,0); try { tracker.waitForID(0); } catch (InterruptedException e) { System.out.println("Cannot load image "+ img); System.out.println(e); } return img; } catch (MalformedURLException e) { System.out.println(e); } return null; } } class ObstaclePanel extends JPanel implements ComponentListener, MouseListener { private Image bImg=null; private BufferedImage bScaledBufferedImg=null; private boolean isObstacle=false; public ObstaclePanel( Image bImg) { this.bImg = bImg; addComponentListener(this); addMouseListener(this); } public void paintComponent(Graphics g) { super.paintComponent(g); if (bScaledBufferedImg==null) { resizeTerrainImage(); } g.drawImage(bScaledBufferedImg,0,0,this); if (isObstacle) { g.drawString("Cliquer... Obstacle",10,20); } else { g.drawString("Cliquer... Not obstacle",10,20); } } public void componentHidden(ComponentEvent e) {} public void componentMoved(ComponentEvent e) {} public void componentShown(ComponentEvent e) {} public void componentResized(ComponentEvent e) { resizeTerrainImage(); } private void resizeTerrainImage() { int w = this.getSize().width; int h = this.getSize().height; bScaledBufferedImg = (BufferedImage)this.createImage(w,h); if ( bScaledBufferedImg == null ) { return; } Graphics2D g = bScaledBufferedImg.createGraphics(); g.drawImage(bImg, 0, 0, w, h, this); g.dispose(); } public void mouseClicked(MouseEvent e) { int obsRGBColor = -8041230; int pixel = bScaledBufferedImg.getRGB(e.getX(),e.getY()); if (pixel==obsRGBColor) { isObstacle=true; System.out.println("Color=" + pixel + " obstacle!"); } else { isObstacle=false; System.out.println("Color=" + pixel + " OK"); } repaint(); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} }