De Scratch Wiki en français


Créer un quiz


Qu'est-ce qu'un quiz ?

Un «quiz» est un questionnaire permettant de tester des connaissances sur un sujet en répondant à des questions. Le mot «quiz» est issu du vocabulaire familier des États-Unis, il signifie «examen», c'est un équivalent en français.

Comment en faire un ?

Il est possible d'en créer aussi pour un Projet Scratch. Voici a la suite un tutoriel expliquant comment créer un quiz.

Premiers pas

Commençons d'abord par le script de base. Le projet pose une question avec le bloc demander [] et attendre et vérifie ensuite la réponse qui est correcte ou fausse.

Quand le drapeau vert pressé  //Ceci est le début de notre script.
demander [Quelle est la première lettre de l'alphabet ?] et attendre //Le projet pose une question
si <(réponse) = [a]> alors //Soit la réponse est correcte
dire [Gagné] pendant (2) secondes //Le projet affiche le message «Gagné»
sinon
dire [perdu] pendant (2) secondes //Soit la réponse est fausse et le projet affiche le message «Perdu»
fin

Ajouter un score

Nous voulons compter le nombre de bonnes réponses qu'à donné l'utilisateur, un compteur n'est pas très compliqué car à faire. Nous avons juste besoin d'une variable. Dans la liste des blocs, cliquons maintenant sur «Créer une variable», appelons là «Score» et mettons là à zéro au début du quiz. Ensuite à chaque bonne réponse on augmente sa valeur de 1.

Quand le drapeau vert pressé
mettre [Score v] à [0] //Au début du quiz il y a zéro bonnes réponses
demander [Quelle est la première lettre de l'alphabet ?] et attendre
si <(réponse) = [a]> alors
dire [Gagné] pendant (2) secondes
ajouter (1) à [Score v]::variables //À chaque bonne réponse on augmente le nombre de 1
sinon
dire [perdu] pendant (2) secondes
fin

Allonger le quiz

Pour ajouter une question, rien de plus simple. Il faut faire un clic droit sur le bloc de la question et choisir l'option nommée «Dupliquer». Le projet va alors recopier le script depuis ce bloc jusqu'à la fin, il ne reste plus qu'à l'attacher à la suite du script. Il ne faut pas oublier de changer la question et la réponse. Il est également possible de répéter ceci pour autant de questions que vous le souhaitez, ce qui donne :

Quand le drapeau vert pressé
mettre [Score v] à [0]
demander [Quelle est la première lettre de l'alphabet ?] et attendre
si <(réponse) = [a]> alors
dire [Gagné] pendant (2) secondes
ajouter (1) à [Score v]::variables
sinon
dire [perdu] pendant (2) secondes
fin
demander [Quelle est la deuxième lettre de l'alphabet ?] et attendre
si <(réponse) = [b]> alors
dire [Gagné] pendant (2) secondes
ajouter (1) à [Score v]::variables
sinon
dire [perdu] pendant (2) secondes
fin
demander [Quelle est la troisième lettre de l'alphabet ?] et attendre
si <(réponse) = [c]> alors
dire [Gagné] pendant (2) secondes
ajouter (1) à [Score v]::variables
sinon
dire [perdu] pendant (2) secondes
fin
...::grey

Il est ainsi possible de voir que, si il y a alors beaucoup de questions, il va falloir faire un script très long. Si nous voulons apprendre à faire un script plus «dynamique» et synthétique pour l'ensemble des questions, le paragraphe prochain va expliquer une façon de le faire.

Approfondir

Pour poser nos questions d'une façon plus «dynamique», il faut créer une deuxième variable que nous allons nommer (Compteur) et deux listes la première pour les (Questions ::list) et la deuxième pour (Réponses ::list).

Liste2.png

Pour commencer, il faut remplir les deux listes avec les questions et les réponses. Il est possible de le faire en mode éditeur, directement en faisant apparaitre la liste à l'écran et en cliquant sur le petit «+» en bas à gauche avant le mot «longueur», ou encore sinon en utilisant le bloc ajouter [] à [liste v] dans la zone des scripts (il faut remplir la partie blanche et après cliquer sur la partie orange puis recommencer autant de fois qu'il y a de questions/réponses).

Attention
 Attention :
Il faut veiller à ce que les numéros des questions puissent correspondre à ceux des réponses dans leurs listes respectives.

Pour éviter un script très long, nous allons utiliser le principe de la «boucle», c'est à dire un script plus petit que le projet va répéter plusieurs fois. C'est faisable avec le bloc répéter () fois.

Nous allons dire au script de se répéter autant de fois qu'il y a de questions, ainsi si par la suite vous en ajoutez ou en supprimez cela fonctionnera toujours. Nous avons besoin du bloc longueur de [Questions v] qui donne le nombre d'éléments d'une liste.

Enfin à chaque boucle le script doit changer de question dans la liste nommée (Questions ::list). Comme celles-ci sont numérotées dans la liste, nous allons utiliser la variable (Compteur) que nous allons placer dans le bloc élément () de [Questions v] qui permet de sélectionner un élément de la liste d'après son numéro. Ainsi quand nous augmenterons la variable de 1, le script passera à la question au numéro suivant dans la liste.


Voilà donc notre script :

Quand le drapeau vert pressé
mettre [Score v] à [0]
mettre [compteur v] à [1] //On commence par la question numéro 1 dans la liste
répéter (longueur de [Questions v]) fois //On dit au script de se répéter autant de fois qu'il y a de questions
demander (élément(compteur) de [Questions v]) et attendre //Le script pose la question de la liste dont le numéro est égal à la valeur de la variable Compteur
si <(réponse) = (élément(compteur) de [Réponses v])> alors //Le script vérifie si la réponse correspond à celle de la liste dont le numéro est égal à la valeur de la variable Compteur
dire [Gagné] pendant (2) secondes
ajouter (1) à [Score v]::variables
sinon
dire [perdu] pendant (2) secondes
fin
ajouter (1) à [Compteur v]::variables //On augmente la variable compteur pour passer à la question suivante lors de la prochaine boucle du script
fin

Chronomètre

Un quiz c'est bien. Mais avec un chronomètre, c'est mieux.

LeSaviezVous
 LeSaviezVous :
Les projets Scratch sont équipés d'un chronomètre qui se met en route automatiquement lorsque le drapeau vert est pressé !

Deux choses importantes à savoir avec le chronomètre :

  • Vous pouvez connaître la valeur du chronomètre en secondes à tout moment avec le bloc chronomètre.
  • Il est impossible de l'arrêter à n'importe quel moment, impossible de l'arrêter quand on le veut.

Pour connaître le temps mis à faire le questionnaire, il faut à la fin de celui-ci mettre la valeur du chronomètre dans une ou plusieurs variables. Par exemple :

Quand le drapeau vert pressé
mettre [Score v] à [0]
mettre [compteur v] à [1]
répéter (longueur de [Questions v]) fois
demander (élément(compteur) de [Questions v]) et attendre
si <(réponse) = (élément(compteur) de [Réponses v])> alors
dire [Gagné] pendant (2) secondes
ajouter (1) à [Score v]::variables
sinon
dire [perdu] pendant (2) secondes
fin
ajouter (1) à [Compteur v]::variables
fin
mettre [minutes v] à ([plancher v] de ((chronomètre) / (60))) //Cette formule donne le nombre de minutes du chronomètre
mettre [secondes v] à ((chronomètre) modulo (60)) //Cette formule donne le nombre de secondes du chronomètre
dire (regrouper [Bravo, ton score est de :] et (Score)) pendant (3) secondes //On donne le score
dire (regrouper(regrouper(regrouper(regrouper [en ] et (minutes)) et [ minute(s) et ]) et (secondes)) et [ secondes.]) //On donne le temps

Et voilà, tout a été normalement expliqué, ce tutoriel est désormais fini !

Le projet


Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :