Pour que mon fils apprenne et révise ses tables d’addition et multiplication j’ai commencé par lui poser des questions, comme l’ont fait mes parents lorsque j’étais enfant. Puis j’ai tenté de laisser l’informatique prendre le relais car apprendre en jouant est souvent apprécié par les enfants (et par les adultes aussi d’ailleurs).

Calcul pour les enfants

Après quelques recherches parmi la tonne de jeux éducatifs, j’ai lancé Calcul pour les enfants sur tablette (application gratuite mais non libre et avec publicités).

L’avantage de cette application est qu’il est possible d’activer/désactiver certaines tables, ce qui est très pratique lorsque votre enfant doit apprendre les tables de 1 à 5 mais n’a pas encore appris les suivantes.

J’avais initialement proposé de jouer à TuxMath, un jeu avec un temps limite par opération, mais il se mettait dans un état de stress tel, malgré un compte à rebours très long, qu’il me semblait préférable de trouver autre chose. Cette application n’a pas de limite de temps, il pouvait jouer sereinement. Il a beaucoup jouer à ce jeu et son petit frère de 4 ans (3 quand il a commencé) était très content d’y jouer également pour imiter son frère (se limitant aux additions et se servant des doigts de son père comme boulier). Seul souci, en cas de faute, mon plus grand fils refuse de continuer la partie, cache la section de l’écran où sa faute apparaît et se met dans des états impossibles (crise de larme,…). Rien à faire pour le raisonner.

[Digression] Quand je le vois jouer à la console, je constate que les jeux actuels aident énormément les joueurs en difficulté, il n’est pas nécessaire de recommencer encore et encore si on rate. Les Mario actuels (par exemple) disposent d’un mode automatique si vous ratez trop de fois, si l’on compare cela au fait que le premier Mario sur NES n’avait pas de sauvegarde… Est-ce parce que c’était difficile que l’idée de tout recommencer ne me dérangeait pas ? Je me rappelle avoir fait et refait les premiers niveaux de Wonder Boy des dizaines voire des centaines de fois et avoir adoré ce jeu, cela contraste tellement avec mon fils qui hurle qu’il est nul parce qu’il a fait une erreur… bref, il faudra que je le fasse jouer à de vieux jeux pour vérifier ma théorie et que je m’occupe de ce problème d’assurance. [/Digression]

iTooch CE2

Puisqu’il entre en CE2, j’ai installé quelques jours avant la rentrée, deux applications pour qu’il révise un peu. Il adore iTooch Mathématiques CE2 et iTooch Français CE2 (applications gratuites mais non libres et avec publicités). Dans ces deux applications pour tablette, des questions sont posées dans plusieurs catégories, des étoiles récompensent les meilleurs résultats, on peut choisir la notation (18/20 ou B+). Mon fils ne semble pas ressentir de frustration, il aime jouer. Il faut dire que du jeudi au samedi, les écrans sont interdits à la maison, sauf quelques rares fois, pour les jeux éducatifs, que ne serait-il pas prêt à faire pour jouer sur écran ?

TuxMath

L’année scolaire commence par des révisions de tables d’addition. J’aurais pu le faire un peu rejouer au premier jeu cité, mais cette fois c’est l’extrême lenteur à laquelle il répond qui pose problème. J’ai donc ressorti TuxMath (jeu gratuit et libre) sur PC.

Les opérations tombent plutôt lentement, surtout en plein écran (fullHD), il est possible de choisir un peu le niveau, le mode arcade est certainement le plus intéressant. Les parties sont très longues, du coup, il a pu réviser sans pour autant ressentir de lassitude. Parmi les regrets, je trouve dommage de ne pas pouvoir supprimer la table d’addition de 0 car cette table est assez peu utile à réviser, quelques réglages plus fins sur les niveaux seraient intéressants. Mais de toute façon, le mélange laser/astéroïdes rend le jeu attirant.

Les révisions vont bon train jusqu’à ce qu’une nouvelle crise de larme n’apparaisse après plusieurs minutes de jeu, le deuxième jour. Non pas qu’il en ait raz-le-bol mais parce que le jeu commence à être trop rapide pour lui. C’est un peu comme Tetris, au fur et à mesure le jeu accélère et ne s’arrête qu’une fois que vous n’arrivez plus à suivre et qu’un « Game Over » apparaisse. Le problème ici est que mon fils considère alors qu’il perd, qu’il est mauvais, qu’il a échoué. Décidément, cette idée est tenace et un brin agaçante ! J’ai beau lui expliquer que c’est le fonctionnement du jeu en mode arcade qui est ainsi, qu’il ne peut pas continuer indéfiniment et qu’il ne faut pas voir cela comme une défaite mais comparer son score aux fois précédentes, rien à faire pour le raisonner. Décidément il va falloir que je travaille ce point.

