Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [Bêta] PythonExtra.
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

[Bêta] PythonExtra.

Posté le 29/10/2022 09:49

PythonExtra est un add-in Python alternatif pour (à ce stade) Graph 35+E II, Prizm et Graph 90+E. L'objectif est de fournir plus de fonctionnalités : modules standard, getkey(), fonctions de dessin plus performantes, etc.

Version Bêta 0.2
Graph 35+E II / Prizm / Graph 90+E : PythonExtra-pe-0.2.0-beta.zip


Aperçu de PythonExtra sur Graph 90+E. (Cliquez pour agrandir)

Description sommaire des fonctionnalités :
  • Compile pour Graph 90+E (fx-CG 10/20/50) et Graph 35+E II (fx-9860G III)
  • Peu de RAM sur Graph 35+E II (c'est difficile d'en trouver sur ce modèle)
  • Un shell pas trop mal (saisie rapide, scrolling) avec de bonnes performances
  • Plein de modules standard
    • array, builtins, cmath, collections, io, math, random, struct, sys, time
  • Le module spécifique CASIO : casioplot (fidèle à part sur les polices)
  • Un nouveau module gint avec les fonctionnalités avancées de gint :
    • Pour l'instant, une bonne partie de <gint/display.h> et <gint/keyboard.h>
    • Donc getkey() (attente de touche) ainsi que keydown() (test instantané) !
    • Et des fonctions de dessin rapides comme dline() ou drect()

Le plan actuel :
  • Être sensiblement compatible avec l'appli Python officielle.
  • Pousser les fonctionnalités ajoutées pour vraiment relever le niveau de Python !
  • Si du temps de développement se débloque : support autres Graph mono (pas de promesses).

Updates et screenshots à venir. Je n'ai pas l'intention d'implémenter un million de fonctionnalités, juste ce qu'il faut pour s'assurer que ça ne finisse pas mal documenté et non maintenu comme CasioPython.

Dépôt Git : https://gitea.planet-casio.com/Lephenixnoir/PythonExtra
PythonExtra est notamment possible grâce à l'aide précieuse de Mb88.

Comparaison directe

Dans l'exemple ci-dessous (réalisé par Mb88), un Flappy Bird déjà bien optimisé (dessin partiel etc, à gauche) est accéléré un bon gros coup en utilisant PythonExtra et le module gint pour le dessin (à droite).


Contexte historique

Aux journées APMEP 2022, redgl0w racontait comment le port MicroPython pour Numworks n'était finalement pas super difficile. Moi je parlais de comment un port maison résoudrait le problème de getkey(), et Critor m'a convaincu d'essayer sur-le-champ.

En fin de compte, j'ai clôné MicroPython Dimanche à midi et à 1 heure du matin j'avais un port fonctionnel avec getkey() sur ma Graph 90+E (que j'ai d'ailleurs montré à CASIO Lundi, pour la démo). Comme quoi, des fois ça marche tout seul !

