import java.awt.Graphics; import java.awt.Image; import java.awt.Event; import java.awt.*; import java.awt.event.*; import java.net.*; import java.awt.image.*; interface UtiliseTapis { public void changement(); } class Tapis extends Panel implements MouseMotionListener, MouseListener { int nbimg; Image images[]; int abscisses[]; int ordonnees[]; int ordre[]; boolean bouge=false; int dx=0; int dy=0; int h; int l; UtiliseTapis papa; Tapis(Image cartes[],int a,int b,UtiliseTapis t) { this.addMouseMotionListener(this); this.addMouseListener(this); h=a; l=b; papa=t; nbimg=cartes.length; abscisses=new int[nbimg]; ordonnees=new int[nbimg]; ordre=new int[nbimg]; images=cartes; for (int i=0;i-1;i--) g.drawImage(images[ordre[i]],abscisses[ordre[i]],ordonnees[ordre[i]],l,h,this); } public void mousePressed(MouseEvent e) { int x=e.getX(); int y=e.getY(); for (int i=0;i0)&&((y-ordonnees[ordre[i]])>0)) { int mem=ordre[i]; for (int j=i-1;j>-1;j--) ordre[j+1]=ordre[j]; ordre[0]=mem; dx=x-abscisses[mem]; dy=y-ordonnees[mem]; bouge=true; papa.changement(); break; }; }; } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mouseClicked(MouseEvent e) { } public void mouseReleased(MouseEvent e) { int x=e.getX(); int y=e.getY(); if (bouge) { Graphics g=this.getGraphics(); g.clearRect(abscisses[ordre[0]],ordonnees[ordre[0]],l,h); g.drawImage(images[ordre[0]],x-dx,y-dy,l,h,this); g.clipRect(abscisses[ordre[0]],ordonnees[ordre[0]],l,h); abscisses[ordre[0]]=x-dx; ordonnees[ordre[0]]=y-dy; paint(g); }; bouge=false; } public void mouseMoved(MouseEvent e) { } public void mouseDragged(MouseEvent e) { int x=e.getX(); int y=e.getY(); if (bouge) { Graphics g=this.getGraphics(); g.clearRect(abscisses[ordre[0]],ordonnees[ordre[0]],l,h); g.drawImage(images[ordre[0]],x-dx,y-dy,l,h,this); g.clipRect(abscisses[ordre[0]],ordonnees[ordre[0]],l,h); abscisses[ordre[0]]=x-dx; ordonnees[ordre[0]]=y-dy; paint(g); }; } } public class Exoiso extends java.applet.Applet implements ActionListener, UtiliseTapis { Tapis tapis; Image images[]=new Image[8]; Button bouton = new Button("Soumettre"); Label verdict=new Label(" "); public void init() { for (int i=0;i<8;i++) { images[i]=getImage(getCodeBase(),"cart"+(i+1)+".gif"); } setLayout(new BorderLayout(5,5)); tapis=new Tapis(images,100,70,this); add("Center",tapis); Panel boite=new Panel(); add("South",boite); boite.add(bouton); bouton.addActionListener(this); boite.add(verdict); this.validate(); tapis.distribue(); } public void actionPerformed(ActionEvent e) { if (e.getSource()==bouton) { if (tapis.empilees(1,2)&&tapis.empilees(3,4)&&tapis.empilees(5,6)&& tapis.empilees(6,7)&&!(tapis.empilees(1,3))&&!(tapis.empilees(3,5))&&!(tapis.empilees(5,8))&&!(tapis.empilees(1,5))&&!(tapis.empilees(1,8))&&!(tapis.empilees(8,3))) verdict.setText("Exact"); else verdict.setText("Faux"); } } public void changement() { verdict.setText(" "); } }