Remaniement des QCM pour les tutoriels de RPG Maker XP !

Ce topic permet d'afficher clairement les news qui sont sur le site.
Règles du forum
Ce topic permet à tous le monde de créer ses news. Celles-ci seront directement afficher sur le site lui même. C'est pourquoi chaque news devra être validée par un modérateur ou par l'administrateur avant que celle-ci n'apparaisse. Ne vous étonnez donc pas si votre news n'est pas visible immédiatement (elle le sera dans les minutes qui suivent !).

ATTENTION: Vous ne pouvez pas poster de sujet simple. Il vous faudra obligatoirement cocher la case "Annonce" (et non pas annonce globale) qui se trouve sous votre message pour que votre news soient acceptées !

Remaniement des QCM pour les tutoriels de RPG Maker XP !

Message par Martial » 06 Sep 2010, 19:53

Bonjour à toutes et à tous !:)

Alors que certains ont déjà très certainement repris les cours, j'ai décidé récemment de retravailler sur les QCM dans la section des tutoriels de RPG Maker XP.

Il faut savoir qu'il s'agit là de mon premier script PHP codé de A à Z par mes soins (avec le livre d'or, mais là, j'ai un peu été aidé par le site du zéro). Or, comme tout premier script, il est bon de le remettre à neuf, et c'est ce que j'ai fait.

À l'époque, à chaque fois que je faisais un nouveau QCM, je devais créer 2 fichiers qui contenaient toutes les infos relatives au QCM. L'un était pour l'affichage des questions, l'autre pour la correction. Voici ce que ça donnait, par exemple, pour le QCM sur les interrupteurs (le tout premier):

Code pour l'affichage des questions du QCM sur les interrupteurs:
Code : Tout sélectionner
<?php

/************************ Début des déclarations de variables *********************/
 
$page_correction 
= "/rpg_maker_xp-tutoriels-qcm_correction.html?qcm=interrupteurs"; // Penser au problème d'adresse ici !

$nb_question = 6;

/************************************* Questions **********************************/

$question1 = "Quel est le type d'interrupteur qui permet d'agir sur un évènement à distance ?";

$question2 = "Un interrupteur local permet:";

$question3 = "Pour créer un interrupteur local, il faut:";

$question4 = "La commande d'évènement \"Attendre...\" permet:";

$question5 = "460 frames dans RPG Maker est la même chose que:";

$question6 = "Si je veux utiliser la commande d'évènement \"Attendre...\" pendant 1 minute, je dois:";

/************************************** Réponses ***********************************/

$reponse1_1 = "Un interrupteur local";
$reponse1_2 = "Un interrupteur distanciale";
$reponse1_3= "Un interrupteur global";

$reponse2_1 = "De passer d'une page à une autre au sein même de l'évènement en plein jeu.";
$reponse2_2 = "De changer l'apparence d'un évènement.";
$reponse2_3= "D'agir sur un évènement à distance.";

$reponse3_1 = "Faire un double-clic droit.";
$reponse3_2 = "Rien, ils sont déjà tous créés par défaut.";
$reponse3_3= "Aller dans la base de donnée 
"
;

$reponse4_1 = "De faire cuire des p&acirc;tes.";
$reponse4_2 = "D'empêcher que les autres commandes d'évènement s'effectuent pendant un temps déterminé.";
$reponse4_3= "Que les autres personnages attendent le Héros.";

$reponse5_1 = "23 secondes";
$reponse5_2 = "30 secondes";
$reponse5_3= "19 secondes";

$reponse6_1 = "Créer 2 commandes d'évènement \"Attendre...\" qui se suivent.";
$reponse6_2 = "Utiliser les interrupteurs.";
$reponse6_3= "Je ne peux pas, la limite de cette commande est de 999 frames.";


/************************** Fin des déclarations de variables ************************/
  


Code pour la correction du QCM sur les interrupteurs:
Code : Tout sélectionner

<?php

// /!\ A ne pas supprimer !!! /!\
echo '<!-- Inclusion des réponses du QCM -->';

//Définition du titre du QCM
$titre_qcm = 'Les interrupteurs'; 

// La page vers laquelle l'utilisateur retournera après avoir obtenu son résultat
$page_retour = 'rpg_maker_xp-tutoriels-interrupteurs.html'; 
  
//////////////// Déclaration de toutes les variables permettant de savoir si une réponse est bonnne//////////////////

$nb_question = 6; // A changer en fonction du nombre de questions dans le Q.C.M
  
