Comment utiliser efficacement les Type-Ins

+12

Introduction

Sur JetPunk, on trouve ce qui s'appelle des "type-ins". Ils utilisent des expressions régulières pour vérifier la correspondance entre ce que l'utilisateur saisit dans la boîte de texte et des expressions prédéfinies.

Pour un certain nombre de réponses courantes, un type-in automatique sera chargé par défaut. C'est le cas pour les noms de pays, les villes, les régions, et bien plus encore. Si la réponse n'est pas "courante", alors JetPunk suggérera simplement une saisie basée sur les lettres. Par exemple, un "y" à la fin d'un mot aura la saisie "(EE|EY|IE|Y)" suggérée. Nous aurons l'occasion d'y revenir plus tard.

Il convient de préciser que JetPunk n'est pas sensible à la casse, ce qui signifie que "AlpHa" est considéré comme identique à "aLPHa". Ceci est utile car nous n'avons pas à faire la distinction entre les majuscules et les minuscules.

Nota : de nombreux termes en anglais resteront non traduits dans ce blog car ils apparaissent ainsi dans l'éditeur de quiz JetPunk.

Type-Ins de base

Il existe plusieurs façons d'ajouter des type-ins pour les réponses sur JetPunk. Pour chaque réponse, trois modes s'offrent à vous : "Auto", "Custom" ou "Exact".

  • "Auto" utilisera les type-ins automatiques s'ils existent ou un type-in suggéré
  • "Custom" vous permettra d'ajouter vos propres type-ins
  • "Exact" demandera de saisir le mot exact en réponse, sans application de type-ins

Les deux autres modes ne permettant pas de personnalisation de type-ins, seul le mode "Custom" fera l'objet d'une présentation détaillée. En sélectionnant "Custom", vous verrez apparaître 4 options sous la zone de texte :

  • + Starts - c'est l'option par défaut, qui vous permet de choisir la chaîne de caractères par laquelle devra commencer la réponse de l'utilisateur. Exemple : choisir "CHINE" signifie que l'utilisateur devra commencer sa réponse avec le texte "chine", afin qu'elle soit acceptée.
  • + Ends - option similaire à la précédente, à la différence qu'elle s'applique sur la fin du texte saisi. Exemple : choisir "EVEREST" signifie que la saisie de l'utilisateur devra se terminer par ce texte ; ainsi "everest" ou "lemonteverest" seront tous deux acceptés.
  • + Contains - cette option vous permet d'accepter les saisies contenant une chaine de caractères spécifiques. Un exemple classique est "CONGO", qui acceptera toute réponse contenant le mot "congo".
  • + Regex - cette option permet une personnalisation complète des type-ins, et fera l'objet d'une explication détaillée ci-après.

Il est possible d'avoir jusqu'à 10 champs de type-ins "custom".

Globalement, débuter avec les 3 premières options de type-ins est assez facile. Mais paramétrer des type-ins correspondant à de multiples suppositions est bien plus utile. Par exemple, il ne serait pas possible d'accepter les multiples orthographes "approximatives" de Kirghizistan en utilisant les 3 premières options ci-dessus. Pour se faire, nous avons besoin d'outils plus puissants.

Les RegEx pour les Type-Ins

RegEx est l'abréviation de l'anglais "Regular Expression" (Expression Régulière), qui correspond à une chaîne de caractères, qui décrit, selon une syntaxe précise, un ensemble de chaînes de caractères possibles. Quand on écrit une RegEx sur JetPunk, le programme va chercher toutes les correspondances possibles entre la RegEx et la réponse saisie par le joueur.

Nous utiliserons une version simplifiée de RegEx, car de nombreuses fonctionnalités ne sont pas utiles ou pas disponibles sur JetPunk. Par exemple, il existe des caractères utilisés pour faire correspondre des motifs sur certains symboles, mais cela est inutile car la boîte de réponse sur JetPunk n'accepte que les entrées alphanumériques (lettres et chiffres).

