Donnez vie à vos documents numériques !
 

Répondre à : Affichage aléatoire

abracadabraPDF Forums PDF – Général Affichage aléatoire Répondre à : Affichage aléatoire

#73731
bebarth
Maître des clés

bonjour,

Pour la liste de réponse, est il possible d’éliminer les doublons dans la liste de réponse et de classer les éléments de la liste par ordre alphanumérique ?

J’avais écris une fonction il y a quelques années… Je l’ai donc adaptée pour ton script !
Dans l’exemple j’ai ajouté plusieurs doublons pour montrer ce que ça donne.

Pour les réponses type Champ Texte, comme la vérification est en action de frappe, si la réponse saisie contient plusieurs caractères, cela va afficher le message d’erreur dès la frappe du 1er caractère.

Vu que pour le type de champ Liste le script est en script de touches personnalisé, il n’est exécuté que lorsque l’évènement vient de ce champ liste. Si On utilise un champ Texte pour indiquer la réponse, il faut d’abord vérifier que l’évènement vient de ce champ (cf. le script de calcul “Rep”).

Dernier souci, j’ai remarqué que lorsque je génère les questions, cela fonctionne seulement si je sauvegarde, ferme puis ouvre le document.

Ça c’est normal vu que l’initialisation du champ se fait avec le bouton démarrer par “if (!reponses.length)” et qu’en script de document on a “var reponses=[];”
Avec ton bouton “generateur” on peut maintenant réinitialiser la liste.

Pour le bonton “vérifier” j’ai retire le message “Erreur…” car il est déjà affiché directement si la réponse n’est pas correcte que ce soit via une liste ou un champ texte.

Voici les scripts :

// Script de document
var reponses=[];
var nbQuestions=0;
var nbReponses=0;
this.getField(“Reponse”).setItems([“-“]);
this.getField(“Question”).value=””;
this.getField(“Score”).value=””;
this.getField(“Score”).value=””;

// Script de calcul “Démarrer”
if (!reponses.length) {
var lesReponses=this.getField(“entreesListe”).value.split(“\r”);
function triSansDoublons(uneTable) {
return uneTable.sort().filter(function(valeur, indice, cetteTable) {
return !indice || valeur!=cetteTable[indice-1];
});
}
var lesReponses=triSansDoublons(lesReponses);
this.getField(“entreesListe”).value=lesReponses.toString().replace(/[,]/g,”\r”);
var nb=lesReponses.length;
var reponses=[];
for (var i=0; i<nb; i++) {
lesReponses=lesReponses.split(“\/”);
reponses.push([lesReponses[1],0]);
}
}
var moyenne=0;
for (var i=1; i<nb; i++) moyenne+=reponses[1];
moyenne/=(reponses.length-1);
var aleatoire=Math.floor(Math.random()*nb);
var laQuestion=”-“;
while (reponses[aleatoire][1]>moyenne || laQuestion==”-“) {
var aleatoire=Math.floor(Math.random()*nb);
var laQuestion=lesReponses[aleatoire][0];
var laReponse=lesReponses[aleatoire][1];
}
this.getField(“Reponse”).setItems(reponses);
this.getField(“Question”).value=laQuestion;
this.getField(“Score”).value=””;

// Script de touches personnalisé “Reponse”
if (!event.willCommit) {
nbQuestions++;
if (event.change!=laReponse) app.alert(“Erreur !!!\rLa bonne réponse est : “+laReponse,3);
else {
reponses[aleatoire][1]=Number(event.changeEx)+1;
this.getField(“Reponse”).setItems(reponses);
nbReponses++;
}
}

// Script de calcul “Rep”
if (event.source && event.source.name==event.target.name) {
nbQuestions++;
if (event.value!=laReponse) app.alert(“Erreur !!!\rLa bonne réponse est : “+laReponse,3);
else {
reponses[aleatoire][1]=reponses[aleatoire][1]+1;
nbReponses++;
}
}

// Script de calcul “vérifier”
if (reponses.length) this.getField(“Score”).value=” • Nombre de bonnes réponses : ” +nbReponses+”\r”+” • Nombre d’erreurs : ” +(nbQuestions-nbReponses)+”\r”+” • Nombre de questions : ” +nbQuestions+”\r”+” • Taux de réussite : ” +(Math.round((100*nbReponses/nbQuestions) * 100) / 100).toString().replace(/[.]/,”,”)+” %”;

// Script de calcul “geberateur”
var lesReponses=this.getField(“entreesListe”).value.split(“\r”);
function triSansDoublons(uneTable) {
return uneTable.sort().filter(function(valeur, indice, cetteTable) {
return !indice || valeur!=cetteTable[indice-1];
});
}
var lesReponses=triSansDoublons(lesReponses);
this.getField(“entreesListe”).value=lesReponses.toString().replace(/[,]/g,”\r”);
var nb=lesReponses.length;
var reponses=[];
for (var i=0; i<nb; i++) {
lesReponses=lesReponses.split(“\/”);
reponses.push([lesReponses[1],0]);
}

@+
😎

Attachments:
You must be logged in to view attached files.