//Les numéros des bonnes r&ponses aux questions

$num_reponse1 = 3;
$num_reponse2 = 1;
$num_reponse3 = 2;
$num_reponse4 = 2;
$num_reponse5 = 1;
$num_reponse6 = 1;

//Les questions posées dans le QCM

$question1 = "Quel est le type d'interrupteur qui permet d'agir sur un évènement à distance ?";
$question2 = "Un interrupteur local permet:";
$question3 = "Pour créer un interrupteur local, il faut:";
$question4 = "La commande d'évènement \"Attendre...\" permet:";
$question5 = "460 frames dans RPG Maker est la même chose que:";
$question6 = "Si je veux utiliser la commande d'évènement \"Attendre...\" pendant 1 minute, je dois:";

//Les réponses en toute lettre aux questions du QCM

$reponse1 = "Un interrupteur global";
$reponse2 = "De passer d'une page à une autre au sein même de l'évènement en plein jeu.";
$reponse3 = "Rien, ils sont déjà tous créés par défaut.";
$reponse4 = "D'empêcher que les autres commandes d'évènement s'effectuent pendant un temps déterminé.";
$reponse5 = "23 secondes";
$reponse6 = "Créer 2 commandes d'évènement \"Attendre...\" qui se suivent.";

// Toutes les appréciations en fonction du résultat de chaque question du QCM

//Appréciations positives, si le membre à répondu bon à la question

$rmq_bien1 = 

"En effet, seuls <span class=\"strong\">les interrupteurs globaux</span> permettent d'agir sur 
des évènements autres que celui o&ugrave; il a été activé !"
; 

$rmq_bien2 
=

"Les interrupteurs locaux sont effectivement utilisés pour passer, au sein du même évènement, d'une page à une autre en plein jeu !"; 

$rmq_bien3 
= "Rien à dire, c'était une question facile !";

$rmq_bien4 = 

"C'est bien, tu as compris une notion importante ! J'espère que tu sauras tout aussi bien te servir de cette commande !";  

$rmq_bien5 
= 

"Sachant que 20 frames revient à 1 seconde (vu plus haut), il suffisait de faire 460/20 = 23 !";

$rmq_bien6 = "Bien joué, c'était pas forcément évident à trouver car cela demandait un esprit d'initiative.";

//Appréciations négatives, si le membre à rrépondu faux à la question

$rmq_mal1 =

"Je suis dé&ccedil;u, je l'avais pourtant répété suffisament de fois pour que &ccedil;a rentre ! <br />
Essaye de relire le tutoriel, il y quelque chose de gros que tu n'as pas compris."
; 

$rmq_mal2 
= 

"Tu t'es surement trompé parce que j'ai fait référence au changement d'apparence d'un évènement ! Ce à quoi l'interrupteur local nous as servi dans le tutoriel (avec le levier activé ou désactivé). Sache, et c'est très important, qu'un interrupteur local ne sert pas qu'à changer l'apparence d'un évènement, oh non, il sert à bien plus de chose que &ccedil;a ! Mais tu auras les temps de t'en rendre compte par le suite ! ;-)";

$rmq_mal3 =

"Je ne comprends pas ta faute, les réponses fausses n'avaient rien à voir avec le tutoriel...";

$rmq_mal4 =

"Commande d'évènement très utilsée, &quot;Attendre&quot; permet de stopper les commandes d'évènement suivantes pendant une duré que vous choississez.";

$rmq_mal5 = 

"C'était pourtant tout bête, sachant que 20 frames revient à 1 seconde (vu plus haut), il vous suffisait de faire 460/20 = 23 !";

$rmq_mal6 = 

"Ce n'était pas forcément évident car je n'avais strictement rien mentionné à propos de &ccedil;a ! En tout cas, maintenant vous savez ;-)";

//Variable de commentaire, en fonction de la note obtenue ($note_X_moins correspond à "Si la note est inférieur à X")

$note_0 = "Hmm, il y a 2 hypothéses: soit tu as répondu au pif, soit tu n'as pas lu le tutoriel...";

$note_5_moins = 

"Tu fais beaucoup trop d'erreurs. Essaye de relire le Q.C.M dans le calme est retente le Q.C.M en t'aidant du cours que tu as lu.";
        
$note_7_moins 
=

"Ce n'est vraiment pas bon. Essaye de relire le tutoriel en entier, et en prenant ton temps.Le mieux serait de faire des tests sur le logiciel en même temps que tu lis le cours. Mais c'est déjà ce que tu aurais dû faire";

