π
<-
Chat plein-écran
[^]

Jeu microbit et turtle

TI's micropython + modules

Jeu microbit et turtle

Unread postby Fabien59 » 06 Jul 2022, 15:06

Bonjour,

J'ai voulu coder un petit jeu sur TI83 avec les modules turtle et la carte microbit

L'idée est d'utilise les boutons A et B de la carte microbit pour contrôler la montée de bas en haut de l'écran de la tortue en évitant de passer par des disques de couleurs (ces disques sont disposés aléatoirement en début de programme)
Il faut donc effectuer la traversée le plus rapidement possible en touchant le moins de disques possibles (toucher un disque entraîne des pénalités différentes suivant les couleurs touchées). Rien d'extraordinaire dans le principe, je le reconnais :-) Voici une image du résultat (j'ai mis 2 scripts en pièce jointe, seul MB_TURT1 fonctionne) :
Image

Pour détecter le passage par des disques de couleur, j'ai tout d'abord voulu utiliser la fonction get_Pixel() de la bibliothèque ti_image. Mais j'ai constaté un problème de mémoire à l'exécution du script (script MB_TURT2)
J'ai ensuite réalisé une autre version qui utilise la fonction getPixel() de la bibliothèque cachée ti_graphics (script MB_TURT1). Je pensais constater le même problème mais ce n'est pas le cas et le script fonctionne. Pourquoi ?

J'aimerai pourtant pouvoir utiliser la bibliothèque ti_image à la place de ti_graphics. Voyez-vous comment faire ?
Aussi, n'hésitez pas à critiquer le codage, je ne demande qu'à apprendre pour faire mieux. Merci.

Fabien
Attachments
MB_TURT.zip
(1.67 KiB) Downloaded 33 times
User avatar
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 14.1%
 
Posts: 51
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Jeu microbit et turtle

Unread postby critor » 06 Jul 2022, 15:14

Merci pour ce partage de cette création fort originale ! :)

ti_draw et ti_image ne sont en gros que des interfaces destinées à faciliter l'utilisation de ti_graphics.
Si tu sais utiliser directement ti_graphics mieux vaut le faire, ça consommera moins de mémoire.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.5%
 
Posts: 41498
Images: 14695
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Jeu microbit et turtle

Unread postby Fabien59 » 06 Jul 2022, 17:01

Oui .... "originale" et on peut le dire, un peu moche 😂

je fais effectivement le constat de cette différence sur l'utilisation des 2 bibliothèques. Mais pour une utilisations par des élèves, il me serait utile de passer par ti_image.
User avatar
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 14.1%
 
Posts: 51
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Jeu microbit et turtle

Unread postby critor » 06 Jul 2022, 17:38

Excellente raison en effet.
Je regarde.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.5%
 
Posts: 41498
Images: 14695
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Jeu microbit et turtle

Unread postby critor » 06 Jul 2022, 23:01

Je trouve quelques petites optimisations mais n'arrive pas à faire de miracle pour le moment.

Voici une fonction destinée à estimer la consommation de mémoire de tas (heap) généré par l'importation d'une bibliothèque.
Code: Select all
from gc import mem_alloc, mem_free, collect
def modsize(s):
  a1, a2 = mem_alloc(), 0
  module = None
  collect()
  exec('import ' + s + ' as module')
  a2 = mem_alloc()
  module = None
  collect()
  return a2 - a1

def print_modsize(s):
  print(s, modsize(s))

Je ne suis pas parfaitement satisfait de sa fiabilité, c'est pourquoi je ne la mets pas en avant habituellement. Mais elle va quand même permettre de comprendre le problème.

Faisons maintenant :
Code: Select all
print_modsize('ti_graphics')
print_modsize('ti_draw')
print_modsize('ti_image')

Et voici ce que ça donne :
Image
(valeurs variant légèrement)

Comme déjà dit plus haut, ti_graphics a une consommation mémoire très raisonnable, dans les 2.6K.
ti_image par contre qui n'apporte rien de plus que de l'interfaçage pour les appels à ti_graphics, c'est déjà dans les 4.1K.
Et ti_draw est une véritable monstruosité avec 14.6K.

Pour rappel, la capacité heap de la TI-83 Premium CE Edition Python, ce n'est pas tout-à-fait 20K...
Ton exemple illustre bien le pire des cas : tu as besoin de plein de bibliothèques différentes, dont plusieurs des plus grosses.

C'est hélas le gros défaut de la TI-83 Premium CE Edition Python. C'est la solution Python la plus riche en possibilités sur calculatrices (bibliothèque tortue standard, riche bibliothèque graphique, connectivité micro:bit, ...), mais la taille absolument ridicule en comparaison du heap condamne une grande partie des projets imaginables. Une fois les importations effectuées, il ne reste en effet plus beaucoup de place pour coder...
C'est extrêmement frustrant et dommage.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.5%
 
Posts: 41498
Images: 14695
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Jeu microbit et turtle

Unread postby Fabien59 » 07 Jul 2022, 08:32

Bonjour,
Merci beaucoup pour cette analyse détaillée. Les résultats sont hallucinants !

C'est biensûr triste d'avoir un heap limité...mais ce n'est pas ce qui me fait tomber de ma chaise ici.
Car finalement, pour des élèves qui débutent en programmation, ce heap permet d'envisager quelques petites réalisations sympas, comme celle-ci. Mais ici, c'est à condition de passer par ti_graphics et non par l'interface prévu par TI pour accéder facilement aux outils ti_graphics...c'est çà qui me dépasse.

Pourquoi cette interface est-elle si gourmande ? Je ne manquerai pas de faire remonter cette interrogation auprès de TI.

Fabien
User avatar
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 14.1%
 
Posts: 51
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Jeu microbit et turtle

Unread postby Paper Calc Officiel » 28 Oct 2022, 14:46

Fabien59 wrote:Aussi, n'hésitez pas à critiquer le codage, je ne demande qu'à apprendre pour faire mieux. Merci.


t'inquiète,ici,on fait que ça critiquer ;)
Maîtrise de TI BASIC
46%
Maîtrise de Python
22%
Maîtrise de Casio BASIC
12%
User avatar
Paper Calc Officiel
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 62.5%
 
Posts: 63
Images: 0
Joined: 19 Sep 2022, 10:35
Gender: Not specified
Calculator(s):
MyCalcs profile


Return to Python

Who is online

Users browsing this forum: No registered users and 3 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
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.
1429 utilisateurs:
>1386 invités
>38 membres
>5 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)