π
<-

Jeu Saute Mouton avec images Python IM8C pour 83 Premium CE

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

Jeu Saute Mouton avec images Python IM8C pour 83 Premium CE

Unread postby critor » 09 Jul 2020, 13:27

12617Le nouveau cahier d'activités Projets Python pour l'enseignement SNT en 2nde par Jean-Baptiste Civet et Boris Hanuš est désormais disponible. Nous ne manquerons pas de t'en reparler plus en détails, mais attardons-nous en attendant sur un point précis.

Dans les ressources numériques téléchargeables associées au livre, on trouve enfin une première image, GIRL_150, au nouveau format IM8C géré directement en Python depuis la mise à jour 5.5.1.

Découvrons donc sans plus attendre ce que cela ouvre comme possibilités pour la création de jeux en Python. ;)

Prenons le jeu Saute Mouton sorti en juillet 1983 par J. Michels pour ordinateurs Thomson MO5/TO7 en 320×200 pixels, en s'inspirant de la version sortie par Jean-François Sehan dès 1982 pour ordinateur Sinclair ZX81 dans son livre Etudes pour ZX 81 (tome 1) aux éditions PSI.

Plantons d'abord le décor !
A gauche 3 moutons maigres dans leur bergerie.
A droite 3 moutons gras dans le pâturage.
Il faut rentrer les moutons gras dans la bergerie et faire arriver les moutons maigres au pâturage.
Comment faire ?
Les moutons ne peuvent sauter qu'un seul mouton à la fois and ne peuvent reculer.
Amuse-toi bien !!!


Nous avons donc là de quoi bien optimiser la chose pour le module ti_graphics de la TI-83 Premium CE Edition Python, avec un espace similaire de 320×210 pixels.

Nombre de tracés correspondant en effet à des primitives pouvant être reproduites d'un seul appel :
  • drawPolyLine() pour les lignes brisées
  • fillRect() pour les rectangles pleins
  • fillPolygon() pour les autres formes pleines
  • ...
Et justement, maintenant que nous avons donc un exemple d'image IM8C et pensons en avoir compris le format, nous allons utiliser des images IM8C pour les moutons, avec une couleur transparente à la différence.

12630Et bingo, ça marche, visiblement nous maîtrisons bien le format IM8C, voici ci-contre notre version avec des graphismes en passant nettement améliorés qui transcendent les années 1980. ;)

1er jeu Python graphique pour la TI-83 Premium CE Edition Python, si ce n'est à ce jour le jeu Python aux graphismes les plus travaillés sur calculatrice ! :D

Comme quoi, avec la richesse de son module Python ti_graphics, la mise à jour 5.5.1 permet de réaliser facilement des choses bien plus belles que sur la concurrence à ce jour. ;)

Que dire des performances ? Elles sont tout bonnement extraordinaires : :bj:
  • moins de 9 secondes pour planter le décor initial
  • puis une simple fraction de seconde pour rafraîchir l'affichage à chaque action
Sur la concurrence à ce jour de milieu de gamme où tu serais contraint de faire des boucles de setPixel() faute de mieux, nous te mettons au défi d'obtenir de telles performances. N'est-ce pas, cent20 ? :bat:

Par contre, petit bémol, ce mini-jeu avec son script de 5,77K en mémoire de stockage suffit à quasiment remplir le tas / heap Python de 17K de la TI-83 Premium CE Edition Python 5.5.1. Ajoute quelques print() à notre script et c'est foutu, erreur de mémoire à l'importation.

En complexité, Saute Mouton est donc hélas représentatif des jeux les plus aboutis réalisables à ce jour sur TI-83 Premium CE Edition Python 5.5.1, et nous voyons mal comment une mise à jour logicielle pourrait changer cela alors qu'il s'agit d'une limitation matérielle : le cœur Python de la calculatrice ne dispose que de 32 Kio.

La suppression de la gestion des programmes assembleur dès la version 5.5.1 tout en prétendant qu'il suffisait maintenant d'utiliser le Python pour continuer à créer était hautement prématurée.

Ce n'est pas demain la veille que Oiram CE nous reviendra dans une édition Python pour TI-83 Premium CE Edition Python. :'(

Bref, Saute Bisam... euh pardon Saute Mouton, se lance en appelant sm() pour 2 troupeaux de 3 moutons. Tente donc de trouver comment résoudre le problème en un minimum de coups possible. ;)

C'est intuitif, touches
pour sélectionner ton mouton rose, puis
entrer
pour lui demander d'avancer ou sauter.

Tu pourras ensuite retenter avec sm(n) pour 2 troupeaux de n moutons avec n=4, n=5, etc., pour voir si tu as bien trouvé une stratégie qui marche dans tous les cas.