$note_10_moins = 
"Un peu plus et tu avais la moyenne ! C'est encore trop peu... Il faut que tu relises attentivement le tutoriel.";

$note_10 = 
"Tu as pile poil la moyenne, c'est une peu juste... Je te conseille de relire le tutoriel, au moins pour les choses que tu n'as pas comprise.";

$note_12_moins =
"C'est une assez bonne note, mais ne te réjouis pas, si tu avais réellement bien compris le tutoriel, tu aurais fait moins de fautes. Je t'encourage à continuer tes efforts !";

$note_16_moins = 
"Mais c'est très bien tout &ccedil;a ! Encore  quelques petites erreurs, mais tu as compris l'ensemble du cours, c'est bien !";

$note_20_moins = 
"Tu n'es vraiment pas loin de la note ultime ! Encore un petit effort. Bravo !";

$note_20 =
"Que dire de plus que \"C'est parfait !\" ? Tu peux passer au prochain tutoriel sans problème, tu as tout compris sur celui là ! Ah, si tout le monde pouvait être aussi fort que toi ! :)";
    
//Toutes les réponses possibles du QCM  
  
$reponse1_1 
= "Un interrupteur local";
$reponse1_2 = "Un interrupteur distanciale";
$reponse1_3 = "Un interrupteur global";

$reponse2_1 = "De passer d'une page à une autre au sein même de l'évènement en plein jeu.";
$reponse2_2 = "De changer l'apparence d'un évènement.";
$reponse2_3 = "D'agir sur un évènement à distance.";

$reponse3_1 = "Faire un double-clic droit.";
$reponse3_2 = "Rien, ils sont déjà tous créés par défaut.";
$reponse3_3 = "Aller dans la base de donnée";

$reponse4_1 = "De faire cuire des pâtes.";
$reponse4_2 = "D'empêcher que les autres commandes d'évènement s'effectuent pendant un temps déterminé.";
$reponse4_3 = "Que les autres personnages attendent le Héros.";

$reponse5_1 = "23 secondes";
$reponse5_2 = "30 secondes";
$reponse5_3 = "19 secondes";

$reponse6_1 = "Créer 2 commandes d'évènement \"Attendre...\" qui se suivent.";
$reponse6_2 = "Utiliser les interrupteurs.";
$reponse6_3 = "Je ne peux pas, la limite de cette commande est de 999 frames.";


//////////////////////////////////////// Fin de déclaration des variables ////////////////////////////////////////
?>


Hormis le fait que le code ne soit pas très beau (encodage, doubles guillemets, commentaires parfois peu explicites : "Ne pas supprimer !!!!!" :fixe: lol), on remarque surtout que certaines parties sont identiques pour les 2 codes ! O_o

Bref, il était temps que je refasse tout ça bien proprement ! Et quitte à le refaire, autant l'améliorer, non ? :)

J''ai donc décidé d'utiliser une base de données pour stocker questions et réponses. Cela me permettra d'avoir accès aux questions/réponses où je veux très facilement et ça m'ouvrira également d'autres perspectives comme l'ajout/suppression de QCM (ou questions/réponses), sans compter que je peux aussi faire des statistiques sur les réponses qui ont été choisies le plus de fois. Je comptais, par la suite, faire en sorte que si un membre est connecté au site, son résultat au QCM soit enregistré la première fois. Mais j'ai oublié cette idée rapidement, car il est facile de tricher (il suffit de se déconnecter puis de répondre au pif au QCM pour que les réponses apparaissent => puis reconnexion).

Je ne me sens pas la force de vous pondre un pavé aujourd'hui donc je n'expliquerai pas en détail ce que j'ai fait (sauf si on me le demande), je vous mets juste le lien des QCM, montrez-moi de quoi vous êtes capable :p



Non seulement parce que je trouve qu'une news sans image est moche, mais aussi parce que j'aimerais que vous voyez à quoi ça ressemble, voici 2 images du QCM sur les interrupteurs:

qcm.jpg
QCM sur les interrupteurs - Questions

qcm_correction.jpg
QCM sur les interrupteurs - Correction


Bonne soirée ;)
L'important n'est pas de connaître mais de savoir trouver !
La gentillesse ou la franchise ? Que choisir ?
Vive les otakus !!
Retourner sur le site
Avatar de l’utilisateur
Martial
Administrateur
Administrateur
 
Message(s) : 2520
Inscription : 10 Nov 2006, 23:41
Localisation : Rambouillet
Meilleurs scores: 12

Retour vers News

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)

cron