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, * quand il le rencontre, il lui sert la main puis il continue son chemin */ public class BonhommeRV extends Bonhomme { private Distance distance; public BonhommeRV(Component zone, int x, int y, int taille, Color couleur,Distance distance) { super(zone, x, y, taille,couleur, false); this.distance = distance; } /** donne la distance a l'autre bonhomme, si l'autre bonhomme utilise * le meme objet de type distance */ public Distance getDistance() { return distance; } /** modifie le contenu de la distance */ public void setDistance(Distance distance) { this.distance = distance; } /** fait avancer le bonhomme tant que sa distance des deux bonhommes * est trop grande pour qu'ils puissent se serrer la main, puis il serre la * main de l'autre bonhomme, puis continue son chemin */ public void run() { boolean marcher = true; int longueurBras = getLongueurBras(); int lePas = getPas(); int distanceEffective; int unPas; while (marcher) { synchronized(distance) { distanceEffective = distance.getDistance() - 2 * longueurBras; if (distanceEffective < lePas) { unPas = distanceEffective; if (distanceEffective == 2*longueurBras) break; unPas = distanceEffective; distance.setDistance(2 * longueurBras); marcher = false; } else { unPas = lePas; distance.setDistance(distance.getDistance() - lePas); } } fairePas(unPas); dormir(); } direBonjour(); while (!estSupprime()) { fairePas(); dormir(); } } }