Cela t'a peut-être échappé, mais les capacités
Python de ta
NumWorks ont été fortement étendues dernièrement.
D'une part, le
MicroPython de ta calculatrice utilise 3 types de mémoire avec les rôles suivants :
- la mémoire de stockage qui accueille et conserve tes scripts Python
- le stack (pile) qui, à l'exécution, accueille les références vers les objets Python créés
- le heap (tas) qui, à l'exécution, accueille les valeurs de ces objets Python
En gros le
stack / pile limite donc le nombre d'objets différents pouvant exister simultanément en mémoire, alors que le
heap / tas limite la taille globale occupée par ces objets.
A moins d'avoir de gros besoins en terme de données ou de récursivité, le facteur limitant pour tes projets
Python sur calculatrice est habituellement le
heap / tas.
Or depuis la
version 13.2.0, le
heap / tas Python de ta
NumWorks a doublé, passant de
16K à
32K.
D'autre part, la
version 13.1.0 a introduit en
Python un nouveau module
ion permettant de tester les appuis de touches.
Cela devrait t'être fort utile pour coder tes jeux et interfaces de menus !
Mais jeux et interfaces de menus, les deux choses sont liées.
C'est quoi un jeu ? Algorithmiquement, on peut le définir en tant que boucle qui répère 3 choses à l'infini :
- lecture des entrées (clavier, souris, joystick, tactile, réseau...)
- traitement avec mise à jour des variables codant l'état du jeu
- mise à jour de l'affichage
Mais ça c'est en cours de partie. Avant le démarrage de la partie, un jeu c'est aussi justement un menu permettant de choisir nombre d'options
(difficulté, niveau de démarrage, options d'affichage, ...).
cent20 et ses disciples
Arthur_Jacquin et
Golden Man se proposent justement ce soir de t'illustrer les formidables nouvelles capacités de la
NumWorks, à la fois en terme de jeux et d'interfaces de menus, au pluriel note-le bien.
Grand fan du
Python,
cent20 a poussé
Arthur_Jacquin à nous commencer bien évidemment par un
Snake, le jeu du serpent, dont voici ci-contre l'interface de lancement.
Grâce au nouveau module
ion, les touches fléchées te permettent intuitivement de sélectionner et modifer les différentes options, et on apprécie également l'affichage d'une aide avec les touches à utiliser ainsi que du nom du jeu et de l'auteur.
Comme tu le vois maintenant en cours de partie et comme
déjà montré, le nouveau
tas / heap de
32K permet beaucoup plus de libertés et désormais le travail des graphismes au pixel près, sans avoir à craindre l'erreur de mémoire !
Et voici maintenant comme promis un 2
ème jeu, cette fois-ci du calcul mental par
Golden Man, une fois de plus aux graphismes remarquablement soignés.
Mais voyons un petit peu l'interface de lancement de ce 2
ème, car peut-être n'as-tu pas percuté plus haut. Elle est très similaire à celle du
Snake, non ? Avec juste les noms et valeurs qui changent...
Car en effet, c'est littéralement une bibliothèque très complète d'interface de lancement de jeu que
cent20 et
Arthur_Jacquin t'ont développée, et que tu peux réutiliser clé en main pour tes propres jeux !
Il te suffit de lui fournir dans l'ordre :
- titre du jeu
- texte du bouton de lancement
- des listes comportant un nom suivi de une ou plusieurs valeurs qui te permettent astucieusement de traiter par exemple :
- aussi bien les choix disponibles pour une ou plusieurs options
- que l'affichage des différentes touches de contrôle, défilable de la même façon qu'une option avec les touches fléchées
- ou encore l'affichage des différents auteurs, là encore défilable de la même façon
Rien de compliqué, un simple appel de fonction et la bibliothèque se charge de tout !
Par exemple, voici l'appel correspondant au jeu
Snake :
- Code: Select all
mode, dif, bor = menu("SNAKE",
"Lancer la partie",
["Mode", "Classique", "Dingue"],
["Difficulté", "Moyen", "Difficile", " Extrême",
"Facile"],
["Bordures", "Mortelles", "Téléportation"],
["Commandes", " Nav: Flèches", "Menu: HOME",
"Rejouer: OK"],
["Crédits","Arthur J.","Vincent R."])
Mais pas de défilement vertical par contre à ce jour si on spécifie plus de 5 listes nom+valeurs. Peut-être pour une prochaine fois ?
Et voici celui correspondant au jeu de calcul mental :
- Code: Select all
mode, ope, dif, rep = menu("Automatismes en calcul mental",
"Calculer [OK]",
["Mode", "Classique", "Rapide"],
["Opération(s)", "+", "-", "x", "/", "+ -",
" x / ", "+ - x", "+ - x /"],
["Difficulté", " modéré", "difficile",
"expert", "facile"],
["Répétition", 42, 50, 100, 120, 20],
["Crédits", "Site web$nsi.xyz/calcul",
"Auteur$Kevin Fedyna",
"Contributeur$Vincent ROBERT"])
Enfantin, n'est-ce pas ?
N'hésite pas à aller consulter ci-dessous les pages de ces 3 projets, débordantes de détails passionnants à dévorer.
Et en attendant ta prochaine création, jusqu'à combien arrives-tu à faire grandir ton serpent ?