Les 4 différents "opérateurs" qui vont nous être utiles sont les suivants :

  1. Classes de caractères
  2. Ancres
  3. Quantificateurs et Alternatives
  4. Groupements
Nous allons voir ce que permettent chacun de ces opérateurs, avec des exemples, puis nous verrons pour terminer comment les combiner entre eux.

1. Classes de caractères

Les classes de caractères définissent un ensemble de caractères à comparer à la saisie. Elles sont définies à l'aide de crochets [ ]. Utilisées seules, elles valideront la correspondance entre une seule lettre et une de celles entre crochets (appelée les classes).

Exemples :

  • [ABC] - seul, cet opérateur valide toute saisie contenant A, B ou C
  • F[OEU]D - valide uniquement les saisies FOD, FED ou FUD, puisque [OEU] ne valide qu'un seul caractère
  • [A-G] - l'ajout d'un tiret permet de valider toute lettre comprise en A et G
  • [0-7] - fonctionne aussi avec les nombres
  • [AE][FG] - les classes de caractères peuvent être accolées, ce qui validera les saisies AF, AG, EF et EG.
2. Ancres

Les ancres définissent la correspondance doit être vérifiée. 3 ancres sont utilisées sur JetPunk :

  • ^ ce symbole, au début d'un type-in signifie que nous voulons que la réponse "commence par" ce que nous souhaitons
  • $ ce symbole, placé à la fin d'un type-in signifie que nous voulons que la réponse "finisse par" ce que nous souhaitons
  • Bien qu'un peu étrange, la 3ème ancre correspond à l'absence de ^ de $, signifiant que nous voulons que la réponse "contienne" ce que nous souhaitons

Vous remarquerez que ces ancres correspondent aux options JetPunk mentionnées précédemment dans la section "Type-Ins de base". L'inconvénient de l'utilisation de ces 3 options est que vous ne pouvez pas utiliser d'autres RegEx en leur sein, uniquement des chaînes de lettres et des chiffres simples.

Exemples :

  • ^TOMATE - valide toute saisie qui commence par "tomate". C'est le type-in de base, puisqu'il correspond simplement à la réponse
  • ER$ - valide toute saisie se finissant par "er", comme par exemple "manger", "fer" ou même "tintinestunreporter"
  • BO - valide toute saisie contenant "bo", comme par exemple "bouilloire", "mambo" ou même "millemillionsdemillemilliardsdemillesabords"
  • ^C[AOI]L - valide les saisies commençant par "cal" "col" ou "cil"

Cela vous donne une idée de ce qu'il est possible de faire. On comprend facilement que d'utiliser un ^ et un $ dans la même réponse serait plutôt inutile sur JetPunk.

3. Quantificateurs et Alternatives

