import java.awt.*; class Attachee extends Baloune{ // Baloune attachée par une corde, la position initiale est donnée par // le point d'attachement et on ne peut la déplacer // qu'en la montant ou la descendant, à moins de couper la corde.... private int longueurCorde; Attachee(int x, int y, int rayon, int longueurCorde){ // x et y du pied de la corde... super(x,y-longueurCorde-rayon,rayon); this.longueurCorde=longueurCorde; } public String toString(){ // les x et y seront ceux du centre de la Baloune... return super.toString()+"corde="+longueurCorde; } // modifications de comportements de la Baloune public boolean gonfler(int r){ // gonfler en s'assurant que la corde reste de la même longueur if (super.gonfler(r)) { super.deplacer(0,-r); return true; } else return false; } public void deplacer(int x, int y){ // empêche le déplacement d'une baloune attachée en ne faisant rien } public void afficher(Graphics g, String mess){ // affiche la baloune sans message qui apparait au bas de la corde super.afficher(g,""); g.drawLine(x,y+rayon,x,y+rayon+longueurCorde); g.drawString(mess,x,y+rayon+longueurCorde); } // comportements spécifiques à la baloune attachée public void couperCorde(){ // coupe la corde et alors la baloune vient se coller au haut de l'écran // si elle n'y était pas déjà int dy = rayon-y; if (dy<0) super.deplacer(0,dy); longueurCorde=0; } public void monter(int dy){ // monte la baloune en augmentant la valeur de la corde // en s'assurant que la longueur de la corde ne devienne pas n�gative if (dy<0 && dy < -longueurCorde) dy = -longueurCorde; super.deplacer(0,-dy); longueurCorde = longueurCorde+dy; } public void descendre(int dy){ // descendre la baloune en diminuant la valeur de la corde monter(-dy); } public boolean cordeTouchee(int x1, int y1){ // vérifie si le point x1@y1 est très près de la corde return Math.abs(x-x1)<5 && y+rayon