var nb_tracerFigure = 0; // ajout : nombre d'appels de tracerFigure function tracerFigure() { nb_tracerFigure += 1; // ajout : un appel de plus de tracerFigure if (nb_tracerFigure === 1) { // ajout : premier appel de tracerFigure //// création des 4 objets (code JS initial déplacé) commandeG('@1=Segment(@2,@3)','segPQ','P','Q'); commandeG('@1=Circle(@2,@3)','cerPQ','P','Q'); commandeG('@1=Point(@2)','A','segPQ'); ggbApplet.setAnimating('A',true); commandeG('@1=Point(@2)','B','cerPQ'); ggbApplet.setAnimating('B',true); // ajout : écouteurs pour déplacements de A et B ggbApplet.registerObjectUpdateListener("A", "retracerFigure"); ggbApplet.registerObjectUpdateListener("B", "retracerFigure"); } fixerNbInitialObjets(9); // 5 (deux boutons, n, P, Q) + 4 créés (segPQ, A, cerPQ, B) fixerValeursAsurveiller(['n']); fixerPointsAsurveiller(['P','Q','A','B']); // ------------------------------ // tout ce qui suit est inchangé // ------------------------------ initialiser(); sautePos((coordX('A')),(coordY('A'))); fixeCap(vers((coordX('Q')),(coordY('Q')))); couleurRemplissage(0,255,0,0.2); couleurCrayon(0,255,0); fusee(); sautePos((coordX('B')),(coordY('B'))); fixeCap(vers((coordX('P')),(coordY('P')))); droite(90); couleurRemplissage(255,0,0,0.2); couleurCrayon(255,0,0); fusee(); } function fusee() { debutRemplir(); droite(180); for (var count = 0; count < 3; count++) { avance(1); gauche(90); } droite(60); for (var count2 = 0; count2 < 2; count2++) { avance(1); gauche(120); } finRemplir(); }