Page 1 of 1

Démineur, Snake, et interface lancement jeux Python

Unread postPosted: 19 Apr 2020, 11:27
by Admin
Les capacités Python de ta calculatrice NumWorks ont été fortement étendues dernièrement. :D

D'une 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 ! :bj:

12385D'autre 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 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. :bj:

Dans un article précédent, cent20 et ses disciples se proposaient de t'illustrer ces nouvelles possibilités dans le cadre du développement de jeux Python, avec :
  • des graphismes que l'on peut désormais prendre le temps de soigner au pixel près sans craindre l'erreur de mémoire
  • et une bibliothèque offrant une interface de menu de lancement contrôlée intuitivement à l'aide des touches fléchées
Cette dernière bibliothèque est de plus réutilisable pour tes propres projets de jeu Python sur NumWorks, elle se charge d'absolument tout ce qui précède le lancement de ta partie. Il te suffit d'un simple appel à la fonction menu() en lui fournissant 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 (difficulté, niveau de départ, ...)
    • que l'affichage d'une ligne d'aide avec les différentes touches de contrôle, défilables 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éfilables de la même façon
La fonction te retourne alors automatiquement les valeurs choisies par l'utilisateur pour chaque option, tu n'as rien d'autre à faire ! :bj:

Voici par exemple la simple ligne d'appel qui produit l'interface ci-dessus :
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."])

12378Aujourd'hui, cent20 revient à son tout premier jeu NumWorks exploitant le nouveau module ion, le jeu du Démineur.

cent20 te met donc justement à jour ce Démineur avec cette nouvelle interface de lancement, te donnant ainsi accès beaucoup plus intuitivement à toute la richesse de gameplay offerte par les options !

Voici la ligne d'appel correspondante, regarde comme c'est simple : :)
Code: Select all
mines, triche, graphisme, com, cre = menu("Démineur",
                                          "Lancer la partie [OK]",
                                          ["Mines", 16, 19, 22, 25, 28,
                                            31, 33, 36, 39, 42, 7, 10, 13],
                                          ["Mode Triche", "1 fois", "non",
                                            "oui"],
                                          ["Graphisme", "sobre", "classique"],
                                          ["Commandes", "Nav: Flèches",
                                            "Déminer: OK", "Drapeau: Retour",
                                            "Rejouer: Maison", "Triche: shift"],
                                          ["Crédits", "Site web$nsi.xyz/demine",
                                            "Auteur$Vincent Robert",
                                            "Contributeur$Bisam tiplanet.org",
                                            "Contributeur$Critor tiplanet.org",
                                            "Contributeur$Arthur Jacquin"])

Liens :

Téléchargements :