(Enfin, le début marche tout seul. Faire une bonne UI et gérer tous les détails ensuite c'est une autre paire de manches !)

Fichier joint


Précédente 1, 2, 3 ··· 10 ··· 17, 18, 19, 20
Ptitjoz Hors ligne Membre Points: 219 Défis: 10 Message

Citer : Posté le 17/03/2024 17:51 | #


Rien de nouveau pour PE ? des choses en préparation ?
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 17/03/2024 17:53 | #


Rien en effet, j'étais absent pendant un moment et ensuite je me suis laissé distraire pas un "truc" cette dernière semaine. Mais les modules Numworks arrivent enfin (dans les prochains jours) et ensuite je publie une nouvelle version.

Note que sur la liste il y a aussi quelques bugs que tu as rapporté mais que je n'ai personnellement pas encore reproduits, tous détails sont bienvenus sur ceux-là.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tuper4 Hors ligne Membre Points: 832 Défis: 19 Message

Citer : Posté le 17/03/2024 19:11 | #


Tu t'es pas fais distraire par quelque chose qui commence par "ray" et se termine par "casting" par hasard?
Ne vous arrêtez pas quand vous êtes fatigé(e), arrêtez vous quand vous avez terminez.
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 17/03/2024 19:14 | #


Je vois pas de quoi tu parles

Oh si j'optimise le rendu là je peux gagner quelques FPS
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 19/03/2024 10:05 | #


Nouvelle update (0.3.0-beta) !
Lien de téléchargement : PythonExtra-pe-0.3.0-beta.zip

Voici une liste des changements depuis la version 0.2.0-beta :

  • Modules de compatibilité Numworks : ion et kandinsky pour Graph 90+E, par @SlyVTT
  • Support des images dans gint à la fois pour les Graph mono et couleur
  • Nouvelle documentation (en français et en anglais), pour l'instant pour les modules gint, casioplot, ion et kandinsky
  • Ajout d'un écran de visualisation de la consommation mémoire (SHIFT+VARS dans le menu) et réduction de la consommation mémoire de la console
    • Résout des problèmes de manque de mémoire sur 35+E II
  • PythonExtra sur Graph 90+E fournit maintenant 300 ko de mémoire en plus aux scripts (pris dans _uram)
  • Ajout du paramètre de délai manquant à gint.getkey_opt()
  • Correction d'un bug dans lequel print() n'affichait pas durant l'exécution de gint.getkey()
  • Correction d'un très vieux bug sur 35+E II où la console n'affichait pas le bon nombre de lignes
  • Ajout des fonctions du module time qui avaient disparu en 0.2.0-beta à cause d'un changement de MicroPython que j'avais raté
  • Changement automatique de l'icône de l'add-in pour les versions de développement (par sur main ou qui ont des fichiers modifiés sur Git)

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 19/03/2024 11:08 | #


GG Lephé.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 219 Défis: 10 Message

Citer : Posté le 20/03/2024 20:09 | #


Merci pour tour le travail accompli pour cette nouvelle release.
.
J'ai vu que le module time retrouve time() et time_ns() ( et mononic() ?)
Il me semblait qu'il y avait d'autres fonctions dans la première version, mais je confonds peut-être avec le module de M. Parisse.

Quant l'écran d'affichage de mémoire, je ne sais pas l'interpréter, mais c'est sans doute à votre destination en cas de problèmes.

Sinon le moteur de gris est prévu dans une prochaine version ?

J'ai mis le plugin sur la G35 et je vais faire quelques tests et vous ferai un retour.

Bien à vous
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 20/03/2024 20:13 | #


Oui, le module time a bien récupéré monotonic(). S'il y a d'autres fonctions qu'il serait utile d'ajouter, je peux les mettre.

Le moteur de gris est effectivement à l'étude, la subtilité étant qu'il faut davantage de mémoire pour le faire marcher (3000 octets en plus) et pour l'instant c'est encore un poil délicat.

Merci pour ton retour
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ptitjoz Hors ligne Membre Points: 219 Défis: 10 Message

Citer : Posté le 22/03/2024 09:16 | #


je pensais que time(h,m) permettait de mettre la calculatrice à l'heure voir ici dans le billet mais apparemment ce n'est pas possible (par d'arguments possibles) comment faire pour gérer date et heure ?
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 22/03/2024 11:55 | #


La fonction time(h,m) ne fait pas partie de la spécification standard de Python, je pense qu'il s'agit d'une extension développée par Bernard Parisse spécifiquement pour KhiCAS.

A ce jour, il n'y a rien pour régler la date et l'heure dans PythonExtra (ni dans Python officiel d'ailleur).
Ceci est jouable via un développement spécifique (par exemple dans le module gint), on a je pense tout dans gint pour gérer ça correctement.
Par contre, attention, c'est pas un truc pérenne dans le sens où un changement de pile (et un reset je crois aussi), fait perdre le décompte, donc à reprogrammer à chaque session.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 219 Défis: 10 Message

Citer : Posté le 22/03/2024 13:00 | #


Slyvtt a écrit :
La fonction time(h,m) ne fait pas partie de la spécification standard de Python, je pense qu'il s'agit d'une extension développée par Bernard Parisse spécifiquement pour KhiCAS.

A ce jour, il n'y a rien pour régler la date et l'heure dans PythonExtra (ni dans Python officiel d'ailleur).
Ceci est jouable via un développement spécifique (par exemple dans le module gint), on a je pense tout dans gint pour gérer ça correctement.
Par contre, attention, c'est pas un truc pérenne dans le sens où un changement de pile (et un reset je crois aussi), fait perdre le décompte, donc à reprogrammer à chaque session.

Merci
oui dans l'addin de Parisse idem, il fallait remettre à l'heure si crash ou reset
en fait j'avais fait dans le temps une horloge pas géniale, car je n'avais pas la fonction sleep() https://tiplanet.org/forum/archives_voir.php?id=2809308 et je voudrais un peu reprendre ce programme en PE
Un peu poète, un peu geek, un peu rêveur, un peu écolo.

Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 22/03/2024 13:07 | #


On peut ajouter les fonctions de manipulation de la RTC dans gint. Techniquement tu as plus ou moins déjà accès à la date et l'heure vu qu'elles sont cachées dans le timestamp mais ça ira mieux avec la fonction appropriée.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 22/03/2024 21:47 | #


Une partie de Orlog (mini jeu de Assassin Creed Valhalla) dans sa dernière version (v99) fonctionnant sur PythonExtra v0.3.0 Beta :



Ça utilise les modules Numworks avec l'extension fxCG pour avoir accès à l'écran large de la Graph 90+E.
Les images utilisent un algo de Afyu et sont intégrées directement au code. Le script fait grosso modo 135ko avec les images, donc c'est plutôt gros. On voit ce qu'il est possible de faire avec PythonExtra, ça ouvre pas mal de portes par rapport à Python Officiel.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Slyvtt Hors ligne Maître du Puzzle Points: 2309 Défis: 17 Message

Citer : Posté le 24/03/2024 08:20 | #


@Lephe : j'ai eu quelques soucis pour activer le mode "sortie vidéo" avec la dernière version de PythonExtra-0.3.0-Beta.
Il semble que la version courante en mode "PE_DEBUG" soit un peu récalcitrante et n'enclenche pas pe_debug_screenshot() comme attendu à tous les coups.
J'ai eu aussi qq ruptures de flux avec fxlink -iw en passant du shell au programme en lui même.

Je pense qu'il y a un truc à regarder, petite régression de ce côté-ci.
J'aimerais à terme rajouter un menu (par exemple sur F4 ou F5) avec qq options:
- Overclock (ensuite accès aux niveaux d'OC)
- Activation/Désactivation mode USB (mais il faudrait savoir si la machine est connectée avec fxlink de l'autre côté ou pas sinon on va avoir du freeze)
- Affichage infos (RAM consommée, restante, ...)
- ...
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 09/04/2024 14:46 | #


Avec la dernière @RDP qui date un peu y'a deux versions à rapporter : 0.2.0-beta et 0.3.0-beta.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3 ··· 10 ··· 17, 18, 19, 20

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 79 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd