[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.4 (Changelog)
Graph 35+E II /
Prizm /
Graph 90+E /
Math+ /
ClassPad : PythonExtra-pe-0.4.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
Citer : Posté le 19/04/2025 09:20 | #
Merci beaucoup Lephe.
Super boulot de MaJ.
Le support du fxCP 400 est top. C'est l'ouverture de cette machine au Python, ce qui n'existait pas jusqu'à présent. C'est donc une date à marquer d'une pierre rouge.
Citer : Posté le 19/04/2025 12:58 | #
Wow ça avance super bien! Je commence à coder un éditeur de python pour FX
Citer : Posté le 19/04/2025 13:26 | #
Moi j'ai commencé un truc pour CG et CP.
Peut être pour la v0.5.0
Who knows
Citer : Posté le 19/04/2025 13:52 | #
(c'est un moteur de coloration syntaxique)
Citer : Posté le 19/04/2025 13:59 | #
J'ai vu le screenshot, ça a l'air magnifique.
Moi je suis en train de coder un éditeur pour fx et j'ai déjà fait un petit bout de code pour le tester (
j'ai pas encore testé si ce code marche correctement avec micropython on calcoui c'est bon il fonctionne correctement):# Some code in a comment: for i in range(10)
"""
A docstring with some code:
if not 1 in [1] and 1 is not None: print("Ok!")
"""
# Some code:
a = int(1000*2/2*10**0+1%1//1)
b = int(a*2/2*10**0+1%1//1)
class Test: # A useless class
def __init__(self, something: int):
self.hello = "Hello"
self._something = something
self.__private = 2.1e9
def say_hi(self) -> None:
print(f"Hi! A number: {self._something}.")
class RandomNumber(Test): # Something is random
def __init__(self):
super().__init__(r(1, 100))
random = RandomNumber()
random.say_hi()
i = 0
while (i := i+1) <= 100: print(i)
Citer : Posté le 19/04/2025 21:16 | #
Hello petite question, est-ce qu'il y a moyen de poser un pixel très rapidement comme en C++ avec gint_vram ou c'est pas possible ? Car dpixel si je ne me trompe pas fait a chaque fois une vérification des bordures non (et du coup c'est lent) ?
Albert Einstein
Citer : Posté le 19/04/2025 21:22 | #
Non, tu n'as pas accès à la VRAM directement depuis PythonExtra.