package personnages; import java.awt.Color; import java.awt.Component; /** Cette classe sert a definir un bonhomme qui doit etre couple avec un autre * Bonhomme, qui doit venir a sa rencontre ; le bonhomme vient a la rencontre * de l'autre bonhomme, en serrant lorsqu'il atteint un lieu "cible" ; * il lui sert la main de l'autre bonhomme puis il continue son chemin */ public class BonhommeRVFixe extends Bonhomme { private BonhommeRVFixe partenaire; private boolean arrive = false; private int cible; public BonhommeRVFixe(Component zone, int x, int y, int taille, Color couleur, int cible) { super(zone,x,y,taille,couleur, false); this.cible=cible; } public boolean isArrive() { return arrive; } public void setArrive(boolean arrive) { this.arrive = arrive; } public BonhommeRVFixe getPartenaire() { return partenaire; } public void setPartenaire(BonhommeRVFixe partenaire) { this.partenaire = partenaire; } /** fait avancer le bonhomme tant que'il n'est pas arrive a la cible * (precisement a une distance egale a la longueur de son bras du milieu * de la cible ; puis il serre la main de l'autre bonhomme, * puis continue son chemin */ public void run() { boolean marcher = true; int longueurBras = getLongueurBras(); int distance; int lePas = getPas(); while (marcher) { distance = Math.abs(getX() - cible) - longueurBras; if (distance < lePas) { if (distance == 0) break; fairePas(distance); marcher = false; } else fairePas(); dormir(); yield(); } positionRepos(); arrive = true; synchronized(this) { notifyAll(); } synchronized(partenaire) { while (!partenaire.isArrive()) { try { partenaire.wait(); } catch (InterruptedException e) { System.out.println("inter"); } } } direBonjour(); dormir(1000); changerDirection(); dormir(); while (!estStoppe()) { fairePas(); dormir(); yield(); } } }