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 - Actualités


Index du Forum » Actualités » Concours de démos graphiques en Python
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Concours de démos graphiques en Python

Posté le 21/04/2020 18:26

Salut à tous, chers programmeurs et avides de toutes choses stylées sur calculatrices. Vous êtes tous tombés au bon moment, car il est temps de jouer avec les nouveaux modules de dessin en Python !

Casio a récemment annoncé puis publié trois modules de rendu graphique en Python pour Graph 35+E II et Graph 90+E :
matplotl, une version minimale de matplotlib très fidèle à l'original.
turtle, une reproduction en règle parfaitement identique à l'original.
casioplot, un module bas-niveau pour modifier les pixels à l'écran avec des performances très intéressantes.

On a déjà commencé à parler de ces modules en détails dans un article précédent, et on va continuer dans le futur. Pour l'instant, on peut résumer les nouveautés en quelques points !

• Les modules matplotl et turtle sont très conformes aux originaux, ce qui permet aux mêmes programmes de marcher sur calculatrice et sur PC. D'autres constructeurs comme Numworks ont fait ce choix, et sur Planète Casio on trouve ça génial.
• Le module casioplot permet de faire du dessin très précis. Les performances ne permettent pas de faire du dessin en temps réel, mais on peut déjà faire pas mal de choses !
• Malheureusement, on n'a toujours rien pour interagir avec le clavier (à part quelques essais avec AC/ON) donc on peut pas faire de jeux.

Ce qui nous amène au concours d'aujourd'hui. Pour lancer tout le monde sur le chemin de ces bibliothèques et découvrir tout ce qu'on peut faire de stylé avec, je vous propose un concours de démos graphiques accessible à tous !


Qu'est-ce qu'une démo graphique ?

Une démo graphique, c'est un petit programme qui affiche des choses stylées à l'écran, pour démontrer les capacités graphiques d'une plateforme. Ça peut être des animations stylées, des choses colorées, des cubes en 3D... ça peut être une seule image, une animation, peu importe.

En gros si c'est beau et stylé, vous gagnez.

Voilà des exemples de démos graphiques que j'ai codées sur ma Graph 90+E. Celles-ci tournent en temps réel ! (Les captures ont été prises par un logiciel vidéo donc c'est bruité, ce n'est pas un effet du programme.)




Comme vous pouvez le voir, il y a plein de choses à faire, et vous pouvez vraiment vous lâcher !


Dates, fonctionnement, et lots du concours

Voilà comment ça va se passer. Vous avez jusqu'au Samedi 9 Mai (un peu plus de 2 semaines) pour poster vos participations sur ce sujet. Pour participer, vous devez :

Poster sur ce sujet une image ou animation de votre démo. Votre démo doit fonctionner sur Graph 35+E II ou sur Graph 90+E. Dans les deux cas, vous pouvez prendre une capture avec Screen Receiver.
Si vous n'y arrivez pas, envoyez-moi le code par message privé et je vous enverrai l'image ou l'animation en retour. Vous pourrez alors poster. Ne partagez pas votre code sur ce sujet !

Si vous n'avez pas de Graph 35+E II ou de Graph 90+E, vous pouvez utiliser les émulateurs officiels qui disposent d'une version d'essai de 90 jours. Si même ça vous est inaccessible (parce que vous avez déjà utilisé la période d'essai, par exemple), vous pouvez m'envoyer le code d'un programme compatible Graph 35+E II ou Graph 90+E et je le lancerai pour vous.

À la fin du concours, vous devrez partager votre code et on discutera des techniques utilisées, des optimisations, et de la créativité dont vous aurez fait preuve pour abuser des mécanismes de tracé pas prévus pour ça.

