Scratch a cet avantage de ne pas confronter l’utilisateur à l’erreur de syntaxe mais a contrario, et cela constitue le revers de la médaille, les bugs sont alors plus vicieux, plus difficiles à débusquer. Il ne reste que le bug bête et méchant, l’erreur de conception qui fait que votre cercle savamment codé ressemble à l’écran à tout sauf à un cercle. Dans ce cas, deux solutions : le code est faux et un simple coup d’oeil vous suffit pour constater "où ça ne tourne pas rond" ; votre code semble a priori correct et il s’agit de traquer une erreur encore plus pernicieuse qui se cache le plus souvent dans une valeur erronée.
Débuguer son code dans Scratch est parfois assez subtil surtout quand votre programme a pris de l’ampleur, que les lutins se comptent par dizaines et les blocs d’instruction par centaines.
Première habitude et non des moindres à prendre : sauvegardez l’évolution de votre programme sous des versions différentes et en autant de fichiers que nécessaire, à savoir par exemple "moncode_v1", "moncode_v2", "moncode_v3", etc.
Si le fichier "moncode_v2" fonctionnait parfaitement et que "moncode_v3" pédale dans la semoule (ou dans la choucroute en fonction des goûts), inutile de s’arracher les cheveux, c’est tout simplement que l’erreur se situe dans les modifications situées entre deux. Le fait de sauvegarder vos programmes de cette manière permet de conserver des versions saines sur lesquelles vous pouvez revenir régulièrement en cas de gros soucis.
La liste des erreurs classiques en Scratch est heureusement assez courte (liste cependant non exhaustive – n’hésitez pas à compléter si quelque chose m’a échappé).
Mauvaise valeur : une de vos variables ne possède pas la valeur attendue suite à un mauvais calcul ou à une mauvaise initialisation. Vérifiez chaque valeur une à une.
Mauvais positionnement : le fait que la position x = 0 et y = 0 soit en plein centre de l’écran est parfois cause d’erreurs quand on a l’habitude d’avoir celle-ci soit en bas à gauche ou en haut à gauche.
Oubli d’arrêter un script : un script censé s’arrêter continue son action, il lui manque alors sûrement une instruction "stop".
Oubli d’effacer : un peu de ménage sur l’écran au niveau des dessins ou des effets graphiques n’a jamais fait de mal à personne…
Oubli de réinitialiser des variables ou des listes : il est conseillé dès le démarrage de vos scripts de tout initialiser, tout effacer et mettre aux bonnes valeurs afin d’éviter des résultats aléatoires. Placez vos lutins aux bons emplacements, donnez à vos variables la valeur souhaitée, videz vos listes… Votre code ne s’en portera que mieux.
Bout rond du stylo : cela peut paraître bête mais le stylo possède un bout rond et non carré, ce qui donne parfois des dessins bizarres quand on agrandit la taille du stylo. Pensez-y sous peine de voir des blancs disgracieux là où vous vous attendiez à un trait plein.
Enfin, pour débuguer quelques méthodes qui ont fait leurs preuves dans tous les types de langage.
Isoler des bouts de code : si votre code marche seul, c’est qu’il n’est pas en cause. Testez alors les différents éléments et valeurs un par un.
Ralentir le script : parfois l’erreur est flagrante mais la rapidité ne permet pas de saisir ce qui se passe à l’écran. Ajoutez quelques blocs "attendre x secondes" afin de temporiser et de surveiller l’affichage ou l’action.
Afficher les valeurs : souvent indispensable. Cela permet de voir que là où théoriquement par exemple x doit être supérieur à 120, il plafonne pour on ne sait quelle raison à 30. Il ne reste plus qu’à débusquer la mauvaise valeur ou l’erreur de calcul.
Utiliser des sliders pour les valeurs : cela ne marche pas avec une valeur de 30, peut-être avec 50 ou 100 ? Plutôt que de changer sans cesse dans le code la valeur d’une variable, transformez celle-ci en slider. Les changements seront beaucoup plus accessibles et pratiques.
Bon code !
Classé dans:Code, Scratch Tagged: bug, code, scratch