De Scratch Wiki en français
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)
.
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).
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.
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