Enfin, question bonus pour les plus matheux, quelle est la formule du nombre minimal de coups en fonction de n ? ;)

Téléchargements :

Compléments :

Crédits images : Livre Etudes pour ZX 81 - site défunt "ksinfos" de Carl HERVIER
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41976
Images: 15730
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby cent20 » 09 Jul 2020, 14:17

critor wrote:1er jeu Python graphique pour la TI-83 Premium CE Edition Python, si ce n'est à ce jour le jeu Python aux graphismes les plus travaillés sur calculatrice ! :D

Comme quoi, avec la richesse de son module Python ti_graphics, la mise à jour 5.5.1 permet de réaliser facilement des choses bien plus belles que sur la concurrence à ce jour. ;)

Que dire des performances ? Elles sont tout bonnement extraordinaires : :bj:
  • moins de 9 secondes pour planter le décor initial
  • puis une simple fraction de seconde pour rafraîchir l'affichage à chaque action
Sur la concurrence à ce jour de milieu de gamme où tu serais contraint de faire des boucles de setPixel() faute de mieux, nous te mettons au défi d'obtenir de telles performances. N'est-ce pas, cent20 ? :bat:[/success]
[warning]Par contre, petit bémol, ce mini-jeu avec son script de 5,77K en mémoire de stockage suffit à quasiment remplir le tas / heap Python de 17K de la TI-83 Premium CE Edition Python 5.5.1. Ajoute quelques print() à notre script et c'est foutu, erreur de mémoire à l'importation.


9 secondes pour planter le décor initiale, ça me rappelle ma CASIO 9960GT de 1996, je ne trouve pas ça non plus extraordinaire en rapidité et pourtant je ne doute pas un seul instant que ton code est parfaitement optimisé.

Pour porter ça sur NumWorks, il "suffit" de trouver comment réaliser un mouton en pixel-art et la rapidité d’exécution graphique de la machine devrait faire le reste. Il n'y a plus qu'à !

La preuve : https://workshop.numworks.com/python/ju ... nch_screen
2000 rectangles/s d'après ce Benchmark.
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
User avatar
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 48.3%
 
Posts: 1047
Images: 67
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: nsi_xyz

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby jean-baptiste boric » 09 Jul 2020, 18:04

cent20 wrote:Pour porter ça sur NumWorks, il "suffit" de trouver comment réaliser un mouton en pixel-art et la rapidité d’exécution graphique de la machine devrait faire le reste. Il n'y a plus qu'à !

Rajouter un mécanisme pour blitter des images dans la NumWorks serait très facile, le problème c'est le stockage des images. Actuellement on dispose de 32 KiB en RAM alors que la N0110 dispose de plus de 7 MiB de Flash actuellement inutilisés. Il y a une issue dans epsilon à ce propos, mais rétrofitter le stockage en Flash demanderait un effort non négligeable de développement...
User avatar
jean-baptiste boricPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 5.5%
 
Posts: 379
Joined: 21 Dec 2015, 22:22
Gender: Not specified
Calculator(s):
MyCalcs profile
GitHub: boricj

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby critor » 09 Jul 2020, 19:46

cent20 wrote:
critor wrote:Que dire des performances ? Elles sont tout bonnement extraordinaires : :bj:
  • moins de 9 secondes pour planter le décor initial
  • puis une simple fraction de seconde pour rafraîchir l'affichage à chaque action
Sur la concurrence à ce jour de milieu de gamme où tu serais contraint de faire des boucles de setPixel() faute de mieux, nous te mettons au défi d'obtenir de telles performances. N'est-ce pas, cent20 ? :bat:[/success]
[warning]Par contre, petit bémol, ce mini-jeu avec son script de 5,77K en mémoire de stockage suffit à quasiment remplir le tas / heap Python de 17K de la TI-83 Premium CE Edition Python 5.5.1. Ajoute quelques print() à notre script et c'est foutu, erreur de mémoire à l'importation.


9 secondes pour planter le décor initiale, ça me rappelle ma CASIO 9960GT de 1996, je ne trouve pas ça non plus extraordinaire en rapidité et pourtant je ne doute pas un seul instant que ton code est parfaitement optimisé.


Tu compares une machine avec un écran 128x64 pixels sur 2-bits de profondeur (22=4 couleurs), avec une machine avec un écran 320x240 pixels sur 16-bits de profondeur (216=65536 couleurs). Le setPixel() n'a pas du tout la même complexité, sans compter qu'il y a 9,375 fois plus de pixels à traiter pour remplir l'écran.

Donc non, 9 secondes ne me semblent pas ridicule.

