Imaginons que vous demandez à l'utilisateur l'altitude du Mont-Blanc. Vous pouvez créer une réponse de type 'texte' en prévoyant le pattern "4807". Il serait cependant intéressant de donner un feed-back pour les réponses comprises entre 4800 et 4850. Si vous définissez le pattern "48??", Authorware acceptera 4801 et 4866, mais aussi 4699 ou 46mm! Le seul véritable moyen d'analyser ces réponses, c'est de faire des comparaisons arithmétiques (=, <, >,...). Malheureusement, celles-ci ne sont pas prises en charge par le processus d'analyse de réponse-texte. C'est pourquoi nous utiliserons des réponses de type 'condition' qui permettent d'évaluer un prédicat (comme les conditions étudiées dans la leçon 6): N > 34, N ≤<= 25, ...
Aussi, le traitement des réponses numériques comporte 2 étapes: primo, accepter une réponse et secundo l'analyser:
La particularité des réponses numériques est de demander ce double traitement, une réponse 'texte' pour permettre à l'utilisateur d'introduire sa réponse, plus un certain nombre de réponses 'condition' pour évaluer cette réponse. En dehors de cela, ce type d'interactions fonctionne exactement comme les interactions vues précédemment. Je vous recommande notamment de placer les différentes réponses conditionnelles selon la recette communiquée précédemment:
Le test lié au feed-back générique doit être toujours vérifié (tautologie): il s'agit par exemple du pattern universel '*' pour une réponse 'texte', ou d'une zone sensible couvrant l'écran entier. Dans le cas présent, il est facile d'écrire une condition toujours vérifiée telle que '1 = 1'. Vous pouvez aussi utiliser comme condition la constante TRUE.
Demandez au sujet quelle est l'altitude du Mont-Blanc. La bonne réponse est 4807. Acceptez une erreur de 100 mètres, mais précisez alors la réponse exacte. Si l'altitude est trop faible, affectez le feed-back "cherchez plus haut". Si sa réponse est trop élevée, affectez le feed-back "visez plus bas". Prévoyez un feed-back d'erreur générique. A la troisième erreur, donnez la réponse correcte
Voir: http://tecfa.unige.ch/campus/infospace/index.php?display=rooms&id=120209
Si la réponse contient plusieurs nombres, le second est stocké dans 'NumEntry2' et l'éventuel troisième nombre dans 'NumEntry3'. La variable 'NumCount' indique combien de nombres ont été identifiés dans la réponse du sujet. Un nombre est une suite ininterrompue de chiffres. Dans la réponse '1 200', le système identifiera deux nombres 1 et 200, sauf si l'auteur a demandé au pattern matcher d'ignorer les blancs.
Demandez au sujet d'introduire trois nombres dans un ordre croissant. Les trois nombres sont introduits en une fois, l'utilisateur tapant par exemple "55 88 654". Limitez à 3 essais. Prévoyez le cas où l'utilisateur introduit moins de trois nombres. Si les nombres ne sont pas dans l'ordre croissant, prévoyez un feed-back du type "19 devrait se trouver avant 45 et non après."
Voir: http://tecfa.unige.ch/campus/infospace/index.php?display=rooms&id=120209
La condition sur les nombres peut se combiner avec un test sur le texte de la réponse. Dans ce cas, faites une analyse de type texte et mémorisez son résultat dans une variable. Reprenons, par exemple, l'exercice 8.2 et imaginons que vous demandiez à l'utilisateur de fournir les unités. Testez le pattern 'm?tre*'. Si ce test est satisfait, placez comme feed-back l'affectation 'Unite := "m" '. Reprenez ensuite cette information dans les conditions. La condition définissant la réponse parfaite sera 'NumEntry = 4807 & Unite ="m" '. La condition 'NumEntry = 4807 & UniteOk ="" ' donnera par exemple lieu au feed-back "La réponse est exacte, mais vous avez oublié les unités."