Réfléchir est un jeu... Et toi, à quoi tu joues ?

Je pourrais tester encore et encore les centaines d’applications pour en trouver une qui convient mais j’ai finalement trouvé plus amusant. Il me faut un jeu sans timing par question, sans « Game Over », qui permet de sélectionner les tables à réviser où le score dépend de la vitesse, du nombre de fautes… après tout, c’est une bonne occasion de jouer moi-même : Je vais l’écrire ce jeu !

Je n’ai pas besoin de fioriture, un simple script en console devrait suffire. Avec un peu de chance, si le code est suffisamment simple, je pourrais initier mes enfants au code (Lourd est le parpaing de la réalité sur la tartelette aux fraises de nos illusions) ! C’est parti pour l’écriture d’un script en python ! Par quoi commencer ? Ben, apprendre python, pardi ! Je constate assez vite que c’est plus simple que ce à quoi je m’attendais initialement. Il faut dire que mon script ne demande pas de fonctionnalités bien complexes…

Après quelques courtes minutes et recherches sur la toile, j’obtiens le code suivant :

#!/usr/bin/python3
# -*- coding: utf-8 -*-
from random import randint
x=(randint(1,9))
y=(randint(1,9))
z=x+y
print(x,"+",y,"=")
input_reponse = input("Votre réponse : ")
if (z==int(input_reponse)):
  print ("yes")
else:
  print("no")

Alors certes, cela ne casse pas trois pattes à un canard mais c’est moi qui l’ai fait ! Je suis content de moi, il m’en faut peu j’en conviens, mais je suis content d’avoir créé moi-même le programme dont j’avais besoin. Pas besoin de connaissance poussées en informatique, je suis persuadé que la majeure partie des gens aurait pu écrire ces 12 lignes. Le problème est que la plupart des gens ne se savent pas capables de le faire, un manque de confiance mélangé, il faut l’admettre et c’est normal, à une dose de flemme saupoudrée de total désintérêt. C’est dommage car c’est amusant (bien plus stimulant et intéressant que la partie de solitaire sur tablette à laquelle ma voisine de car jouait hier soir, si vous voulez mon avis).

Un tout petit peu plus loin

Quelques minutes et une boucle while plus tard, j’obtiens une petite soixantaine de lignes de code. J’ai maintenant un script assez simple et qui convient pour mon usage.

Je pourrais enregistrer les meilleurs scores, vérifier si la réponse est bien un entier, faire une interface graphique avec des dessins, ajouter les soustractions, multiplications, divisions,… cela me permettrait d’apprendre un peu plus le langage et l’algo… un jour peut-être, quand le besoin se fera ressentir. À moins que ce script me serve justement à démontrer aux fistons qu’il est facile d’obtenir un programme simple en le codant soi-même…

J’ai mis cela sur mon dépôt GitHub sous licence libre évidemment (CC0 aurait été plus approprié que GPL vu la simplicité de l’algo mais bon, j’avais le fichier de licence GPL déjà prêt…). Aurez-vous envie d’y jeter un œil ? Je ne pense pas que cela puisse vous être d’une grande utilité, c’est plus l’idée de faire soi-même que le code que je voulais partager ici.

Pour le score, pas facile de trouver le juste équilibre, j’ai fini par choisir cette formule :

score=partie_entière_de( 1000× (points-0.2×nb_fautes)/temps_moyen_par_question )

je ne sais pas si c’est le meilleur choix mais il n’est pas aisé de trouver la formule idéale… il va falloir que j’y réfléchisse un peu plus… chic !?

Bonus : Smartphone

Il existe une application Android qui permet d’exécuter des scripts Python (dans mon cas Python3) : QPython3. Celle-ci ne semble pas libre (we will push on the whole qpython to be opensource gradually) et demande l’accès à beaucoup de choses dans mon téléphone (il y a une explication à cela, puis-je vraiment faire confiance ?) mais je n’ai pas trouvé d’équivalent dans F-droid…. Toujours est-il que maintenant mes enfants pourront faire des additions sur mon téléphone dans la salle d’attente du médecin, ce sera toujours plus utile qu’Angry Birds.

Conclusion

Je n’ai pas fait grand chose ici, bien moins que pour mes scripts nautilus, bien moins que n’importe quel développeur que vous aurez l’occasion de croiser. Je n’ai rien développé d’important ici, ce n’est pas du code dont je peux être particulièrement fier pourtant j’éprouve une satisfaction certaine, le plaisir de réfléchir à des algorithmes simples, le plaisir d’apprendre une nouvelle syntaxe, le goût des choses simples comme diraient Ludwig Schweisfurth et son épouse Wilhelmine.