Mais ton défi est justement d'afficher sur NumWorks les mêmes graphismes ou mieux, avec des performances similaires ou supérieures. Donc fais-le, et après nous en reparlerons des 9 secondes. :troll:

Sachant de plus que l'affichage de 320x210 pixels utilise ici 554 couleurs différentes, et passe une bonne moitié du temps sur les dégradés du sol et du ciel, dégradés que tu ne peux pas réaliser sur fx-9960GT.
Mais on supprime les dégradés si tu veux, et ton nouveau défi sera donc de réaliser ça sur NumWorks en moins de 5 secondes.

N'hésite pas à mettre autant d'esclaves que tu veux sur ce projet. ;)


cent20 wrote:Pour porter ça sur NumWorks, il "suffit" de trouver comment réaliser un mouton en pixel-art et la rapidité d’exécution graphique de la machine devrait faire le reste. Il n'y a plus qu'à !

Ton défi (et ce n'est a priori pas une mission impossible, j'ai plusieurs pistes), est justement d'afficher les moutons. Je ne pense pas que tu aies des problèmes de tas/heap pour 2 pauvres sprites de moutons monochromatiques.
Mais connaissant les performances du setPixel() NumWorks (pas de double-buffering comme chez Casio), ça va être ça le cœur du problème.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41976
Images: 15730
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby critor » 09 Jul 2020, 21:18

Voilà donc sans les dégradés sur le ciel et le sol, mais ça fait plus années 1980 que années 1990 alors :
Image

Cette fois-ci le décor est planté en moins de 3 secondes, bon courage pour battre ça... :troll:
Image
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41976
Images: 15730
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby Arthur Jacquin » 09 Jul 2020, 22:00

Sans décor, un test de dessin de mouton :

https://workshop.numworks.com/python/ar ... quin/sheep

Sur N0110 cela donne 0,01043 moutons par seconde (les moutons font 16 pixels par 14). Etant donné que c'est du pixel art, toute image aura une vitesse d'affichage similaire (relativement à la taille de l'image évidemment).

Pour diminuer la taille des informations de l'image, j'ai utilisé un codage fortement inspiré de celui pour le sokoban.
User avatar
Arthur Jacquin
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Level up: 56%
 
Posts: 14
Joined: 07 Mar 2020, 21:05
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: MP* Lazaristes
GitHub: arthur-jacquin

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby critor » 09 Jul 2020, 22:01

Joli ! :)
Image
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 47.5%
 
Posts: 41976
Images: 15730
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby Arthur Jacquin » 09 Jul 2020, 22:04

En imaginant un rafraîchissement pour le jeu (annulation du focus pour un mouton et activation pour un autre), ça fait 2 centièmes. Presque immédiat donc, mais la zone rafraîchit n'est pas immense.

Le support des images ou de commandes plus complexes (par exemple fillPolygon()) ne serait pas de trop, d'autant que cela clarifierait les instructions.
User avatar
Arthur Jacquin
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Level up: 56%
 
Posts: 14
Joined: 07 Mar 2020, 21:05
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: MP* Lazaristes
GitHub: arthur-jacquin

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby cent20 » 09 Jul 2020, 22:06

Arthur Jacquin wrote:Le support des images ou de commandes plus complexes (par exemple fillPolygon()) ne serait pas de trop, d'autant que cela clarifierait les instructions.


Je crois que c'est en effet une partie du message de critor.
De toute façon, j'ai trouvé la fonction qui affiche un triangle codé par Léa elle même.
Image
Enseignant de mathématiques et d'informatique. Spécialité NSI : Des projets, des tutos, mais aussi de l'art
Calculatrice NumWorks : Des applications et des jeux, scripts, 📙 Découvrir la NumWorks
User avatar
cent20VIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 48.3%
 
Posts: 1047
Images: 67
Joined: 17 May 2012, 09:49
Location: Avignon
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: nsi_xyz

Re: Jeu Saute Mouton avec images Python IM8C pour 83 Premium

Unread postby Arthur Jacquin » 09 Jul 2020, 22:13

Si même l'équipe NumWorks fait ses propres routines graphiques dans son coin pour pallier la faiblesse de kandinsky on va sûrement aller dans le bon sens !
User avatar
Arthur Jacquin
Niveau 4: MC (Membre Confirmé)
Niveau 4: MC (Membre Confirmé)
Level up: 56%
 
Posts: 14
Joined: 07 Mar 2020, 21:05
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: MP* Lazaristes
GitHub: arthur-jacquin

Next

Return to News TI-z80 (TI-73, 76, 80, 81, 82, 83, 84, 85, 86)

Who is online

Users browsing this forum: No registered users and 7 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
706 utilisateurs:
>676 invités
>23 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)