[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
Citer : Posté le 29/04/2024 20:37 | #
d'accord, je vais attendre mais il n'y a pas d'urgence.
Faudrait que je retrouve le le module de sly
https://joz.alwaysdata.net/info/
Citer : Posté le 30/04/2024 14:46 | #
Salut Ptitjoz,
tu peux retrouver le fichier de la dernière version béta avec support du FS sur monochrome ici : https://www.planet-casio.com/Fr/forums/topic17202-19-beta-pythonextra.html#196282.
@+
Citer : Posté le 02/05/2024 09:18 | #
Salut Ptitjoz,
tu peux retrouver le fichier de la dernière version béta avec support du FS sur monochrome ici : https://www.planet-casio.com/Fr/forums/topic17202-19-beta-pythonextra.html#196282.
@+
merci du lien, open fonctionne
par contre, je ne trouve pas time()
https://joz.alwaysdata.net/info/
Citer : Posté le 12/05/2024 08:57 | #
C'est quoi la fonction pour faire des parallélogrammes ou pour faire des polygones ?
Citer : Posté le 12/05/2024 08:57 | #
Rempli
Citer : Posté le 12/05/2024 09:38 | #
Il y a la fonction gint.dpoly() (qui n'est pas encore dans la doc malheureusement).
dpoly([x1, y1, x2, y2, x3, y3, ...], fill_color, border_color)
Citer : Posté le 12/05/2024 09:56 | #
Ok merci
Citer : Posté le 12/05/2024 13:24 | #
J'ai un 'dpoly isn't defined'
Version trop vieille de Python extra ?
Citer : Posté le 12/05/2024 13:31 | #
Euh tu as bien importé tout gint, genre from gint import *, en utilisant la dernière release ?
Citer : Posté le 12/05/2024 13:33 | #
Je vais essayer avec la dernière version...
Citer : Posté le 12/05/2024 13:46 | #
C'est bon ! J'avais juste pas la bonne version !
Citer : Posté le 17/05/2024 09:44 | #
Bonjour
sur la graph 35+EII , est-il possible avec Python Extra de choisir la taille des caractères affichés par dtext() ou dtext_opt() sans passer par casioplot ?
j'ai bien vu dans la doc qu'il y a des fonctions dsize() et dfont() mais je ne sais pas si c'est implémenté ou si ça le sera
Merci
https://joz.alwaysdata.net/info/
Citer : Posté le 17/05/2024 09:46 | #
C'est prévu, dans le même style que les images, mais pas encore implémenté. Note qu'une fois codé il faudra que tu fournisses ta police sous la forme d'une image dans ton programme (donc un truc à convertir + un gros tableau de bytes à importer) ; je mettrai des liens vers des polices existantes dans différents projets.
Je fournirai aussi quelques polices par défaut mais rien de super créatif.
Citer : Posté le 17/05/2024 10:27 | #
Ptitjoz, comme je vois que tu sembles beaucoup utiliser PythonExtra, peux tu nous faire un retour sur ton utilisation ?
Trouves tu chaussure à ton pied dans les développements récents ? Vois tu des choses qui manquent par rapport au Python officiel ?
Je note que tu as qq demandes supplémentaires, on a une "pseudo roadmap" de développement, mais n'hésite pas à dresser ta liste au Père Noël.
Merci à toi pour l'utilisation et n'hésite pas à demander des infos et/ou des fonctionnalités quand tu en as besoin.
PS : j'ai été pas mal AFK ces derniers temps, mais je vais reprendre un peu plus de service dans les jours qui viennent.
Citer : Posté le 17/05/2024 18:49 | #
C'est prévu, dans le même style que les images, mais pas encore implémenté. Note qu'une fois codé il faudra que tu fournisses ta police sous la forme d'une image dans ton programme (donc un truc à convertir + un gros tableau de bytes à importer) ; je mettrai des liens vers des polices existantes dans différents projets.
Je fournirai aussi quelques polices par défaut mais rien de super créatif.
Merci d'avance mais il n'y a absolument pas d'urgence
sinon je me suis amusé à essayer d'afficher les caractères
avec casioplot en natif python Casio (hors PE)
et avec casioplot + python extra
on voit que la qualité est fortement dégradé. Une explication ?
Merci
https://joz.alwaysdata.net/info/
Citer : Posté le 17/05/2024 18:55 | #
Tu as pris la police small non ? Dans l'appli officielle les tailles moyenne et petite sont identiques. gint utilise cette police-là au niveau moyen et un truc un peu pattes de mouche au niveau petit.
Citer : Posté le 17/05/2024 19:02 | #
je n'avais rien précisé. Donc small par défaut. Si je mets "small" ou "medium" , ça ne change rien dans les 2 cas
Edit je rajoute le code
from gint import *
dclear(0)
c=27
for x in range(26):
for y in range(8):
c=c+1
draw_string(x*8,y*8,chr(c))
#draw_string(x*8,y*8,chr(c),(0,0,0),"medium")
#draw_string(x*8,y*8,chr(c),(0,0,0),"small")
dupdate()
k=getkey()
https://joz.alwaysdata.net/info/
Citer : Posté le 20/05/2024 10:08 | #
Ptitjoz, comme je vois que tu sembles beaucoup utiliser PythonExtra, peux tu nous faire un retour sur ton utilisation ?
Trouves tu chaussure à ton pied dans les développements récents ? Vois tu des choses qui manquent par rapport au Python officiel ?
Je note que tu as qq demandes supplémentaires, on a une "pseudo roadmap" de développement, mais n'hésite pas à dresser ta liste au Père Noël.
Merci à toi pour l'utilisation et n'hésite pas à demander des infos et/ou des fonctionnalités quand tu en as besoin.
PS : j'ai été pas mal AFK ces derniers temps, mais je vais reprendre un peu plus de service dans les jours qui viennent.
Merci Slyvtt pour ton message.
en réalité je n'utilise pas tant que ça Python Extra. du moins à mon avis.
Pour faire simple j'ai toujours aimer "programmer" et j'ai touché à pas mal de langages (Basics divers, Pascal (Delphi, Lazarus), un peu ce C, très peu d'assembleur (sur 386), SQL pour des Bases de données, Javascript, un peu de PHP et depuis peu Python sur PC et un peu de Python sur Casio.
Pour revenir à Python sur Casio ce que j'aime c'est ça rapidité (par rapport à Basic il n'y a pas photo), qu'on peut programmer un peu n'importe où, sans être encombré (dans le train par exemple)
J'ai hésité à acheter un 90E (d'occasion ?) car un peu chère et en fin de vie ? j'attends de voir ce que sera la Casio Math+ mais j'ai l'impression qu'elle sera moins bien (moins puissante et fermée) mais je me trompe peut-être
Pour l'instant je continue avec ma Casio 35+EII même si elle est un peu trop juste en mémoire et en taille écran. mais elle me permet d'apprendre un peu.
Concernant PE je tiens à remercier tous ceux qui travaillent sur ce gigantesque projet Lephe, toi et d'autres
Les avantages d'utiliser ce langage est qu'on est pas (toujours) obligé de développer sur PC et transférer sur la machine.
La rapidité est suffisante pour faire des choses sympas (et si on utilise Ftune ou Ptune on peut aller au delà)
les premiers ajouts ont été importants ne serait-ce que dline() qui n'existait même pas en python Casio
le fait de pouvoir mettre dans des répertoires séparés des programme permet de mieux s'organiser
l'ajout de getkey et time() ont ouvert les possibilité de développement presque inattendues ainsi que d'autres fonctions (accès aux fichiers (open r/w), aux images, etc. etc.
pour revenir au père Noël, je n'y crois plus depuis longtemps
à mon avis ce qui manque à python Extra serait pour les nouveaux venus et même les anciens d'avoir sur le site une page dédiée et des sous pages pour y retrouver une documentation indexée pour y retrouver les différentes instruction plutôt que d'aller fouiller dans les branches de git) et dans l'interminable post où je suis en train décrire
* personnellement j'aimerais avoir le moteur de gris ...
* un éditeur intégré à PE pour ne pas faire la gymnastique de passer par l'éditeur de Casio et revenir dans PE
* un catalogue des fonctions
* et pour pour parfaire le tout, un émulateur sur pc uniquement pour PE
j'ai commencé un truc mais pas vraiment abouti....
voila je ne sais pas si j'ai répondu à tes questions (ou si j'ai fait du hors sujet...)
Bien à toi
https://joz.alwaysdata.net/info/
Citer : Posté le 20/05/2024 12:23 | #
A propos du dernier point que tu as fais, j'ai commencé avant-hier a faire la même chose :d sauf que j'utilise pygame. J'ai que fais 3 fonctions en ce moment (drect dupdate et dclear), Par ce que je trouve assez ch*ant de transférer le fichier sur la calculatrice a chaque fois que tu fais un changement. (Et d'ailleurs, j'utilise le micropython de Zezombye pour éditer sur calculatrice).
Et je te remercie pour ton post intéressant et détaillé
Tuper
Citer : Posté le 20/05/2024 14:53 | #
Salut,
Merci à tous les deux. Oui c'est parfait comme réponse. L'éditeur "in-calc" serait en effet un gros gros plus afin de pouvoir modifier les scripts à la volée. C'est un truc qu'on a en tête.
On a aussi pensé peut être mettre un mode "USB" dans PE afin de pouvoir balancer en live des fichiers depuis un PC sans avoir à sortir, connecter avec Link etc ...
Pour l'overclock, on pourrait avoir une activation depuis PE directement via un menu, c'est très facile, on a tout pour faire dans gint.
C'est important d'avoir des retours d'utilisateurs afin de savoir ce qui fonctionne bien et ce que les utilisateurs aimeraient en plus.
A plus
Citer : Posté le 23/05/2024 12:22 | #
je ne sais pas si ce post à un intérêt quelconque
j'ai fait une erreur de syntaxe dans dpoly()
dpoly((x1,y1,x2,y2,x3,y3,x4,y4)),0,3)
j'ai mis des parenthèses à la place de crochets et là l'addin plante.
je m'attendais plus à un SyntaxError :
https://joz.alwaysdata.net/info/