π
<-
Chat plein-écran
[^]

Jeu microbit et turtle

TI's micropython + modules

Jeu microbit et turtle

Message non lude Fabien59 » 06 Juil 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
Fichiers joints
MB_TURT.zip
(1.67 Kio) Téléchargé 30 fois
Avatar de l’utilisateur
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 14.1%
 
Messages: 51
Inscription: 16 Juil 2020, 21:34
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Jeu microbit et turtle

Message non lude critor » 06 Juil 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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Jeu microbit et turtle

Message non lude Fabien59 » 06 Juil 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.
Avatar de l’utilisateur
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 14.1%
 
Messages: 51
Inscription: 16 Juil 2020, 21:34
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Jeu microbit et turtle

Message non lude critor » 06 Juil 2022, 17:38

Excellente raison en effet.
Je regarde.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Jeu microbit et turtle

Message non lude critor » 06 Juil 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: Tout sélectionner
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: Tout sélectionner
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
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.4%
 
Messages: 41455
Images: 14353
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Jeu microbit et turtle

Message non lude Fabien59 » 07 Juil 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
Avatar de l’utilisateur
Fabien59
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 14.1%
 
Messages: 51
Inscription: 16 Juil 2020, 21:34
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Jeu microbit et turtle

Message non lude Paper Calc Officiel » 28 Oct 2022, 14:46

Fabien59 a écrit: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%
Avatar de l’utilisateur
Paper Calc Officiel
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 62.5%
 
Messages: 63
Images: 0
Inscription: 19 Sep 2022, 10:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile


Retourner vers Python

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
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
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
732 utilisateurs:
>706 invités
>21 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)