Voici 3 opérateurs principaux, utiles pour JetPunk :

  • + - ce symbole valide l'emploi d'un caractère une fois ou plus (fonctionne aussi avec les chaînes de caractères et les opérateurs)
  • ? - ce symbole valide l'emploi d'un caractère zéro ou une fois. Comme le +, le ? fonctionne aussi avec les chaînes de caractères et les opérateurs (très utile pour l'emploi des articles ou de caractères optionnels)
  • | - ce symbole est celui de l'alternative. Il agit comme l'opérateur booléen OU, ce qui signifie qu'il valide la saisie avant ou celle après le symbole |. Cet opérateur peut agir sur un caractère seul ou une chaîne.

Exemples :

  • ^POM+E - valide toute saisie qui commence par "PO" suivi d'un ou plusieurs "M" et un "E". Ainsi sont valides : "pome", "pomme" mais aussi "pommmmmmmmme", etc.
  • ^L?AUSTRALIE - c'est le type-in officiel pour ce pays. Comme pour tous les pays, les versions avec ou sans article sont valides. Ici, les saisies "australie" et "laustralie" sont acceptées.
  • ^ILEDEFRANCE|^IDF - utilisation d'une alternative portant sur une chaîne de caractères. Seront validées les saisies commençant par "iledefrance" ou "idf". L'emploi de l'alternative est particulièrement utile lorsque l'on atteint la limite des 10 champs de type-ins.
  • ^ISR[AE]+L - ici c'est l'opérateur [AE] qui est autorisé une fois ou plus. Ainsi, "israel" est accepté mais aussi "isreal" ou encore "israeaeeaaeael". Cette combinaison est pratique lorsque l'on fait face à des mots compliqués à écrire, qui pourraient bloquer les joueurs.

Certaines combinaisons ne sont pas valide, telles que "?+" puisqu'elle n'a pas de sens logiquement parlant. De même, "+?" est une combinaison valide, mais qui agit comme l'opérateur +.

4. Groupements

Enfin, les groupements utilisent des parenthèses ( ) pour regrouper des caractères ou des opérateurs ensemble. Cela signifie que vous pouvez maintenant appliquer tous les outils précédents pour créer n'importe quelle saisie souhaitée.

Exemples :

  • ^EQUAT(EU|UE)R - utilisation d'une alternative pour valider "EU" ou "UE". Ainsi "equateur" ou "equatuer" sont tous deux acceptés
  • ^(LE)?CHILI - type-in officiel du pays. La chaîne "LE" est rendue optionnelle par son groupement suivi d'un ?
  • ^ALEXANDRE(LEGRAND|3|TROIS|III) - groupements d'alternatives permettant de valider les saisies "alexandre le grand", "alexandre 3", "alexandre trois" ou "alexandre III"

D'autres exemples de type-ins en RegEx :

  • ^(SAINTE?|STE?)LUCIE - Très utile pour les abréviations de saints et saintes
  • ^(LE)?L[EI]+[CHT]+ENST[EI]+N - En voilà un que nous avons tous écorché au moins une fois ! L'utilisation du RegEx permet d'accepter les réponses un peu écornées comme "lichtenstein" ou même "leiietchctchenstieein".
  • ^(((LA)?B[IE]+LORUSSIE)|((LE)?BELARUS)) - Celui-ci permet de valider l'un des deux noms du pays accepté en français, avec ou sans article et d'accepter une faute de frappe à Blorussie.
  • ^((MARTIN)?(LUTHER)?KING|MLK) - utilisation d'une alternative entre, d'un côté les groupements facultatifs du prénom et du deuxième nom ainsi que celui du nom de famille, et de l'autre les initiales MLK. Il est courant sur JetPunk que les prénoms de figures historiques ou personnalités soient facultatifs dans la saisie. Cela peut se faire grâce à la combinaison de groupements et du symbole ? ou en cochant la case "Is Name" qui fera l'opération automatiquement.
  • ^(LE)?KIRG[A-Z]+STAN - le fameux Kirghizistan ! Ici, sont validées toutes les saisies commençant par 0 ou 1 fois "LE", puis par KIRG, et (attention les yeux) au moins une fois n'importe quelle lettre de l'alphabet, puis par STAN. Cela signifie que "kirgastan" ou "kirgbonjourjevoudraisunebaguettesilvousplaitstan" sont acceptés en tant que réponse sur JetPunk !
Attention : la combinaison [A-Z]+ doit être utilisée avec parcimonie car elle peut rapidement amener à accepter des réponses non voulues.

Comme vous pouvez le constater, une fois combinés, ces opérateurs peuvent devenir des outils puissants fournissant des type-ins pour les quizmakers et les quiztakers.

A quoi ça sert tout ça ?

Le but des type-ins est de fournir un moyen simple de vérifier des correspondances avec les réponses possibles des utilisateurs. Oui, il est possible de renseigner en type-ins toutes les orthographes possibles que quelqu'un peut entrer comme réponse, mais que se passe-t-il si vous manquez la façon dont quelqu'un écorche un mot ? Et pourquoi faire ça quand on peut simplifier les type-ins avec le RegEx ?

Reprenons un exemple concret. Presque tout le monde écorche, ou a écorché, Kirghizistan d'une manière ou d'une autre (n'est-ce pas ?). Le type-in correspondant a été conçu en revenant à la structure du mot : il doit commencer par KIRG et finir par STAN, avec un enchaînement de lettres entre deux. Ceci permet d'éviter au joueur de bloquer inutilement sur une succession de caractères, alors qu'il connait la réponse dans les grandes lignes.

Enfin, de nombreux utilisateurs apprécient lorsqu'un créateur de quiz fait des efforts pour ajouter des type-ins, car cela en fait un quiz plus accessible et agréable à prendre, en particulier lorsque certaines des réponses proviennent de langues étrangères ou peuvent être simplement complexes dans leur orthographe. En d'autres termes, les type-ins permettent d'ajouter de la souplesse.

Pour aller plus loin

Avant de nous quitter, voici quelques liens qui pourraient vous être utiles si vous souhaitez approfondir vos connaissances sur les RegEx.

  • Une série de quiz concoctés par l'utilisateur Pifeger, sur le thème des RegEx. Une façon ludique d'apprendre et réviser ce langage : Apprendre le REGEX - série de quiz
  • Si vous souhaitez aller plus loin avec le RegEx en dehors de JetPunk, RegExr est un excellent outil pour se familiariser avec la terminologie et les fonctionnalités. Il est également utile pour tester les type-ins les plus compliqués !
  • Enfin, voici un excellent site de mots croisés version RegEx, pour les fans de casse-têtes : Regex Cross­word. (Merci à Phytox pour le lien).
Ce blog est une traduction du blog de Stewart "How to Use Type-Ins Effectively".
+2
Niveau 26
31 mar 2023
Merci pour vos explications intéressantes

Je découvre votre blog je vais essayer de trouver d'autres de vos pages et d'en lire plus car je suis en train de tenter de créer mon premier quizz sur JetPunk mais c'est très compliqué

S'il vous plaît pourriez vous m'expliquer comment on créer un réponse qu'il faut écrire dans une case en particulier!

Un grand merci

+1
Niveau 64
31 mar 2023
De rien, je suis ravi de savoir que mon blog peut être utile 🙂

Je ne suis pas certain de bien comprendre votre demande. Auriez-vous un exemple de quiz existant dans lequel figure ce que vous souhaitez faire ?

Si vous le souhaitez, vous pouvez aussi rejoindre notre communauté francophone sur le Discord correspondant. Une section de ce serveur est dédiée à l'entraide dans la création de quiz. Le lien est accessible sur le blog de baptistegorce "Kezako".

+2
Niveau 23
18 sep 2023
Bonjour,

J’aimerais créer une réponse qui doit comporter plusieurs mots pour être considérée comme juste mais ces mots peuvent être donnés dans n’importe quel ordre. Comment procéder svp? Custom? Merci d’avance.

+1
Niveau 64
19 sep 2023
Bonjour,

Ce sujet est souvent discuté, aussi bien dans la communauté FR qu'anglophone car beaucoup de joueurs souhaitent pouvoir automatiser ce genre de type-ins. Malheureusement il n'existe pas de commande correspondante (du moins pour le moment) et la solution consiste donc à rédiger toutes les possibilités, sous la forme :

Pour 3 mots du type a, b et c : ^(a(bc|cb)|b(ac|ca)|c(ab|ba))

Ainsi, seront acceptées les saisies : abc ; acb ; bac ; bca ; cab ; cba

Cette solution reste viable pour des combinaisons de quelques mots, mais avec un grand nombre de mots à combiner, la rédaction devient complexe et l'utilisation d'un tableur pour générer le code peut être une solution.

En espérant vous avoir aidé un tant soit peu :)