π
<-
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 9 times
User avatar
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Level up: 7.8%
 
Posts: 47
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):

Online

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: 29.9%
 
Posts: 39870
Images: 11952
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
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: 7.8%
 
Posts: 47
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):

Online

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: 29.9%
 
Posts: 39870
Images: 11952
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
GitHub: critor

Online

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: 29.9%
 
Posts: 39870
Images: 11952
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti
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: 7.8%
 
Posts: 47
Joined: 16 Jul 2020, 21:34
Gender: Not specified
Calculator(s):


Return to Python

Who is online

Users browsing this forum: No registered users and 0 guests

-
Search
-
Social
-
Featured topics
14€ remboursés par Casio sur l'achat de ta calculatrice Graph 35 d'ici le 30 Octobre 2022
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 5€. Même non fonctionnelle ou ancien modèle. Etiquette de retour fournie, pas de frais de port à payer.
3€ remboursés par Casio sur l'achat de ta calculatrice fx-92 Collège d'ici le 30 Septembre 2022
Programme d'aide à l'équipement des établissements rentrée 2022. Pour tout achat groupé ou recommandation exclusive de calculatrices TI, 1 produit TI offert pour chaque tranche de 30 élèves concernés !
Programme d'aide à l'équipement des établissements rentrée 2022. Pour tout achat groupé ou recommandation même non exclusive de calculatrices Casio, des produits offerts pour chaque classe concernée !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12345678
-
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.
515 utilisateurs:
>491 invités
>19 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)