Comment débuguer un programme en Scratch

Tags

, ,

Syntax Error

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 !

Bibliobox, Piratebox ou Partagebox – Sharebox ?

Tags

, , , , ,

Sharing

Je m’étais déjà largement exprimé à ce sujet auparavant mais une récente discussion me donne l’occasion d’en remettre une couche.

Piratebox or not Piratebox ? Ou plutôt, même si je respecte le concept, comment j’ai beaucoup de mal à accrocher au phénomène de la Bibliobox…

Le terme "pirate" fait certes peur mais le vocabulaire ne doit pas être otage de ce qu’on veut lui faire dire, comme on peut le voir avec "hacker" utilisé la plupart du temps à contresens par les médias. A ce sujet, je vous recommande en cette période estivale la lecture d’à l’abordage, une bande-dessinée d’Anders Bengston sous licence libre expliquant de manière très didactique et avec beaucoup d’humour l’histoire du droit d’auteur, du "piratage" et des licences libres.

Une piratebox, ça demande bien sur un peu plus de travail, de la médiation culturelle d’ailleurs, car il y a besoin d’une certaine supervision et d’un contrôle pour vérifier que les contenus partagés respectent bien les règles. Mais cela n’en vaut-il pas la chandelle ? Car le maître mot de la Piratebox au-delà du terme "pirate" est le partage.

Préférer le principe de la Piratebox à celui de la Bibliobox – peu importe le nom que vous lui donnez ensuite – a à mon sens trois avantages notables. D’une part, on provoque l’échange et le dialogue avec le public pour expliquer le fonctionnement, les règles, la philosophie. Cela ne se résume pas à un simple message type "connectez-vous et servez-vous" qui s’apparente plus à de la consommation qu’à autre chose. D’autre part, le partage est horizontal et non vertical. Il ne s’agit pas d’un groupe restreint qui choisit les contenus culturels pouvant être partagés mais bel et bien d’un échange global même s’il faut une nécessaire impulsion. En cela, le modèle prôné par la Bibliobox se rapproche pour moi beaucoup plus de celui de la télévision et non d’internet. Enfin, c’est une occasion importante pour le public de créer et de participer. "Vos contenus, vos créations, pourvu qu’ils respectent les règles du droit d’auteur, sont les bienvenus…" La porte est ouverte et peut amener du public à se valoriser. Ce serait dommage de passer à coté de cette opportunité.

C’est cela à mon sens le plus important lorsqu’on entame une démarche visant à intégrer dans son environnement une Piratebox : ne jamais oublier qu’il s’agit de partage, d’une philosophie qui n’emprunte pas au top-down mais bel et bien à un réseau horizontal, à une hiérarchie zéro. Pour faire moins peur, on pourrait peut-être parler de Partagebox ou de Sharebox. Cela permettrait peut-être de convaincre plus facilement et plus efficacement sans renier la philosophie de base.

Pong! en Scratch

Tags

, , ,

Pong-Scratch

Petit défi de la semaine dernière pour la journée rétrogaming : réaliser un Pong en Scratch jouable avec la Makey Makey et en l’occurrence des os de seiche.

Flèches Haut – Bas pour le joueur de gauche
Flèches Gauche – Droite pour le joueur de droite
Espace pour lancer la balle

Cliquez sur l’image pour accéder au jeu.

Ceci ne constitue qu’une préversion. J’espère bien avoir le temps prochainement de retravailler le mouvement de la balle, en particulier ses réactions quand elle touche le bord, et d’ajouter des éléments sonores et graphiques comme par exemple des briques à casser comme dans Arkanoid ou Super Mario, des bonus, des petits sprites issus de l’univers de Space Invaders pour venir troubler un peu le jeu…