Tutoriel : Créer un exerciseur avec GeoGebra



Utiliser un script pour valider une construction géométrique

L'utilisation de conditions d'affichage comme expliquée dans les pages précédentes fonctionne bien. Mais si l'on souhaite que la condition d’affichage soit la réussite à une construction géométrique, c'est un peu plus compliqué. Dans ce cas il est nécessaire d’utiliser un script (JavaScript).

Mais commençons par le début. Il faut tout d’abord construire la figure que les élèves vont devoir tracer. Par exemple, un triangle équilatéral de côté 3 cm. Il faut renommer « cible1 » cet objet.

 

 

Nous aurons également besoin d'un nombre nommé "test1". Le script le mettra à 1 lorsque la construction sera réussie.

 

Le message qui apparaîtra lorsque la construction sera réussie ("bravo" dans mon exemple) doit avoir un affichage conditionné par "test1==1" :


Il faut ensuite cacher  tous les éléments de la construction (ne pas les effacer mais décocher "Afficher l’objet").

Il faut également mettre à 0 le nombre "test1" (pour cela taper "test1=0" dans la barre de saisie).

 

 

 

 

 

Il faut ensuite aller dans les propriétés de n'importe quel objet et aller dans l'onglet "Script" puis dans l'onglet "JavaScript global" et copier et coller le script ci-dessous :


function ggbOnInit() {    

ggbApplet.debug("ggbOnInit");

ggbApplet.registerAddListener("NouvObj");

}

 

function NouvObj (obj) {

type=ggbApplet.getObjectType(obj);{

test1 = ggbApplet.getValue("test1");

 

cmd1="SetValue[test1,"+obj+"== cible1]";

 

if (test1 == 0) {ggbApplet.evalCommand(cmd1);};

 

ggbApplet.refreshViews();

}

}

 

Ce script compare tout nouvel objet créé à l'objet qui est nommé "cible1".

Lorsqu'il y a "correspondance" entre les deux objet alors le nombre "test1" devient égal à 1.

 

Attention : le script se lance à l'ouverture du fichier. Pour que le script soit actif, il faut fermer et rouvrir le fichier.

 

Pour en savoir plus sur ce genre de script, consulter la page dédiée du Wiki de GeoGebra.

 

Ce script n'est pas de moi : une première version en a été écrite par Mickael Borcherds (@mike_geogebra sur  Twitter) en 2009.


 

 

Voici le résultat.

 

Il ne faut pas oublier, avant de sauvegarder le fichier, de :

  • fermer la fenêtre algèbre ;
  • mettre à 0 le nombre "test1" ;
  • personnaliser la barre d'outil si on souhaite que les élèves n'utilisent que certains outils.

 

 


Il est tout à fait possible d'avoir plusieurs cibles dans un exerciseur. Il suffit de dupliquer 3 lignes du script comme ci-contre.

 

Il ne faut pas oublier de créer les nombre "test2", "test3",...

 

Un exemple avec 2 cibles :

function ggbOnInit() {    

ggbApplet.debug("ggbOnInit");

ggbApplet.registerAddListener("NouvObj");

}

 

function NouvObj (obj) {

type=ggbApplet.getObjectType(obj);{

test1 = ggbApplet.getValue("test1");

test2 = ggbApplet.getValue("test2");

test3 = ggbApplet.getValue("test3");

 

cmd1="SetValue[test1,"+obj+"== cible1]";

cmd2="SetValue[test2 ,"+obj+"== cible2]";

cmd3="SetValue[test3 ,"+obj+"== cible3]";

 

if (test1 == 0) {ggbApplet.evalCommand(cmd1);};

if (test2 == 0) {ggbApplet.evalCommand(cmd2);};

if (test3 == 0) {ggbApplet.evalCommand(cmd3);};

 

ggbApplet.refreshViews();

}

}