Les meilleures participations seront classifiées par un petit jury (jusqu'à 5 membres hors participants) pour élire les démos les plus impressionnantes.

Il y a un lot à gagner, l'auteur·e de la meilleure démo graphique recevra une clé USB multi-émulateurs à usage à vie. Cette clé USB contient les trois émulateurs fx-92 Spéciale Collège+, Graph 35+E II et Graph 90+E, tous utilisables dans leur version complète sans limite de durée pourvu que la clé USB soit branchée à l'ordinateur. Ce système permet d'utiliser les émulateurs sur plusieurs ordinateurs sans difficulté !

Les deux émulateurs de Graph sont dans les premières versions Python. Mais pas d'inquiétude, car cette clé USB peut être mise à jour avec les nouvelles versions de l'OS ! Comme annoncé durant la tournée pédagogique en ligne ce mois-ci, la mise à jour avec les bibliothèques graphiques est disponible pour les clés USB d'émulation. Casio a pensé à tout !


Alors évidemment, contrairement au CPC ce petit concours repose sur un système de notation assez subjectif. J'espère que tout le monde saura prendre le lot comme une incitation à participer, avec le recul suffisant pour éviter les mauvaises surprises à la fin !


À vos calculatrices !

Je compte sur vous pour envoyer le feu avec ces nouveaux modules. Si les participations sont vraiment stylées, on pourra en mettre en page d'accueil !

Je déclare le concours de démos graphiques Python ouvert !

Fichier joint


Précédente 1, 2, 3, 4, 5, 6, 7 Suivante
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 24/04/2020 08:57 | #


Lephenixnoir a écrit :
Pour être exact le point de fuite est en x infini, et la caméra est en 0,0. Mais c'est presque ça oui.

Roooh
Je pensais que le point de fuite était lié à la caméra mais bon ..

Ajouté le 24/04/2020 à 09:00 :
Hackcell a écrit :
En revanche je peux vous parles en long et en large des propriété mathematique desdite matrice >_<

C'est gentil de proposer mais c pas la peine
Perso pour les matrices je pompe le cours de Terminale (que g pas fait XD)
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 24/04/2020 10:14 | #


Le point de fuite "est" lié à la caméra dans le sens où la caméra regarde toujours vers +X. (Après il y a des conventions différentes, moi j'utilise +X devant, +Y vers le haut et +Z vers la droite, mais il y en a d'autres qui marchent tout aussi bien.)

Lesdites propriétés des matrices sont un poil trop compliquées pour le programme de Terminale ^^"
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 24/04/2020 13:30 | #


Lephenixnoir a écrit :
Lesdites propriétés des matrices sont un poil trop compliquées pour le programme de Terminale ^^"

Certes, mais pas forcément besoin de les comprendre pour les appliquer
Tbit Hors ligne Membre Points: 14 Défis: 0 Message

Citer : Posté le 24/04/2020 21:07 | #


Hey, sorry to bother you, but I'd really like to take part in the competition. I downloaded the emulator, but it seems to run version 03.10.2200 only, so the casioplot module isn't available.
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 24/04/2020 21:36 | #


Hi, you're welcome to participate !

Unfortunately, the emulators have no casioplot update as of today. However, the primitives of casioplot itself can be emulated easily in another library such as pygame or pySDL. I will gladly take participations that use this method and run them on my calculator. I can also provide the boilerplate pygame code for tests on a computer.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tbit Hors ligne Membre Points: 14 Défis: 0 Message

Citer : Posté le 24/04/2020 21:45 | #


Thank you very much! Emulating the plotting library should be easy enough, no idea what performace to expect on the calculator though
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 24/04/2020 22:39 | #


The performance is pretty good by calculator standards but pretty bad by computer standards. Double buffering is used, that's a plus. Filling every pixel of the screen (384x192) takes about 4 seconds with a trivial Python loop, so you can get an idea from there. Real-time animations really need to update from the last frame. For static images this competition doesn't care about performance though I suppose tricks to improve are more than welcome.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Tbit Hors ligne Membre Points: 14 Défis: 0 Message

Citer : Posté le 24/04/2020 23:05 | #


Alright, last question for today, I promise
Does the co-ordinate system for Graph 35+EII go from [0, 0] to [127, 63] or something different (for casioplot.set_pixel)?
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 24/04/2020 23:08 | #


Questions are welcome, no worries!

The coordinate system is x,y with (0,0) being the top-left corner and (127,63) being the bottom-right corner. So just the standard thing for 2D surfaces

By the way, the time to fill the screen I cited earlier is on Graph 90+E, I forgot to mention that. I haven't tested it on Graph 35+E II but from the sheer number of pixels (70 times less) it should be much faster.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/04/2020 09:57 | #


Petite question :
En python est ce qu'un objet None prends plus de place qu'un objet int dans la ram ?
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 25/04/2020 10:09 | #


Généralement non, mais c'est un peu tricky...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/04/2020 10:21 | #


Lephenixnoir a écrit :
mais c'est un peu tricky...

C'est à dire ?
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 25/04/2020 10:28 | #


Les int sont dans le tas, donc la taille d'un int c'est la taille d'un certain objet du tas ; la quantité de mémoire que ça représente dépend de la valeur de l'int, de l'implémentation de malloc(), voire même du fait que si un entier apparaît plusieurs fois la zone de mémoire qui le représente peut être partagée pour éviter de prendre plus de place. Il faut aussi compter les pointeurs qui le référencent.

None est un objet unique et seul les pointeurs qui le référencent prennent de la place.

Ça c'est une idée générale, et si ça se trouve MicroPython ne fait pas comme ça. Il y a plein de détails de ce genre un peu partout qui font que la taille mémoire d'un objet en Python c'est difficile à évaluer. (En C par exemple c'est beaucoup plus simple.)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/04/2020 15:25 | #


Ah ok je vois. Mais ici j'ai le choix entre mettre un 0 ou de mettre un None. Je pense que le None prendra moins de place..
Lephenixnoir Hors ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 25/04/2020 15:41 | #


A priori oui. Après, 0 peut être avantageux parfois car tu n'as pas forcément besoin de le traiter comme un cas particulier (eg. parfois faire +0 est valide et tu n'as pas besoin de tester). Faut voir au cas-par-cas... la vitesse du code sera toujours plus un problème que la mémoire sur cette calto.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 25/04/2020 16:00 | #


Oky. (Je suis pas avec la g90 là, je suis sous Numworks )
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 25/04/2020 18:34 | #


Est ce que on peut installer cette Putain de Maj sur g80
Globalement, coder. Mal, mais coder.
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 25/04/2020 18:35 | #


Malheureusement non. Cette mise à jour est réservée à la Graph 90+E et à la dernière génération de Graph 35.
"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

Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 25/04/2020 18:35 | #


Fais chier

Ajouté le 25/04/2020 à 18:36 :
sinon y a pas qqn qui a fait python graphique sur g85
Globalement, coder. Mal, mais coder.
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 25/04/2020 18:37 | #


Non, tais toi maintenant. Ton spam est inutile, le module ne va pas tomber du ciel.
ouais ouais
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 25/04/2020 18:37 | #


Non, aucun port Python avec un module graphique n'existe sur les anciennes Casio monochromes…
(et édite tes messages s'il te plaît ^^')
"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

Précédente 1, 2, 3, 4, 5, 6, 7 Suivante

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 166 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