Projet

Général

Profil

Lancement sélectif d'exercices

La demande de fonctionnalité #972 postée par Jonathan Tessé nous conduit à développer un module nommé abuledu-alacarte, dont le but est de lancer un logiciel du Terrier, et pourquoi pas n'importe quel logiciel d'AbulÉdu en spécifiant un nom d'exercice, éventuellement un niveau ou un paramètre particulier (ex : nombre dans les tables d'addition).

Pour être pouvoir être lancé depuis abuledu-alacarte, les logiciels devront comprendre (c'est pour les développeurs du Terrier et de RyXéo que je dis ça...) un fichier nommé "alacarte.conf", dont le paquet fera une copie dans abuledu-alacarte renommée "nomDuLogiciel.conf".

Le fichier alacarte.conf

Ce fichier devra se trouver dans le répertoire "conf" de l'application et avoir une structure prédéfinie dont voici un exemple :

[General] 
executable=leterrier-calcul-mental
niveaux="niveau1;niveau2;niveau3;Personnel" 

[Exercices] 
exercice1\nom=addition 
exercice1\intitule=Addition 
exercice1\liste=
exercice2\nom=soustraction 
exercice2\intitule=Soustraction 
exercice2\liste=
exercice3\nom=multiplication 
exercice3\intitule=Multiplication 
exercice3\liste=
exercice4\nom=approcheA 
exercice4\intitule=Ordre de grandeur sur des sommes 
exercice4\liste=
exercice5\nom=approcheS 
exercice5\intitule=Ordre de grandeur sur des différences 
exercice5\liste=
exercice6\nom=approcheM 
exercice6\intitule=Ordre de grandeur sur des produits 
exercice6\liste=
exercice7\nom=complementA 
exercice7\intitule=Compléments additifs à 
exercice7\liste="10;20;100" 
exercice8\nom=complementM 
exercice8\intitule=Multiples de 
exercice8\liste="5;10;15;20;25;50" 
exercice9\nom=tableM 
exercice9\intitule=Table de multiplication par 
exercice9\liste="2;3;4;5;6;7;8;9" 
exercice10\nom=tableA 
exercice10\intitule=Table d'addition de
exercice10\liste="2;3;4;5;6;7;8;9" 

Les noms d'exercices

Le nom est celui du processus au lancement de l'exercice, l' intitulé est le nom qui apparaîtra dans la comboBox d'abuledu-alacarte et en titre de la fenêtre.
Le nom ne doit comporter ni accent, ni espace, ni... , l' intitulé doit être "convivial" .
L' intitulé sera dans le futur traduisible, le nom jamais.

Interface d'appel commune à tous les logiciels du terrier:

Cette interface n'est pas encore figée, elle doit être réfléchie pour couvrir tous les logiciels du terrier. Proposition d'utiliser les paramètres suivants:

  • exercice
  • niveau
  • nombre
executable --niveau=x --exercice=y --nombre=z

Les paramètres de la ligne de commande sont récupérés parce qu'ils sont les paramètres de la fonction main, où int argc est le nombre de paramètres et char* argv[] un tableau de chaines de caractère (char* ± string)
Exemple :

    int main(int argc, char *argv[])
    {
        QString exo;
        QString nivo="";
        int nombre=0;
        //Je teste si l'appel a des arguments, le premier étant forcément le nom de l'exercice
        if (argc>1) {
            exo= argv[1];
            exo.remove("--exercice=", Qt::CaseInsensitive);
            exo.toLower();}
        qDebug()<<"exo : "<<exo;

        //Je teste si l'appel a d'autres arguments je récupère leur valeur
        QString deuze;
        QString troize;
        if (argc>2){
            deuze= argv[2];
            troize=argv[3];
            deuze.remove("--niveau=", Qt::CaseInsensitive);
            deuze.prepend("Niveau");
            nivo=deuze;
            qDebug()<<"nivo : "<<nivo;
            troize.remove("--nombre=", Qt::CaseInsensitive);
            nombre=troize.toInt();
            qDebug()<<"nombre : "<<nombre;
        }

Après il reste à passer les paramètres nivo et nombre au constructeur d'exercice...
Attention au copier/coller : le code donné en exemple est tiré de leterrier-calcul-mental mais en simplifiant. J'espère qu'en simplifiant je n'ai pas oublié quelque chose d'important...

Les logiciels en Tcl/Tk

AbulÉdu-Alacarte peut aussi lancer les anciens logiciels du Terrier en Tcl/Tk... moyennant une ruse de sioux !!
La commande qui permet de les lancer contient un nombre qui n'a de sens qu'en tant qu'énumération, par contre le nom de l'activité (qui est aussi celui affiché dans la fenêtre) contient un autre nombre qui a un sens de progression. Un exemple rendra certainement cette explication plus claire :
Dans leterrier-anouslesnombre, l'exercice calapa présente 3 sous exercices : tri, marquage et énumération;
marquage a des niveaux 0 (rien, en fait), 1,2,3,4 et 5
Mais le nombre contenu dans la commande qui permet de lancer l'activité en niveau 3 (et qui s'appelle Marquage3) est 10 (les 6 premiers de calapa c'est pour tri , puis on a les niveaux 0,1 et 2 de marquage ).
L'astuce consiste dans la liste à associer ces deux nombres séparés par ":", c'est à dire écrire "nombreDansProgressionMarquage:nombreDansCalapa", soit "3:10"

Au final anouslesnombres.conf ressemblera à ça :

[General]
executable=anous
niveaux=

[Exercices]
exercice1\nom=calapa
exercice1\intitule=Calapa
exercice1\liste=
exercice1\sousExercice1\nom=
exercice1\sousExercice1\intitule=Tri
exercice1\sousExercice1\liste="0:0;1:1;2:2;3:3;4:4;5:5;6:6" 
exercice1\sousExercice2\nom=
exercice1\sousExercice2\intitule=Marquage
exercice1\sousExercice2\liste="0:7;1:8;2:9;3:10;4:11;5:12" 
exercice1\sousExercice3\nom=
exercice1\sousExercice3\intitule=Enumeration
exercice1\sousExercice3\liste="0:13;1:14;2:15;3:16;4:17;5:18" 

exercice2\nom=barque
exercice2\intitule=Barques
exercice2\liste=
exercice2\sousExercice1\nom=0
exercice2\sousExercice1\intitule=Visible
exercice2\sousExercice1\liste="1:0;2:1;3:2;4:3;5:4" 
exercice2\sousExercice2\nom=7
exercice2\sousExercice2\intitule=Caches
exercice2\sousExercice2\liste="1:5;2:6;3:7;4:8;5:9" 
exercice2\sousExercice3\nom=13
exercice2\sousExercice3\intitule=Addition
exercice2\sousExercice3\liste="1:10;2:11;3:12;4:13;5:14;6:15" 

etc...

CaptureAbulEduAlacarte.png (21,1 ko) Philippe, 02/02/2011 09:06

Redmine Appliance - Powered by TurnKey Linux