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: 25062 Défis: 174 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.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


Précédente 1, 2, 3 ··· 10 ··· 20 ··· 23, 24, 25, 26
Lephenixnoir Hors ligne Administrateur Points: 25062 Défis: 174 Message

Citer : Posté le 22/04/2025 19:27 | #


Y'a des formats fxconv pour les monochromes. Je sais plus ce qui se passe si tu essaies de dessiner une image grise quand le moteur est inactif mais je ne vois pas de version de la fonction interne pour "approximer" le gris donc je pense que ça doit juste ignorer l'image et ne rien dessiner (i.e. erreur).
Mon graphe (28 Janvier): (MPM ; serial gint ; (Rogue Life || HH2) ; PythonExtra ; ? ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2601 Défis: 17 Message

Citer : Posté le 22/04/2025 19:51 | #


Oui c'est ça, je suis allé à la pêche dans gint et fxconv.

Il faut bien spécifier le profil au moment de la conversion
- "mono" ou "mono_alpha"
- "gray" ou "gray_alpha"
dans la ligne de commande de fxconv (ou le fxconv_metada.txt)

A priori si on se trompe (par exemple conversion en gris et grey engine non actif, ça doit faire une erreur).
L'inverse est Ok (conversion en mono et utilisation avec moteur de gris).
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Lephenixnoir Hors ligne Administrateur Points: 25062 Défis: 174 Message

Citer : Posté le 22/04/2025 19:57 | #


Si l'image ne contient pas de pixels gris alors "mono" ou "mono_alpha" le « bon » choix. En fait j'ai vérifié, le paramètre est un peu inutile parce qu'une fois l'image lue il y a toujours une seule option qui est optimale, et fxconv la sélectionne automatiquement. Donc on peut omettre le paramètre, c'est peut-être pour ça que tu n'avais pas réalisé qu'il existe.
Mon graphe (28 Janvier): (MPM ; serial gint ; (Rogue Life || HH2) ; PythonExtra ; ? ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2601 Défis: 17 Message

Citer : Posté le 22/04/2025 19:59 | #


Ok, cool.
En fait c'est surtout parce que je ne programme presque pas sur FX, mais quasi exclusivement sur CG.
Comme je l'ai eu après ma CG, j'ai pris mes habitude d'enfant gâté
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Ptitjoz Hors ligne Membre Points: 287 Défis: 10 Message

Citer : Posté le 22/04/2025 21:19 | #


merci de toutes ces précisions. je ferais des essais et un retour à ce sujet.


Farhi Hors ligne Membre Points: 1473 Défis: 0 Message

Citer : Posté le 23/04/2025 14:52 | #


Hello ! Est-ce qu'il est possible d'overclocker pour un script python ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Shadow15510 Hors ligne Administrateur Points: 5515 Défis: 18 Message

Citer : Posté le 23/04/2025 14:54 | #


Je dis peut-être une grosse connerie, mais une fois que la calculatrice est overclockée (je pense aux add-in de Sentaro), toute la calto l'est, que ce soit du Basic, du Python ou du C/ASM, ça ne change rien

TL; DR : oui, à confirmer
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

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

Citer : Posté le 23/04/2025 15:00 | #


oui tu utilises PTune ou Ftune avant de lancer PythonExtra et tu seras overclocké.

Dans une versione future on mettra peut être un mode overclock dans l'interface de PE, mais pour le moment rien n'est fait.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Farhi Hors ligne Membre Points: 1473 Défis: 0 Message

Citer : Posté le 23/04/2025 15:00 | #


Shadow15510 a écrit :
Je dis peut-être une grosse connerie, mais une fois que la calculatrice est overclockée (je pense aux add-in de Sentaro), toute la calto l'est, que ce soit du Basic, du Python ou du C/ASM, ça ne change rien

TL; DR : oui, à confirmer


Bah normalement avec gint on peut changer la vitesse depuis le code directement sans a avoir a overclocker la calto
"La créativité est contagieuse faites la tourner"
Albert Einstein
Slyvtt Hors ligne Maître du Puzzle Points: 2601 Défis: 17 Message

Citer : Posté le 23/04/2025 15:01 | #


Oui mais on a pas fait le transfert dans PythonExtra car c'est un peu touchy, dans un addins Ok, mais dans Python c'est pas trop la philosophie.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Shadow15510 Hors ligne Administrateur Points: 5515 Défis: 18 Message

Citer : Posté le 23/04/2025 15:02 | #


Certes, mais dans ce cas-là, tu n'utilises pas d'add-in d'overclock.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

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

Citer : Posté le 23/04/2025 15:47 | #


Farhi a écrit :

Bah normalement avec gint on peut changer la vitesse depuis le code directement sans a avoir a overclocker la calto


Gint fait strictement la même chose que les addins de Sentaro21 (PTune/FTune).
Sauf qu'à la fin de l'addin, on restaure les paramètres de clock (c'est le kernel qui restaure le contexte).
Idéalement, on demande au programmeur de remettre dans le même état qu'il a pris la machine, c'est à dire faire un backup des registres et de les restaurer dans le même état avant de retourner à l'OS.

Avec Lephe, on pensait mettre un menu dans PythonExtra pour activer un mode overclock avant de lancer un script, mais pas d'ouvrir l'accès à l'overclock dans le script Python en lui même.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Farhi Hors ligne Membre Points: 1473 Défis: 0 Message

Citer : Posté le 24/04/2025 14:46 | #


Hello !
@Lephenixnoir, du coup, est-ce que le flip horizontal a été ajouté ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Ptitjoz Hors ligne Membre Points: 287 Défis: 10 Message

Citer : Posté le 25/04/2025 12:20 | #


perso je ne vois pas trop l'interêt de rajouter l'overclokink dans PE. Ftune fais l'affaire non ?


Lephenixnoir Hors ligne Administrateur Points: 25062 Défis: 174 Message

Citer : Posté le 26/04/2025 21:28 | #


Nope Farhi, désolé. J'ai pas eu le temps le soir en question et là je suis en triple deadlines dont ma propre participation au concours !
Mon graphe (28 Janvier): (MPM ; serial gint ; (Rogue Life || HH2) ; PythonExtra ; ? ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ptitjoz Hors ligne Membre Points: 287 Défis: 10 Message

Citer : Posté le 27/04/2025 18:23 | #


Bonjour
niveau de gris et rayures verticales étranges...
voici le code
from gint import *
from utime import *
from urandom import *
def carre(x,y,c,k=3):
  drect(x,y,x+c,y+c,k)
dgray(DGRAY_ON)
dclear(C_WHITE)
for i in range(16):
  carre(randint(10,120),randint(10,50),randint(5,20),randint(0,3))
  dupdate()
  sleep_ms(200)
dgray(DGRAY_OFF)
getkey()  


voici le résultat que je ne m’explique pas vraiment :



Précédente 1, 2, 3 ··· 10 ··· 20 ··· 23, 24, 25, 26

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

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2025 | Il y a 99 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