π
<-
Chat plein-écran
[^]

News 2024
Mai (3)
Avril (16)
Mars (7)
Janvier (20)

News 2023
Octobre (19)
Août (14)
Juillet (13)
Juin (21)
Mai (29)
Avril (24)
Mars (24)
Janvier (24)

News 2022
Octobre (23)
Août (14)
Juillet (15)
Juin (17)
Mai (31)
Avril (27)
Mars (28)
Janvier (34)

News 2021
Octobre (24)
Août (37)
Juillet (50)
Juin (32)
Mai (48)
Avril (61)
Mars (35)
Janvier (34)

News 2020
Octobre (17)
Août (43)
Juillet (43)
Juin (45)
Mai (60)
Avril (78)
Mars (36)
Janvier (39)

News 2019
Octobre (13)
Août (18)
Juillet (23)
Juin (28)
Mai (31)
Avril (26)
Mars (38)
Janvier (37)

News 2018
Octobre (13)
Août (32)
Juillet (23)
Juin (64)
Mai (63)
Avril (45)
Mars (43)
Janvier (45)

News 2017
Octobre (26)
Août (39)
Juillet (52)
Juin (88)
Mai (51)
Avril (43)
Mars (37)
Janvier (33)

News 2016
Octobre (25)
Août (42)
Juillet (34)
Juin (109)
Mai (55)
Avril (34)
Mars (37)
Janvier (24)

News 2015
Octobre (22)
Août (56)
Juillet (22)
Juin (94)
Mai (56)
Avril (32)
Mars (40)
Janvier (21)

News 2014
Octobre (26)
Août (18)
Juillet (23)
Juin (101)
Mai (57)
Avril (59)
Mars (54)
Janvier (31)

News 2013
Octobre (67)
Août (50)
Juillet (43)
Juin (193)
Mai (93)
Avril (102)
Mars (45)
Janvier (50)

News 2012
Octobre (64)
Août (63)
Juillet (53)
Juin (132)
Mai (88)
Avril (73)
Mars (57)
Janvier (58)

News 2011
Octobre (56)
Août (31)
Juillet (27)
Juin (71)
Mai (61)
Avril (32)
Mars (36)
Janvier (24)

News 2010
Octobre (11)
Août (8)
Juillet (14)
Juin (10)
Mai (3)
Avril (3)
Mars (1)

News 2009
Août (3)
Juin (2)
Mai (1)
Avril (2)
Mars (1)

Décapsulage puce ROM TI-80 avec photo zoom x200

Nouveau messagede critor » 08 Mar 2023, 10:43

16733De toute notre aventure dans l'univers des calculatrices graphiques Texas Instruments, la TI-80 a sans doute été de loin l'un des plus grands mystères que nous ayons eu à résoudre.

Lancée pour la rentrée 1995, la TI-80 a constitué pendant 3 années le modèle d'entrée de gamme de Texas Instruments, intermédiaire entre les TI-81 de 1990 et TI-73 de 1998.

16732D'ailleurs l'aspect successeur à la TI-81 était appuyé par la numérotation des versions du logiciel présent en ROM, affichable sur ce modèle en tapant
MODE
ALPHA
LN
. Là où les dernières TI-81 avaient terminé avec des version 2 (V2.00 et V2.0V), les TI-80 ont directement commencé en version 3 (3.0 puis 4.0).

La TI-80 était inférieure à la TI-81 sur plusieurs points majeurs.

Nous pouvons déjà citer la suppression du calcul matriciel. Sans doute que la TI-81 qui en 1990 était la première et seule calculatrice graphique de Texas Instruments, avait été jugée trop avancée en termes de capacités mathématiques et donc constituer une entrave à la déclinaison de toute une gamme de modèles graphiques différents, avec des prix allant de l'entrée au haut de gamme.

16731Mais ce n'est pas tout, nous pouvons également citer l'effondrement de la définition écran. On passait de 96×64 pixels sur la TI-81 à seulement 64×48 pixels sur la TI-80, soit littéralement une division par 2 ! Le pixel de la TI-80 était de plus grossier et générait des affichages visuellement fort désagréables.

16735Mais il n'y avait pas que l'écran. De façon générale, le matériel était très étonnant. Il était organisé selon une architecture en 3 puces, en apparence normale pour l'époque :
  • microcontrôleur Toshiba T6M53A
  • RAM SRM2264 de 8 Kio
  • ROM LH5359 de 64 Kio

Faute de faille logicielle identifiée à l'époque, nos premières tentatives d'extraction du logiciel TI-80 furent matérielles. Nous avions retiré et branché la puce ROM LH5359 d'une TI-80 en version 4.0 sur un programmateur d'EPROM.

Et si l'image ROM récupérée de 64 Kio semblait bonne avec la présence en clair de chaînes système, elle en restait malgré tout incomplète car certains messages système y étaient introuvables.

En réalité il y avait une 2ème ROM cachée de 16 Kio contenant le reste du système, directement intégrée au microcontrôleur Toshiba T6M53A.

Justement, le microcontrôleur Toshiba T6M53A ne renferme même pas de processeur 8 bits Zilog z80, rompant donc avec la TI-81 de 1990, et seule exception de toute la gamme graphique non formelle de Texas Instruments. Selon nos dernières recherches il utiliserait un Toshiba TMC17C, un processeur 4 bits n'ayant strictement rien à voir.

Cela peut paraître étrange à une époque où le système était probablement développé en assembleur. Mais il était encore de taille modeste relativement à ce que nous avons connu depuis, et on peut supposer que le travail de portage du code assembleur z80 vers du TMC17C était encore envisageable à un coût raisonnable, moins que ce que le passage à ce processeur très inférieur permettait d'économiser.
1435Tellement surprenant que ce serait bien de voir un petit peu ce qu'il y a dans ces puces, surtout que la Toshiba T6M53A ne dispose d'aucun datasheet public.

Et pourquoi pas après tous, nous avions déjà voyagé ensemble au coeur de la puce ASIC TI-NS2006A Zevio ayant équipé les premières TI-Nspire monochromes de 2007.
16739Aujourd'hui, sous l'impulsion d'Adriweb qui a souhaité donner cette toute nouvelle dimension à notre mission de documentation du formidable patrimoine éducatif développé par Texas Instruments, nous t'annonçons une collaboration avec Boris Marmontel alias TICS Game sur les réseaux sociaux, à l'origine du site Onidev avec justement toute une section dédiée au décapsulage de puces et à l'imagerie des circuits intégrés qu'elles renferment.

Adriweb lui a ainsi donné fort généreusement quelques calculatrices de sa collection dont une de ses TI-80, et nous avons le plaisir aujourd'hui de te présenter un tout premier résultat.

TICS Game a pu en effet retirer la puce ROM LH5359 de la TI-80, la décapsuler proprement, et prendre une photo de son circuit intégré dont tu trouveras un modeste aperçu ci-contre.
Pense à visiter la page du projet liée ci-dessous pour un zoom jusqu'à ×200 !

Nous attendons tes retours, histoire de savoir si ce genre de chose t'intéresse, et si nous devons intensifier nos efforts sur ce projet.

Source : http://ic.onidev.fr/map/SRM2264LM.html via https://twitter.com/TICS_Game/status/16 ... 6901678105
Lien vers le sujet sur le forum: Décapsulage puce ROM TI-80 avec photo zoom x200 (Commentaires: 3)

Résultats+scripts concours Casio de dessin de Noël 2022

Nouveau messagede critor » 08 Mar 2023, 21:19

Collègien(ne) ou lycéen(ne), jusqu'au 30 janvier dernier Casio t'a permis de participer à son formidable concours de Noël 2022.

Il te suffisait de programmer sur ta calculatrice Casio ou son émulateur ton menu de Noël, avec 2 catégories au choix :
  • catégorie élèves : pour les participations individuelles d'élèves de collège ou lycée
  • catégorie classe : pour les participations collectives de classes de collège ou lycée
Pour réaliser ton dessin, tu pouvais choisir entre les 2 technologies suivantes :
  • calculatrice scientifique fx-92+ Spéciale Collège avec son application Algorithmique t'offrant un langage de tracé à la Scratch/Logo
  • calculatrice graphique Graph 35+E II ou Graph 90+E avec son application Python
Si tu comptes bien, cela donne par combinaison 4 choix différents possibles.

Dans des annonces précédentes nous t'avions partagé une partie des participations Python de cette année, puis annoncé les grands vainqueurs pour les choix élève-collège et classe-lycée.
2 autres vainqueurs nous étaient donc encore inconnus.
Et bien nous allons de suite enfin pouvoir les sortir de l'anonymat, Casio venant enfin d'officialiser les gagnants :
À notre sens le sujet était moins facile cette année, impliquant si compris au sens propre un contenant (table, assiettes, ...) et un contenu (repas).

Voyons de suite comment les gagnants ont compris et illustré la chose.




élève-collège : Orlando - Lycée Ferdinand Buisson, Voiron

Go to top

Le grand vainqueur dans la catégorie élèves sur fx-92+ Spéciale Collège est donc notre cher _Orlando_, élève de Seconde au Lycée Ferdinand Buisson à Voiron.

Il n'a pas attendu le lycée pour se passionner pour cette fantastique petite machine qu'est la fx-92+ Spéciale Collège, lui ayant même conçu des chaîne vidéo et site de tutoriels dédiés dès le Collège !

Déjà grand vainqueur de l'année dernière, _Orlando_ revient donc nous régaler pour un réveillon grand format sur une table de 16, fort bien adaptée aux dimensions de la zone graphique sur fx-92+ Spéciale Collège (192×47 pixels programmables sur un écran de 192×63).

Une limitation de la fx-92+ Spéciale Collège, c'est la taille maximale des scripts fixée à 900 octets. Comment faire donc pour coder à la fois le tracé de la table, des 16 assiettes, ainsi que de leurs 16 contenus tous différents ?...

Et bien si tu regardes son code, tu pourras constater la formidable ingéniosité d'Orlando : le contenu des assiettes n'y est même pas défini ! En effet ce dernier y fait l'objet de déplacements aléatoires de la tortue et arrive malgré tout à y tracer des choses appétissantes. Un menu variant de plus à chaque exécution, félicitations ! :bj:
Code: Tout sélectionner
Aller à x= -80 ; y= -5
Stylo écrit
S'orienter à  270 degrés
Avancer de 15 pixels
Avancer de -15 pixels
S'orienter à  0 degrés
Avancer de 150 pixels
S'orienter à  270 degrés
Avancer de 15 pixels
Avancer de -15 pixels
S'orienter à  53 degrés
Avancer de 25 pixels
S'orienter à  270 degrés
Avancer de 15 pixels
Avancer de -15 pixels
S'orienter à  180 degrés
Avancer de 150 pixels
S'orienter à  233 degrés
Avancer de 25 pixels
S'orienter à  270 degrés
Avancer de 15 pixels
S'orienter à  0 degrés
Avancer de 3 pixels
Tourner de ↺ 90 degrés
Avancer de 12 pixels
S'orienter à  0 degrés
Avancer de 144 pixels
S'orienter à  270 degrés
Avancer de 12 pixels
S'orienter à  0 degrés
Avancer de 3 pixels
S'orienter à  53 degrés
Avancer de 3 pixels
S'orienter à  90 degrés
Avancer de 12 pixels
S'orienter à  53 degrés
Avancer de 18 pixels
S'orienter à  270 degrés
Avancer de 12 pixels
S'orienter à  53 degrés
Avancer de 3 pixels
Stylo relevé
Aller à x= -55 ; y= 6
S'orienter à  0 degrés
0 →A
Répéter 16
  Stylo écrit
  Répéter 2
    Répéter 9
      Avancer de 0,9 pixels
      Tourner de ↺ A degrés
      A+2,25 →A
    ⤴
    Répéter 9
      Avancer de 0,9 pixels
      Tourner de ↺ A degrés
      A-2,25 →A
    ⤴
  ⤴
  Stylo relevé
  S'orienter à  0 degrés
  Avancer de 17 pixels
  Si x>70 Alors
    Aller à x= -65 ; y= -3
  Fin

Aller à x= -53 ; y= 9
Répéter 16
  RanInt#(1;3 →A
  x →B
  y →C
  Si A=1 Alors
    S'orienter à  RanInt#(1;360 degrés
    Avancer de -2 pixels
    Tourner de ↺ 90 degrés
    Avancer de 3 pixels
    Tourner de ↺ -90 degrés
    Répéter 4
      Stylo écrit
      Avancer de 5 pixels
      Avancer de -5 pixels
      Stylo relevé
      Tourner de ↺ -90 degrés
      Avancer de 2 pixels
      Tourner de ↺ 90 degrés
    ⤴
  Fin
  Si A=2 Alors
    Stylo écrit
    Répéter 15
      Aller à x= RanInt#(B-4;B+4 ; y= RanInt#(C-2;C+2
    ⤴
  Fin
  Si A=3 Alors
    Aller à x= x ; y= y-1
    RanInt#(2;8)×,1 →D
    Stylo écrit
    Répéter 18
      Avancer de D pixels
      Tourner de ↺ 20 degrés
    ⤴
  Fin
  Stylo relevé
  S'orienter à  0 degrés
  Aller à x= B+17 ; y= C
  Si x>70 Alors
    Aller à x= -63 ; y= 0
  Fin

Aller à x= 0 ; y= 100
Consulter




classe-collège : 5èmeE - Collège Robert Goupil, Beaugency

Go to top

Ce sont donc les élèves de 5èE du Collège Robert Goupil à Beaugency qui ont produit le meilleur menu sur fx-92+ Spéciale Collège, une dinde ou oie de Noël.

Notons le tracé régulier des différents éléments curvilignes, qui a dû nécessiter pas mal de travail en classe.

Les élèves te mettent littéralement à table avec une assiette vue de profil et ont même la correction de te fournir les ustensiles ! Pose ta calculatrice devant toi sur la table et voici une œuvre littéralement à dévorer... des yeux.

Bravo à vous !




élève-Python : Walid - Lycée Frédéric Mistral, Nîmes

Go to top

Dans la catégorie élèves mains maintenant en langage Python sur Graph 90+E, le grand vainqueur est le mystérieux Walid, élève au Lycée Frédéric Mistral à Nîmes.

Son dessin de Noël tout en pespective est des plus impressionnants. On dirait presque ce que produisaient les moteurs 3D en vue isométrique de certains jeux vidéo des années 1980, et c'est remarquable d'arriver déjà à faire cela à un niveau lycée.

Walid si tu nous lis, nous mourrons d'envie de pouvoir consulter ton code que Casio n'a à ce jour pas encore partagé. :favorite:




classe-Python : Lycée Louis Pasteur, Avignon

Go to top

16378Dans la catégorie classe en langage Python sur Graph 90+E, c'est notre cher cent20, enseignant en Mathématiques et NSI au Lycée Louis Pasteur à Avignon, et déjà grand vainqueur de l'année dernière, qui a une nouvelle fois su mener brillamment son groupe à la victoire ! :bj:

Il a su réinvestir et améliorer sa stratégie gagnante de l'année dernière.
Adam Y. a écrit:En ce jour de Noël est dressée la grand table ;
Friandise et champagne accompagne à l’oubli
Et la bûche enivrant dont le goût est affable
Resplendit sous l’éclat rutilant des bougies.

Tout convive a pris place et festoie du repas ;
Les présents emballés sont légués à autrui.
Enjoués, ces gens rient, réjouis de leurs plats ;
On entend un grelot résonner dans la nuit.


Félicitations donc à tous les disciples en question ayant chacun conçu un élément du dessin final :
  • Adam Y. : chandelle
  • Thomas S. : bouteille de champagne
  • Sylvain B. : bol de chocolats
  • Alexis M. : tasse chocolat chaud
  • Mathis L. : cadeau de Noël emballé
  • Justine C. : Joyeux Noël en texte en pixel art
  • Julien R. : un calisson
  • Ilana R. : couronne de Noël
  • Coline R. : truffe en chocolat
  • Antoine R. : bouteille de vin
  • Anna C. : sucre d'orge
  • Anthony F. : cadeau de noel jaune et rouge
  • Neila S. : chaussette de noel
  • Florian G. : un petit Papa Noël
  • Robin C. : houx de Noël
  • Samuel V. : un bonhomme de neige
  • Merlin C. : un sapin
  • Ilyas R. : une bûche de Noël
  • Raphael C. : bonhomme en pain d'épice
  • Raphaël M. : une horloge digitale qui affiche 20h22 façon Casio F91W mais affiché au mur
  • Sybil L. : bougie
  • Matheo L. : étoile
  • Aurélien B. : étoile
  • Sarah V. : flocon de neige
  • Rayan C. : bonhomme de neige
  • Romeo B. : bonnet de Noël
  • David G. : oreillettes
  • Bilal L. : guirlandes
  • constance A. : un saumon sous forme de poisson
  • Romain L. : chandelier
  • Noah M. : bougies
Code: Tout sélectionner
# Participation au jeu concours de Noël 2022 de Casio

from casioplot import *
from random import randint

"""
Catégorie Classe : Elèves du Lycée Louis Pasteur d'Avignon
Professeurs : Vincent ROBERT, Raphaël CLEMENTE
Elèves : 31 élèves citées dans ce document, sous la forme Prénom N.
https://www.casio-education.fr/actualites/jeu-concours-casio-de-noel/
"""

# Des objets préparés et codés en pixel art
"""
Nous avons découvert lors de l'atelier
CRÉER UN JEU VIDÉO AVEC LES CALCULATRICES GRAPHIQUES de novembre 2022
> https://www.casio-education.fr/contenus/creer-un-jeu-video-avec-les-calculatrices-graphiques/
une technique de codage basé sur du pixel Art. Nous remercions à ce propos les animateurs de cet atelier,
Xavier Andreani (tiplanet.org) et Sebastien Michelland (planet-casio.com) tant pour la qualité de la présentation
que pour l'aide inestimable que cette formation a été pour nous.
Une "orange" codée avec cette technique fut envoyé aux élèves.
vr_orange_color = {
    " " : (255, 255, 255), # transparence
    "#" : (241, 149, 11), # ecorce #f6b26
    "." : (247, 178, 107), # anti crénelage #f1950b
    "A" : (235, 156, 36), # dégradé 1 #eb9c24
    "B" : (237, 176, 41), #dégradé 2 #edb029
    "C" : (241, 194, 50), # centre #f1c232
    }
vr_orange_image = [
    "  .##.  ",
    " ##AA## ",
    ".#ABBA#.",
    "#ABCCBA#",
    "#ABCCBA#",
    ".#ABBA#.",
    " ##AA## ",
    "  .##.  ",]   
Les volontaires eurent donc la mission de choisir un objet, de le coder.
Chaque élève qui a participé a rendu une liste et un dictionnaire python.
Ces deux objets permettent de générer une image.
Un groupe de pilotage de 3 élèves et d'un professeur realisa la composition finale :
- selectionner les images qui seront dans la composition,
- Placer les objets,
- Ecrire une histoire,
- Ajouter des élèments pour améliorer la cohérence de l'ensemble.
Groupe de pilotage : Ilana R., Adam Y, Ilyas R., Vincent ROBERT
"""

# L'histoire par Adam Y.
"""
En ce jour de Noël est dressée la grand table ;
Friandise et champagne accompagne à l’oubli
Et la bûche enivrant dont le goût est affable
Resplendit sous l’éclat rutilant des bougies.

Tout convive a pris place et festoie du repas ;
Les présents emballés sont légués à autrui.
Enjoués, ces gens rient, réjouis de leurs plats ;
On entend un grelot résonner dans la nuit.
"""

# Les images codées par les élèves de ligne 64 à la ligne 1010.

"""==================================
   Une chandelle par Adam Y.
   =================================="""

ay_chandelle_color = {
    " " : (255, 255, 255), # transparence
    "#" : (195, 195, 195), # contour gris
    "." : (230, 230, 230), # anti-crénelage gris
    "A" : (254, 254, 254), # cire blanche
    "B" : (210, 200, 40), # contour jaune flamme
    "C" : (200, 110, 40), # intérieur orange flamme
    "D" : (200, 20, 40), # centre rouge flamme
    "-" : (250,240,80), # anti-crénelage jaune
    }

ay_chandelle_image1 = [
    "  -B-   ",
    "   -B-  ",
    "  -BBB  ",
    "  BCCB  ",
    "  CDDC  ",
    ".##DD#. ",
    "#..##.#.",
    "#.A##A.#",
    ".#.AAA.#",
    " ######.",
    " #AAAA# ",
    " #AAA.# ",
    ".#.AA.# ",
    "#.....#.",
    "#......#",
    ".######.",]

ay_chandelle_image2 = [
    "            ",
    "   -BB-     ",
    "    BBB-    ",
    "    -BBB-   ",
    "   -BBCBB   ",
    "   BCCCCB   ",
    "   CCDDCC   ",
    "  #CDDDDC#",
    " .##DDDD##. ",
    "##..####.## ",
    "##.A####AA##",
    " ##.AAAAA.##",
    " .##.AAA.## ",
    "  ########. ",
    "  ########  ",
    "  ##AAAA##  ",
    " .##AAAA##  ",
    " ##.AAA.##. ",
    "##...AA..## ",
    "##........# ",
    " ##......## ",
    " .########. ",
    "   ######   ",
    "            ",]


"""========================================
   Une bouteille de champagne par Thomas S.
   ========================================"""

ts_bouteille_champagne_color = {
    " " : (255, 255, 255), # transparence
    "#" : (0, 0, 0), # noir
    "." : (255, 180, 0), # doré
    "F" : (2, 51, 7), # vert foncé
    "D" : (2, 80, 7), # dégradé vert
    "V" : (5, 110, 15), # vert
    "A" : (100, 152, 105), # dégradé vert clair pour étiquette
    "Z" : (74, 105, 77), # dégradé vert foncé pour étiquette
    "E" : (195, 195, 195), # Gris/Blanc étiquette
    "J" : (255, 255, 0), # Jaune
    "K" : (239, 206, 37), # Doré clair
    "L" : (255, 190, 0), # Nuance de doré 1
    "M" : (253, 190, 40), # Nuance de doré 2
    "H" : (221, 212, 0) # Nuance du jaune (pour écran)
    }

ts_bouteille_champagne_image = [
    "      ########      ",
    "     ##########     ",
    "    ###KKKKKK###    ",
    "    ##KKKKKKKK##    ",
    "   ###KKLLLLKK###   ",
    "   ##KKLHHHHLKK##   ",
    "   ##KKLHHHHLKK##   ",
    "   ##KKLLLLLLKK##   ",
    "   ##KKLKKKKLKK##   ",
    "   ##KKLKLKMLKK##   ",
    "   ##KKLLLLKLKK##   ",
    "   ##KKLKLKKLKK##   ",
    "   ##KKKLLLLKKK##   ",
    "   ###KKKKKKKK###   ",
    "    ##..KKKK..##    ",
    "    ###..KK..###    ",
    "     ##.KKKK.##     ",
    "     ##......##     ",
    "     ##......##     ",
    "     ##..J..J##     ",
    "     ##.J.J.J##     ",
    "     ##.J..JJ##     ",
    "     ##..J..J##     ",
    "     ##......##     ",
    "     ##..JJJJ##     ",
    "     ##...J..##     ",
    "     ##.JJJ..##     ",
    "     ##......##     ",
    "     ##.JJJJJ##     ",
    "     ##.J.J.J##     ",
    "     ##.J.J.J##     ",
    "     ##.JJJJJ##     ",
    "     ##......##     ",
    "     ##.....J##     ",
    "     ##.JJJJJ##     ",
    "     ##..J..J##     ",
    "     ##......##     ",
    "     ##......##     ",
    "     ###....###     ",
    "     ####..####     ",
    "     ##.####.##     ",
    "     ###.##.###     ",
    "    ##F##..##F##    ",
    "    ##FF####FF##    ",
    "   ##FFVF##FVFF##   ",
    "   ##FVVVFFVVVF##   ",
    "  ##FFVVVVVVVVFF##  ",
    "  ##FVVVVVVVVVVF##  ",
    " ##FFVVVVVVVVVVFF## ",
    " ##FVVVVVVVVVVVVF## ",
    " ##FVVVVVVVVVVVVF## ",
    "##FFVVVVVVVVVVVVFF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##FVVVVVVVVVVVVVVF##",
    "##ZAVVVVVVVVVVVVAZ##",
    "##ZAAAVVVVVVVAAAAZ##",
    "##ZEEAAAAAAAAAEEEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZEEE#EEEEEEEEEEZ##",
    "##ZEE#######EE#EEZ##",
    "##ZEEEEEE##E###EEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZEEEEEEEEE#EEEEZ##",
    "##ZEE##########EEZ##",
    "##ZEEEE##EEEEEEEEZ##",
    "##ZEEEEEEEEEEEEEEZ##",
    "##ZAAEEEEEEEEEEAAZ##",
    "##FVAAAEEEEEAAAAVF##",
    "##FDVVAAAAAAAVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDVVVVVVVVVVVVDF##",
    "##FDDVVVVVVVVVVDDF##",
    "##FDDVVVVVVVVVVDDF##",
    "##FFDVVVVVVVVVVDFF##",
    "##FFDDVVVVVVVVDDFF##",
    "##FFFDDDVVVVDDDFFF##",
    "###FFFFDDDDDDFFFF###",
    " ###FFFFFFFFFFFF### ",
    "  ################  ",
    "    ############    ",
    ]

"""========================================
   Un bol de chocolats par Sylvain B.
   ========================================"""

sb_bol_de_chocolat_color = {
    " " : (255, 255, 255),
    "#" : (225, 225, 225),
    "." : (233, 233, 233),
    "/" : (215, 215, 215),
    "A" : (102, 64, 43),
    "B" : (111, 75, 55),
    "C" : (141, 112, 96),
    }

# L"image codée dans un tableau, ce que vous devrez modifier, y compris le nom.
sb_bol_de_chocolat_image = [
    " BCBBBCC  CBBB C  ",
    ".#AABBAABAAAAAC/#.",
    "..#//AABBABBB//#..",
    " .##//////////##. ",
    " ..##////////##.. ",
    "  ..##//////##..  ",
    "   ..###//###..   ",
    "    ...####... BB ",
    "      ......  CCAB",]


"""==========================================
   Une tasse de chocolat chaud  par Alexis M.
   =========================================="""

am_chocolatchaud_color = {
    " " : (255, 255, 255), # transparence
    "#" : (25, 10, 190), # rouge foncé #9a0200
    "." : (71, 38, 242), # anti crénelage #db5856
    "A" : (100, 10, 242), # rouge pale #ef4026
    "B" : (150, 81, 18), #chocolat #7f5112
    "C" : (216, 220, 214), # fumée grise #d8dcd6
    "O" : (240, 240, 240), # fumée blanche #d8dcd6
    }
am_chocolatchaud_image = [
     "                    ",
     "           O        ",
     "           OO       ",
     "          OOO       ",
     "        OOOOOC      ",
     "       OOOOOCC      ",
     "       OOOOCCC      ",
     "      OOOOCC        ",
     "      OOOCCC        ",
     "     OOOCC     O    ",
     "     OOCC    OOOC   ",
     "     OCC    OOCC    ",
     "      C     OCC     ",
     "            C       ",
     "                    ",
     "  .AAAAAAAAAAA.     ",
     "  ABBBBBBBBBBBA     ",
     " AAABBBBBBBBBA# A#A ",
     " AAAAAAA########  ##",
     " AAAAAAAAAA#####   #",
     " AAAAAAAAAA#####  # ",
     " AAAAAAAAAAA###  #  ",
     " .AAAAAAAAAA### #   ",
     "  AAAAAAAAA#####    ",
     "  AAAAAAAAA###      ",
     "  .AAAAAA####       ",
     "   AAA#######       ",
     "   .AAAAA###        ",
     "                    ",]


"""=======================
   Un cadeau par Mathis L.
   ======================="""

ml_cadeau_color = {
    " " : (255, 255, 255), # transparence
    "B" : (21, 30, 129), # bleu face #151ee5
    "A" : (21, 22, 190), # bleu côté #1516be
    "C" : (51, 71, 222), # haut #3347de
    "D" : (228, 229, 25), # ruban #e4e519
    "E" : (201, 204, 25), # noeud #c9cc19
    }
ml_cadeau_image = [
    "        EE EE       ",
    "       E  E  E      ",
    "       E  E  E      ",
    "       E  E  E      ",
    "BBCCCCCCEDEDECCC    ",
    "BBBBDDDDDEEEDDDDDD  ",
    "BBBDBBCCCCCDDDCCCCCC",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    "BBBDBBBAAAAADDDAAAAA",
    " BBDBBBAAAAADDDAAAAA",
    "   DBBBAAAAADDDAAAAA",
    "     BBAAAAADDDAAAAA",]

"""=======================
   Joyeux Noel par Justine C.
   ======================="""

jc_joyeuxnoel_image = [
    "          RRRR                                                                                             RR                     R R        RB       ",
    "        RR  R                               RRRRR                                              RR         R RB                              RB        ",
    "      RR   RB       RB      R       R      RR   RB     R        R   RR      RB                R  R       R  RB        RB         RRRRR      RB        ",
    "     RB   RB        RRRR   RB      RB     RR     RB   R        RR    RB    RB                R   RB      R  RB        RRRR      RR   RB     RB        ",
    "    RB    RB    RR   R     BB      RB    RB      RB   R        BB     RB   R                      RB    R  RRB    RR   R       RB     RB   RB         ",
    "    RB    RB   RB    RR   RB       RB R  RB      RB  RB       RB       RB R                       RR    R  RBB   RB    RR     RB      RB   RB         ",
    "     RR   RB  RB      RB  RB      RRB  RRR      RB   RB       RB       RRBR                        RB   R  RB   RB      RB R  RB      RB   RB         ",
    "      R   RB  RB      RB  RB      RRB   RBR     R    RB       RB        RB                         RB  R   RB   RB      RB  RRR      RB    RB         ",
    "          RB RB       RB  RB      RRB   RB RRRRR     RB      RRB        RRB                        RB  R   RB  RB       RB   RBR    RR     RB         ",
    "          RB RB       RB  RB     R RB   RB           RB      RRB       R RB                        RB  R   RB  RB       RB   RB RRRRR      RB         ",
    "          RB RB       RB  RB     R RB   RB           RBB     RRB       R  RB                       RB R    RB  RB       RB   RB            RB         ",
    "          RB RB      RB   RB    R  RB    RB      R    RB    R RB      R   RB                       RRRB    RB  RRB     RB    RB            RB         ",
    " RR      RRB  BB     R     B   R   RB    RB     R     RBB  R  RBB    R     RB                      RRR     RRB  RB     R      BB      R    RB         ",
    "RB       RB    RR   RB     RB R   RR      BB   R       RBBB    RB   R       R  R                   RRB      RB   RB   RB      RB     R     RB     R   ",
    "RB      RRB     RRRR        RR   RRRR      RRRR         RR     RB            RR                    RB       RB    RRRR         RB   R      RRB   R    ",
    "R       RB                     RR RB R                          RBR                               RRB       RB                  RRRR        RRB R     ",
    "R       R                    RR  RB   R                         RR                                RB        RB                               RRR      ",
    " R     RB                   R    RB                                                               RB         R                                        ",
    "  R   RR                    R   RB                                                               RB          RB R                                     ",
    "   RRR                       RRRB                                                                RB           RR                                      ",]

jc_joyeuxnoel_color = {
    " " : (255, 255, 255), #transparence
    "R" : (230, 20, 40), #rouge
    "B" : (170, 40, 20), #bordeau
    }

"""=======================
   Un calisson par Julien R.
   ======================="""

jr_calisson_color = {
    " " : (255, 255, 255), # transparence
    "W" : (254,254,211), # blanc #fefefe
    "C" : (247, 178, 107), # crème de calisson #f7b232
    }

jr_calisson_image = [
    "    WWWW    ",
    "  WWWWWWWW  ",
    " WWWWWWWWWW ",
    " CWWWWWWWWC ",
    "  CCWWWWCC  ",
    "    CCCC    ",]

"""=================================
   Une couronne de Noel par Ilana R.
   ================================="""

ir_couronne_color = {
    " " : (255, 255, 255), # transparence
    "V" : (9, 88, 49), # vert foncé
    "v" : (50, 180, 80), # vert clair
    "R" : (255, 35, 30), # rouge foncé
    "r" : (240, 90, 80), # rouge clair
    "O" : (240, 150, 80), # orange
    "B" : (70, 110, 240), # bleu foncé
    "b" : (70, 145, 240), # bleu clair
    "C" : (125, 210, 245) # bleu tres clair
    }

ir_courone_image = [
    "             RRRR        RRRR             ",
    "            RrrrOR      RrOOOR            ",
    "            RrrrrOR    RrrrrOR            ",
    "            RrrrrrORVVRrrrrrOR            ",
    "           VRrrrrrrrRRrrrrrrrRV           ",
    "         VVvvRrrrrrROORrrrrrRvvVV         ",
    "        VvvvvvRrrrRrrOORrrrRvvvvvV        ",
    "       VvvvvvvvRRRRrrrORRRRvvvvvvvV       ",
    "      VvvvvvvvvRrrORrrRrrrRvvvvvvvvV      ",
    "     VvvvvvvvvRrrrrORRrrrrrRvvvvvvvvV     ",
    "    VvvvvvvvvRrrrrrrRRrrrrrORvvvvvvvvV    ",
    "   BBBBvvvvvRrrrrrrrRRrrrrrrORvvvvvvvvV   ",
    "  BbbCCBvvvRRRRRrrrR  RrrrRRRRRvvvvvvvV   ",
    " BbbbbbCBvvV   RrrR    RrrR   VvvvvvvvvV  ",
    "BbbbbbbbCBV    RrR      RrR    VvvvvvvvV  ",
    "BbbbbbbbCBV    RR        RR    VvvvvvvvvV ",
    "BbbbbbbbbB                      VvvBBBBvV ",
    "BbbbbbbbbB                      VvBbbCCBV ",
    " BbbbbbbB                        BbbbbbCB ",
    " VBbbbbBV                       BbbbbbbbCB",
    " VvBBBBvV                       BbbbbbbbCB",
    " VvvvvvvV                       BbbbbbbbbB",
    " VvvvvvvV                       BbbbbbbbbB",
    " VvvRRRRV                        BbbbbbbB ",
    " VvRrrOOR                        VBbbbbBV ",
    " VRrrrrrOR                       VvBBBBvV ",
    " RrrrrrrrOR                      VvvvvvvV ",
    " RrrrrrrrOR                      VvvvvvvV ",
    " RrrrrrrrrR                     VvvvvvvvV ",
    " RrrrrrrrrR                    RRRRvvvvvV ",
    " VRrrrrrrR                    RrrOORvvvvV ",
    "  VRrrrrRvV                  RrrrrrORvvV  ",
    "  VvRRRRvvvV                RrrrrrrrORvV  ",
    "   VvvvvvvvBBBB             RrrrrrrrORV   ",
    "   VvvvvvvBbbCCB          VVRrrrrrrrrRV   ",                 
    "    VvvvvBbbbbbCBVVVVVVVVVvvRrrrrrrrrRV   ",           
    "     VvvBbbbbbbbCBvvvvvvvvvvvRrrrrrrR     ",           
    "      VvBbbbbbbbCBvvvvvvvvvvvvRrrrrR      ",         
    "       VBbbbbbbbbBvvvvvvvvvvvvvRRRR       ",
    "        BbbbbbbbbBvvvvvvvvvvvvvvvV        ",
    "         BbbbbbbBvvvvvvvvvvvvvvVV         ",
    "          BbbbbBvvvvvvvvvvvvvVV           ",
    "           BBBBVVVVVVVVVVVVVV             ", ]

"""========================
   Une truffe par Coline R.
   ========================"""

cr_truffeenchocolat_color = {
    " " : (255, 255, 255), # transparence
    "#" : (139,69,19),
    "." : ((160,82,45)),
    "A" : (170,105,30), # dégradé 1
    "B" : (205,133,63), #dégradé 2
    "C" : ((224,164,96)), # centre
    }

cr_truffeenchocolat_image = [
    "  .##.  ",
    " ##AA## ",
    ".#ABBA#.",
    "#ABCCBA#",
    "#ABCCBA#",
    ".#ABBA#.",
    " ##AA## ",
    "  .##.  ",]

"""===================================
   Une bouteille de vin par Antoine R.
   ==================================="""

ar_vin_color = {
    "T" : (255,255,255),
    "F" : (41,5,19),
    "V" : (84,11,40),
    "C" : (255,171,221),
    "J" : (243,255,130),
    "O" : (232,194,67),
    "M" : (158,93,36),
    "N" : (0,0,0),
    }

ar_vin_image = [
    "TTTTTTTNNNNNNTTTTTTT",
    "TTTTTTTNMJJJNTTTTTTT",
    "TTTTTTTNJMMJNTTTTTTT",
    "TTTTTTTNJJJMNTTTTTTT",
    "TTTTTTTNMJJJNTTTTTTT",
    "TTTTTTTNJMMJNTTTTTTT",
    "TTTTTTTNJJJMNTTTTTTT",
    "TTTTTTTNMJJJNTTTTTTT",
    "TTTTTTTNJMMJNTTTTTTT",
    "TTTTTTTNJJJMNTTTTTTT",
    "TTTTTTTNJJJJNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTTNVVVVNTTTTTTT",
    "TTTTTTNVVVVVVNTTTTTT",
    "TTTTTNVVVVVVVVNTTTTT",
    "TTTTTNVVVVVVVVNTTTTT",
    "TTTTNVVVVVVVVVVNTTTT",
    "TTTNVVVVVVVVVVVVNTTT",
    "TTTNVVVVVVVCVVVVNTTT",
    "TTTNVVVVVVVCVVVVNTTT",
    "TTTNVVVVVVVCCVVVNTTT",
    "TTNVVVVVVVVCCCVVVNTT",
    "TTNVVVVVVVVVCCCVVNTT",
    "TNVVVVVVVVVVCCCVVVNT",
    "TNVVVVVVVVVVCCCCVVNT",
    "TNVVVVVVVVVVVCCCVVNT",
    "TNVVVVVVVVVVVCCCVVNT",
    "NVVVVVVVVVVVVCCCVVVN",
    "NVVVVVVVVVVVVVCCVVVN",
    "NVVVVVVVVVVVVVVCVVVN",
    "NVVVVVVVVVVVVVVCVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NJJJJJJJJJJJJJJJJJJN",
    "NJJJJJMMMMMMMMMMMMMN",
    "NJJJJJJJJJJJJJJJJJJN",
    "NJJMJJJJJJJJJMJJJMJN",
    "NJJMJJJJJJJJJMJMJMJN",
    "NJMMJJJJMJJJJMJMJMJN",
    "NJJMJJJJMMJJJJMJMJJN",
    "NMMMJJJJMMMJJJJJJJJN",
    "NJJMJJJJMMJJMMMMMJJN",
    "NOMMJJJJMJJMJJJJMMMN",
    "NOJMJJJJJJJMJMJJJJJN",
    "NOJMJJJJJJJJMJJJJJJN",
    "NOOJJJJJJJJJJJJJJJJN",
    "NOOOJJMMMMMMMMMMMMMN",
    "NOOOOOOOOJJJJJJJJJJN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NVVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFVVVVVVVVVVVVVVVVVN",
    "NFFVVVVVVVVVVVVVVVVN",
    "NFFFVVVVVVVVVVVVVVVN",
    "NFFFVVVVVVVVVVVVVVVN",
    "NFFFFVVVVVVVVVVVVVVN",
    "NFFFFFVVVVVVVVVVVVVN",
    "NFFFFFVVVVVVVVVVVVVN",
    "NFFFFFFFFFVVVVVVVVVN",
    "NFFFFFFFFFFFVVVVVFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "NFFFFFFFFFFFFFFFFFFN",
    "TNNNNNNNNNNNNNNNNNNT",
    ]

"""===========================
   Un sucre d'orge par Anna C.
   ==========================="""

ac_orge_color={
    "A":(230,190,190),
    ".":(255,255,255),
    "B":(230,20,20),}

ac_orge_image=[
    ".....BBAAA......",
    "....BBBBAAA.....",
    "...AABBBBAAA....",
    "...AAA...BAA....",
    "...BAA...BBA....",
    "...BBA...BBB....",
    "...BBB...BBB....",
    "....BB...ABB....",
    ".........AAB....",
    ".........AAA....",
    ".........BAA....",
    ".........BBA....",
    ".........BBB....",
    ".........BBB....",
    ".........ABB....",
    ".........AAB....",]

"""=======================
   Un cadeau  par Antony F.
   ======================="""

afc_cadeau_color = {
    " " : (255, 255, 255), # transparence
    "R" : (250, 0, 0), # rouge 1 ##fa0000
    "T" : (200, 0, 0), # rouge 2 #c80000
    "Y" : (160, 0, 0), # rouge 3 #a00000
    "U" : (125, 0, 0), # rouge 4 #7d0000
    "I" : (105, 0, 0), # rouge 5 #690000
    "N" : (2, 2, 2), # noir
    "F" : (240, 200, 0), # jaune 1 #f0c800
    "G" : (220, 175, 0), # jaune 2 #dcaf00
    "H" : (200, 160, 0), # jaune 3 #c8a000
    "J" : (180, 145, 0), # jaune 4 #b49100
    }

# L"image codée dans un tableau, ce que vous devrez modifier, y compris le nom.
afc_cadeau_image1 = [
    "  NNN  NNNN ",
    " NJHGNNNGFN ",
    " NNJHGNHFNN ",
    "NNNNNNNNNNNN",
    "NIUYNJHGNTRN",
    "NIUYNHGFNTRN",
    "NNNNNNNNNNNN",
    " NYTNHGFNRN ",
    " NYTNHGFNRN ",
    " NYTNHGFNRN ",
    " NYTNHGFNRN ",
    " NNNNNNNNNN ",]

afc_cadeau_image2 = [
    "    NNNN    NNNN    ",
    "   NNGFNN  NNGFNN   ",
    "   NJHGFNNNNHGGFN   ",
    "   NNJHGFNNJJHHNN   ",
    "    NNNNNNNNNNNN    ",
    "NNNNNNNNNNNNNNNNNNNN",
    "NIUUYYNJHGGFFNYTTRRN",
    "NIUUYYNJHHGFFNYTTRRN",
    "NIUUYYNJJHGGFNYTTRRN",
    "NIUUYYNJJHHGFNYTTRRN",
    "NNNNNNNNNNNNNNNNNNNN",
    " NIUYYNJJHHGFNTTRRN ",
    " NIUYYNJJHHGFNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NIUYYNJJHHGGNTTRRN ",
    " NNNNNNNNNNNNNNNNNN ",]


"""=========================
   Une chausette par Neila S.
   ========================="""

ns_chaussette_color = {
    " " : (255, 255, 255), # transparence
    "C" : (240, 0, 32), #rouge
    "." : (253, 253, 150), # jaune
    "A" : (0, 0, 0), # noir
    "V" : (130, 196, 108), # vert
    }


ns_chaussette_image = [
    "          A    ",
    "        AA.A   ",
    "      AA...A   ",
    "    AA......A  ",
    " AAAA........A  ",
    "A...........A  ",
    " A.......AAAA  ",
    "  A...AAAVVVA  ",
    "  AAAAVVVCVVA  ",
    "   ACVVVVCCCA  ",
    "    AVVCCCCCA  ",
    "     ACCCCCCA  ",
    "     ACCCCVVA  ",
    "      ACCVVVA  ",
    "       AVVVVA  ",
    "       AVVCCCA ",
    "       ACCCCCA ",
    "       ACCCCCCA",
    "       ACCCCCCA",
    "      ACCCCCVA ",
    "AAA AACVVVVVVA ",
    "ACCAAVCCVVVVA  ",
    "ACCCVVCCCCCA   ",
    "ACCCVVCCCCAA   ",
    " ACCVVCCCCA    ",
    " ACCVVCCCA     ",
    "  ACVVCCA      ",
    "   ACVAA       ",
    "    AA         ",
   
    ]

"""===========================
   Un pere noel par Florian G.
   ==========================="""

fg_papanoel_image = [
    "       CCC  ",
    "    CCCAAAC ",
    "   CAAAAACA#",
    "  CAAAAAC ##",
    "  CAAAAAC   ",
    " H#######H  ",
    " HBBBBBBBH  ",
    "  #BDBDB#   ",
    "  ##BBB##   ",
    "   ##G##    ",
    "AAAA###AAAA ",
    "AACAA#AACAA ",
    "##CAEEEAC## ",
    "DDCADDDACDD ",
    " DACDDDCAD  ",
    "  CAACAAC   ",
    "  DEFDEFD   ",
    "  DDDDDDD   ",]


fg_papanoel_color = {
    " " : (255, 255, 255), #transparence
    "#" : (230, 230, 230), #blanc
    "A" : (237, 28, 35), #rouge
    "B" : (225, 198, 153), #beige
    "C" : (153, 0, 48), #2eme rouge
    "D" : (0, 0, 0), #noir
    "E" : (70, 70, 70), #gris fonce
    "F" : (180, 180, 180), #gris clair
    "G" : (253, 110, 158), #rose
    "H" : (255, 195, 14), #jaune
    }

"""====================
   Un houx par Robin C.
   ===================="""

rc_houx_color = {
    " " : (255, 255, 255),
    "R" : (248, 18, 18),
    "G" : (0, 59, 5),
    "A" : (2, 153, 5),
    }

rc_houx_image = [
    "                    GGG  ",
    "  GG              GGAAAG ",
    " GAAG            GAAAAAAG",
    "GAAAAG           GAAAGAAG",
    "GAGGAAG         GAAAGGAAG",
    "GAAGAAAG       GAAAGAAAG ",
    " GAGGAAAG      GAGGAAAAG ",
    " GAAGGAAG  RR GAAGAAAAG  ",
    " GAAAGAAAGRR RAAGAAAAAG  ",
    "  GAAAGAAARRRRAGAAAGGG   ",
    "   GGAAARR RRAAAAGGG     ",
    "     GARR R RRAAGG       ",
    "      GRRRRRR RG         ",
    "        RR RRRR          ",
    "            RR           ",]


"""=============================
   Un bonhomme de neige Samuel V.
   ============================="""

sv_bonhomme_color = {
    " " : (255, 255, 255), # transparence
    "#" : (231, 4, 4), # rouge
    "." : (252, 229, 205), # couleur neige
    "A" : (244, 102, 27), #carotte
    "B" : (91, 15, 0), #bras
    "C" : (0, 0, 0), # pomme de pin
    "D" : (255, 153, 0), # echarpe orange
    "E" : (255, 255, 0), # echarpe jaune
    "F" : (221, 126, 107), # sourrire
    "H" : (120, 63, 4), # bras deux
    }

sv_bonhomme_image = [
    "      #     ",
    "     ###    ",
    "    #####   ",
    "    .....   ",
    "   ...A...  ",
    "   ...A...  ",
    "   .F...F.  ",
    "    .FFF.   ",
    "     ...    ",
    " B  DEDED  B",
    " BH.E.....HB",
    "  ..D.C.... ",
    "  ......... ",
    " .....C.....",
    " ...........",
    " .....C.....",
    "  ......... ",
    "   ...C...  ",
    "    .....   ",
    "     ...    ",]
   

"""======================
   Un sapin par Merlin C.
   ======================"""

mc_sapin_color = {
    " " : (255, 255, 255), # transparence
    "#" : (85, 62, 37), # ecorce #553e25
    "." : (60, 222, 138), # anti crénelage #f1950b
    "A" : (19, 189, 101), # dégradé 1 #13bd65
    "B" : (12, 153, 80), #dégradé 2 #edb029
    "C" : (5, 104, 53), # centre #056835
    }

mc_sapin_image = [
    "     ..     ",
    "    .AA.    ",
    "   .ABBA.   ",
    "     ..     ",
    "    .AA.    ",
    "   .ABBA.   ",
    "  .ABCCBA.  ",
    "    .AA.    ",
    "   .ABBA.   ",
    "  .ABCCBA.  ",
    " .ABCCCCBA. ",
    "   .ABBA.   ",
    "  .ABCCBA.  ",
    " .ABCCCCBA. ",
    ".ABCCCCCCBA.",
    "     ##     ",
    "     ##     ",
    "     ##     ", ]

"""=====================
   Une buche par Ilyas.R
   ====================="""

ir_buche_image = ['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcdefghggijjaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaklemnhhhhnininjaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoppqrsttuvwiiinxyzczxAAaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamBCxDDEFGBHoHIJpAKLbMzNfzKNxxwBaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaaaOPPhnggBAQRSTUHpQpVBWvWWlKlKXXzYllZvvaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagACw0inni1yyDNvJIFFttSkSS222SB3XXXLLLMMbHpBE4aaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagfQo3wxxyxxwXLMMLLMQJUIIIIISCEpUv5LLL3355eE267Vaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaighgwprWxi888xHolDwDDD9<MddQQou2uCvHHIkEvWvEQorSItS4Vaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiighhghnvreDxx111xbzxywDDD999LMMMebpHHHpvEt>GJJHHHWvp2tF247aaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaax3pZ2ku7mAi88888i8iBopAxxx1nxAufyDyDD99<<<LLLMMcMdc5vWQoEe55ceeWWc5pSF44aaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafxW3GsjwxBsplx8i111nZokBAl3vvbbAmkwD<zD<<zXLL<LLcXMLMceHUJbc3LcLccecc5eEG24aaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagnzAeHstv5cWZmNwwwwnfEJJoH55LKffwNf33z<z<<<X<<<<<<XL3vEQuUCv53YMcceccce5eeCF77aaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxffxwwzzqBZAb6GIsJCBvQJpB4Sb53zAffwDDyDzDfHL<<<<zLzXXL3cepJIsqQv55MY3c535555e555vFV4aaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBAAAfwxxxDXpWmxpBtF642GCWBB2SCc3ffzzNzfzzzDzzpQlX<YXYlcvHUUsuobcYKKKzff35c5e33c5555vS6vaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaamiMQGBk2TF226ZsEBBllfNXM5eebpHsFFFtsIJBApuJC5LYXKXzXzzKNYKXXpUEvvvQUJuuGrecllYzXYzlzff355533e5c55WvSVE7aa', 'aaaaaaaaaaNAf3A4ABWZmaaaagnxjZWv6VVVV46EpW3ZB3pQQLLMMceHuSSSI4mZQrSCdMMLYXY3lvHQJJrppoJU>FtUvlYlEUWccfcMMLNKKzXllcZW555WWWB4EvV4aa', 'aaaaaaarAnjgmZ7BBBEJUGGJJqUUC226SIISIF2226EVV47BZBZZZZZBBBZAZAmmfAAfmfmwfAAZHopB5BEQooHppEvWYKzXWG6W3YNAzzNNfwAB33WW5llZZWE6vp4Vaa', 'aaaaaaafwzwfmwmngjwNfwwfwfNKXcevbHQoJJIIIFFFFSIIuuuJurJJISSIUUUUUUUUSIJSS2kEW3cYYKl3ecc3YXYYKYYl3rJB5l3AA3YlYwAW3lBl3333B6I7Bv4Vaa', 'aaaaaawLDXwXXfjnjx111111yyDyyDDzDXXXc5dpCUI2k2Hov55555eeplfVQECHCE4V4SsJHe3333YYXLMelK35XLLXl33llpGWW5l33AlAfAWB3333WBBW2t2VZW76aa', 'aaaaaw<DDcKKlNAmABAwwxyyyywDyDDXXYc5pQopv5355eEQUrHbbeeeffvHpECouIts2pv3YMMLcYcXKKc53M5vLY33l533lWUkB3333lZwAZBZAAllWW662tS4BW4Vaa', 'aaaayy<LeU6BAfmmAjnjAfwyyyxz5oppHve3l33XXl333YM5UkCHHQfjACIII>>tFIvvcMe3YXY5e3l3cl535Yl5553333ZAY3CIWWWBV2SJsFT6VV6V6666V2IG6774aa', 'aaaayMKHt6ZmwmmjAAAAEvcfDDfzzzzfXXX<zYXLXXLXKXL3CGGJWnxvkssskHppIoWc53555355355l5353l5l55BWl3KllX3BIsuk6666666226662rC477ZB6I64Vaa', 'aaaywbutTfh000imfAlA72EYzfXzzXXzXXXXYLXXYXXXLM3BHsEniWQQHvQHp5e5JJ5bWW5555lc5e3535555l333ZZlAX35AAWVV6H6EV6I2ABB466Hvv5vvBB4V2V4aa', 'aaaywoFtm0PPPPPPjAfmApVvLzXXXLKlXXXYLLXY33BBWECJrmifpveeH5eQHee5CUeeWe3llAl3c535ee3555333Yl33AZB4EEV62rWvWW2SZZBBAmABwBWBvW7746Vaa', 'aaa1wrtA00000h0PPn3AAWVEe3cY3c3cLLYYY35borsItrC4nnvpeeeLecWHVp5WCGE5l3lKKKK33lY5cYl3l5llYlYZECC6222HvBZ3ZZW4IBBB3vZBZAWBBBv772S2aa', 'aawDQ26hPP000PhhPPnjBA44pvc3LLc53vCSI>GJVWWWvBjhfEW5e5edepWeB555VtClYZwZ3l3LYYXlBB3535BWvV66kCk2S2WZZZZWWvv4t7BZBBBBB7vvEWBW7V26aa', 'aiDzpFjPPPPP00ihhPPjmwAVWp5535v2TtIuEW5lleeed5AWpc3eee3AA5f3AfN3CFIb33l533lBBZBZW44EJrkrruurHv46t7BBWBv5WWZ7tHBBWZWWWvvvWEvE4626aa', 'azydU2hPPP0ggg0iihPPmAfW4VpEoItICv55ee5czLLLKMevvvbe33l3lAAflLAWoFFkvvvWBvBvvECruS22226ukpWWWvv7IBBBBvvWvWpBTHBWvWvWvvWpEpCCVS62aa', 'ayDeGBPPPPP000iginhPiAfB6VktTTIVceeeee3cLXLMLe5Wpp55WWW355l3lvQkk2IIttISSuuurrkkrk62267HWBWWZlZZIBlvvWvvvZB7FVWWWvvpEEEEEEHCu262aa', 'axDeImOOPPP00ihiiji0PjfAV46TSTspbbvvveecMLXLXz555vvWvvW5ZBAZv22kkHE6rr2rrkr26vWpppvWWV4W4vvWvHE4IVpvppb5vpE6UWW5vWvbECCCCr2I2626aa', 'aDy3UiPOPPPhh0gingfgPAwZ74V2SuJvvEpbev3lLlLlXYAYBWEpvEWvpEkuSSrHppvpvvVHEstVWZZvpvBZWWWWWpWvWvvVF44vvCW5HWvIEvvvpHCCH6rrSIIS6SS6aa', 'axDeShOOPOPPPnggixgjhAfwZ6V22uJHppbvvdMzXLLZlzZpUIFtIIISSSSST2vWZWWAWvWvWEt6BAZvvvBBWlB35WWBpWWWs662SI6vWCISCQor6SJUsIFII22SSSS2aa', 'afDdr0OOOPPhh0nixgnfgiAwf6V62SI6EEvEppecY3lWl32SSS22646662TS6WlAflAfAlAdWBSCWA3BvBBfl35W53WBBWW7STI2rEusGIC6EpESIFIJ2SSTTS22uSSaaa', 'ayDeCPOOPPP00ghwixxnx0BAmVVV2SFFS2ISssSurHWvCrSTCBvWWWppVEpv5Zlfl3lfAll5E4SrW5WWWvWWWW5Wvvvv5WvutIEpQH4StI2JJIIsCHQoSISTS6uustaaaa', 'ayDbVPOOOPPPhhigmxgi3gmww44422SrJrrE66rS2TSSSTSEllA335HpBvbcWe33lKXKAlBBW4SEZ5vW55WWWpWWWWHHpHStI2CQQQCIFIrSukHHkkuSsssIIu2uuIaaaa', 'ayDo6POOPPP0hhhxxijwmngwf4VVS24EEvEvVVVV444EuFHZYXlN3vEVvWvvWWH5fflA3WvpeVT4WBvp5vppvbebbvHE2I>rkkkpHE2tIuruSJuJIISIIISSSrSSTaaaaa', 'a1zJrPOOPP0g0hgiimAwnfhfxZ6VrEvEEEHpHpppp5vpE>WAXA55AZW4EpvvWvEpvvZWvHEZWVFE4vvppbEHHpEErSSt>srkppoJJUSIoHQH6SSSTItItIuSIttaaaaaaa', 'aDyeu0POPPP0hhgixljni3hnfZ6St2vECEE4WppvpvvpCFE333WZlvpHvppppvpv5vvvZWvp42F2V762WWV2STFTFIS2CCkruoooC2ISoQqUIIsSSSIFFFTTTtaaaaaaaa', 'ayDXUgPPPP00hggwxfnxnWgxxAVrFSV4EEE44v4VVV6HrtoWbWpe33W4HWAWB33lAWZWlceW4ITttttTIsttGrrCHrurJokVkkoouTISJoQ2SoHHCstTTTSTaaaaaaaaaa', 'awDXtnPPPP0gghhxnxxxmBinnl62FSHVEEQEvvvEEHHpEFHev65plcWB3XfXzXY3EuoW5e7uIsrkkCkkrTFICkuJJoJokouuJrJ2sI22roJkoouttTFaaaaaaaaaaaaaaa', 'awDD>mPPPP00hhhixnfwAZwixWV2FSkpEECEEHEEHHpCCts5vHlwDDNXYYYY5CrurCrIItRHdppQQQHr2TT2ouuooJJJuJJJrJJTtSSSITFFtFFFaaaaaaaaaaaaaaaaaa', 'aaDyCB000P0hhhgixnAfAZwgxAVSTsk4EEEECHEHvHHCrFVZvvXlzwcpHQ2uS6SV6HJoHHQEvHroooJkutSCuuUrrrrrr2JSSSFFTTFFFFFTIaaaaaaaaaaaaaaaaaaaaa', 'aaDzoH80h000ghgnwnAAAZfgxf6STSuHCCHEHHEEEHHHrFuJQEQkur2SIIIS4BVs>HdbHHkJJUr2u2k2rtrruSJJJJSJSSSSTFFFFtTTTTaaaaaaaaaaaaaaaaaaaaaaaa', 'aawDbJi8h000hhijxxfAAZAgxwV6TISEHHoHQHHECQbCrFHbp4pkIUIFFFttUGtFIuJJusuuHkHHJooouIrSuISSUIISSSSSFTFFTTaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aawDzJm888hhhgizxxwffZNhxwV6IIS6662rCHEHHEQCkTuoSstFtIIITTruJJSFISrJouoJJJUJUSSSSISSsTTTsIuSSSITFTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaazDov888hhnnifwNnwwWNgwx7V2I2kCrrCoQQHHk2kSTFFFFFJkCkJIIJJoorIIuUJkrSUJJJJSSSSITSSSSTTTTSTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaawDdJi888h8iAiflxwnHfiww72SI2222r22kkHkSSSttsUJoQCHQuuIIkoQQrtIJuusIssssSSsISIFTSITFFFFFTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaDwol8888inifxx3xnQxnwwVTTT22C2rCSrSSItFsuoHQQQoJuoCITIuSITFFIUUSSrrSSsIIIIFFFFFFFFFTFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaDDeQg888ixxjfxfmwbnxxwESTSS6rsUGtttFFS2kkouussSCQuITTTssFTFI2J2SJGIISItttFFFTTTFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaafzNHm888gnwwnlnnv3gxfw6SSIt>USSSSSSSSoJrSsIIsSsUIITTTTsSuFFssIsuJIFFFFFTTFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaf<DYQi8888iwfnwjpfixzl222ItIS222uJJrrrJJuHHrr2IIIIISurS2TFFSsII>FFTTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaD9Nvlh88giixwivlnxxfNC22IISSSr2JJJJJkCHoooUItIIsuourJttFFFFttFTTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaD<y3ef88hiihn5Awgwmww462IIuSSJJurruuoosIIFTFTIIsIIIItFFFFFTTTTFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaa<DLfdxg8nxfzwmgfxxwn76VSSSuuuuksSSSIIIIITTISSSItttFFFTTTFTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaz<ywcfhinxfngfffwxwCTSIuuSIIISIIIIttttttFF>tFFtFTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaazDDflfihghgZmZxzwfFFFukRuISItsItttttttFFFFTTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaayywxww3BWZwmfAXw5FFtsRHHkRussItItttttTTTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaNffwAjjAmflwXzJTFITsJs>IIt>tttFFTTTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaawwfwAffmffAEtFFFtTIISsttFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaa3ZAffKzfAJFFIsIIIFFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaAABwvIFFkuSIIIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa']
ir_buche_color = {'a': (255, 255, 255), 'b': (96, 65, 58), 'c': (114, 81, 73), 'd': (102, 70, 56), 'e': (105, 73, 65), 'f': (150, 121, 107), 'g': (205, 182, 170), 'h': (215, 193, 180), 'i': (197, 172, 159), 'j': (167, 146, 138), 'k': (72, 49, 49), 'l': (129, 102, 90), 'm': (148, 127, 119), 'n': (187, 160, 147), 'o': (73, 49, 44), 'p': (92, 67, 60), 'q': (62, 38, 28), 'r': (68, 51, 44), 's': (54, 33, 34), 't': (40, 27, 24), 'u': (63, 41, 41), 'v': (99, 75, 67), 'w': (160, 131, 117), 'x': (173, 144, 130), 'y': (180, 141, 117), 'z': (143, 110, 92), 'A': (137, 112, 102), 'B': (116, 93, 87), 'C': (78, 60, 53), 'D': (163, 123, 100), 'E': (87, 68, 60), 'F': (38, 27, 28), 'G': (44, 26, 20), 'H': (82, 58, 54), 'I': (50, 35, 33), 'J': (62, 42, 36), 'K': (134, 99, 90), 'L': (125, 91, 75), 'M': (115, 82, 67), 'N': (144, 108, 99), 'O': (237, 223, 212), 'P': (232, 215, 204), 'Q': (80, 54, 44), 'R': (66, 38, 40), 'S': (58, 43, 41), 'T': (47, 35, 37), 'U': (54, 35, 29), 'V': (85, 68, 66), 'W': (107, 84, 77), 'X': (133, 100, 84), 'Y': (125, 91, 82), 'Z': (125, 103, 96), '0': (223, 204, 191), '1': (196, 162, 137), '2': (67, 51, 49), '3': (120, 93, 81), '4': (94, 76, 74), '5': (110, 84, 72), '6': (76, 60, 58), '7': (102, 85, 82), '8': (214, 186, 165), '9': (147, 103, 79), '<': (144, 101, 84), '>': (43, 23, 24)}

"""==============================
   Un pain d'epice par Raphael C.
   =============================="""

rc_pdepice_color = {
    " " : (255, 255, 255), # transparence
    "#" : (196, 119, 2), # orange exterieur #c47702
    "." : (255, 174, 0), # orange interieur #ffae00
    "A" : (10, 8, 10), # noir   #0a080a
    "B" : (236, 83, 89), #bouton rouge #ec5359
    "C" : (0, 153, 36), # bouton vert #009924
    "D" : (255, 144, 222), #couleur rose #009924
    "E" : (254, 254, 254), #blanc #fefefe
    "F" : (180, 27, 27), #rouge du chapeau #b41b1b
    }
rc_pdepice_image = [
    "        FFF        ",
    "       FFFFF       ",
    "      FFFFFFF      ",
    "     FF#####FF     ",
    "    FF#.....#FF    ",
    "   FF#.......#FFAA ",
    "    #.........#EE A",
    "    #..A...A..#AEEEA",
    "   #...........#AEA ",
    "   #..D.....D..#EAE  ",
    "    #..E...E..#     ",
    "    #...EEE...#     ",
    "     #.......#      ",
    "      #.....#      ",
    "       #...#     ",
    " ######.....###### ",
    "#..E...........E..#",
    "#.E.............E.#",
    "#..E.....B.....E..#",
    " ######.....###### ",
    "      #.....#      ",
    "      #..C..#      ",
    "      #.....#      ",
    "      #.....#      ",
    "      #..B..#      ",
    "      #.....#      ",
    "      #.....#      ",
    "     #.......#     ",
    "     #.......#     ",
    "    #.........#    ",
    "   ##.........##    ",
    "  #......#......# ",
    "  #EE...# #...EE# ",
    "  #.EE.#   #.EE.# ",
    "  #..EE#   #EE..# ",
    "  #....#   #....# ",
    "  #....#   #....# ",
    "  #....#   #....# ",
    "   ####     ####  ",]


"""========================================================
   Une horloge facon casion qui affiche 20:22 par Raphael M.
   ========================================================"""
#20:22, clin d'oeil à 2022 ! :-)

rm_horlogecasio_color={
    "#": (13, 13 ,13), # Noir
    "L": (42, 42, 42), # Lettre du 42
    "-": (62, 90, 147), # Bleu contour
    ".": (164, 169, 153), # .ris pour le fond
    "F": (104, 104, 96), # .ris foncé
    "C": (165, 171, 162), # .ris clair
    "B": (227, 225, 233), # Blanc
    "N": (250,)*3,
    " ": (255, 255, 255), # Transparent
    }
rm_horlogecasio_image = [
    "  #################################   ",
    " ###################################  ",
    "CC##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##CC ",
    ".F##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##F. ",
    " ###BB.........................BB###  ",
    "  ##BB.LLL..LLL.....LLL..LLL...BB##   ",
    "  ##BB...L..L.L..L....L....L...BB##   ",
    "  ##BB..L...L.L......L....L....BB##   ",
    "  ##BB..LLL.LLL..L...LLL..LLLL.BB##   ",
    "   #BB.........................BB#    ",
    "   #BB#########################BB##    ",
    "  ##BB###NNN#NNN#NN##N##NNNN###BB##   ",
    "  ##BB###N###N#N#N###N##N##N###BB##   ",
    "  ##BB###N###NNN##N##N##N##N###BB##   ",
    "  ##BB###NNN#N#N#NN##N##NNNN###BB##   ",
    " ###BB#########################BB###  ",
    "CC##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##CC ",
    ".F##BBBBBBBBBBBBBBBBBBBBBBBBBBBBB##F. ",
    " ###################################  ",
    "  #################################   "]


"""=========================
   Une lanterne par Sybil L.
   ========================="""

sl_lanterne_color = {
    " " : (255, 255, 255), # transparence
    "a" : (111, 102, 102), # acier de la lanterne #6f6666
    "s" : (71, 71, 71), # fond de la lanterne #474747
    "d" : (255, 218, 172), # dégradé 1 de la bougie #ffdaac
    "D" : (255, 199, 154), #dégradé 2 de la bougie #ffc79a
    "b" : (255, 181, 121), # dégradé 3 de la bougie #ffb579
    "t" : (40, 37, 37), # tige bougie #282525
    "f" : (213, 59, 0), # dégradé bas de la flamme #d53b00
    "F" : (193, 53, 0), # dégradé coté clair de la flamme #c13500
    "!" : (242, 114, 8), # orange centre bas de la flamme #f27208
    ":" : (230, 109, 10), # orange centre haut de la flamme #e66d0a
    "h" : (167, 46, 0), # dégradé haut de la flamme #a72e00
    "?" : (242, 250, 251), # vitre lanterne #f2fafb
   
    }

sl_lanterne_image = [
    "  aaaaaaaa",
    " aa     aa",
    "aaaaaaaa a",
    "a a h  a a",
    "a ah:h a a",
    "a aF!F a a",
    "a a f  a a",
    "a adtb a a",
    "a adDb a a",
    "a adDb a a",
    "a adDb a a",
    "a adDb a a",
    "a adDb a a",
    "a sdDbsasa",
    "assdDbsaa ",
    "aaaaaaaa  ",]

# Participations des élèves : Listing des créations
"""
Parfois les élèves ont rendu un codage non conforme,
Parfois l'image proposée ne s'intégrait pas de manière harmonieuse,
Ils ont participé leur production n'a juste pas été sélectionnée pour le dessin final.
==== Liste de tous les élèves participants, image sélectionnée ou pas  ===
1 Raphaël M Une horloge digitale qui affiche 20h22 façon Casio F91W mais affiché au mur
2 Matheo L étoile
3 Alexis M tasse chocolat chaud
4 Aurélien B étoile
5 Sarah V flocon de neige
6 Adam Y Chandelle
7 Rayan C bonhomme de neige
8 Anthony F cadeau de noel jaune et rouge
9 Florian G Un petit papa noel
10 Neila S chaussette de noel
11 Merlin C Un sapin
12 Justine C Joyeux Noël en texte en PixelArt
13 Romeo B bonnet de noel
14 Ilyas R une buche de Noël
15 Ilana R couronne de noel
16 Robin C Houx de noël
17 Raphael C bonhomme en pain d'épice
18 Mathis L cadeau de noël emballé
19 Sybil L bougie
20 Samuel V un bonhomme de neige
21 Antoine R bouteille de vin
22 David G  oreillettes
23 Julien R un calisson
24 Bilal L Guirlandes
25 constance A un saumon sous forme de poisson
26 Anna C sucre d'orge
27 Thomas S Bouteille de champagne
28 Sylvain B bol de chocolats
29 Romain L Chandelier
30 Noah M Bougies
31 Coline R Truffe en chocolat
+ 2 enseignants
==============================
"""

# Dessin de l'image sur une Casio Graph 90+E
def trace_casio(clr: dict, img: list, x_pos: int, y_pos: int, size: int = 1):
    img = [list(i) for i in img]
    for i in range(len(img)):
        show_screen()
        for j in range(len(img[i])):
            if clr[img[i][j]] != (255, 255, 255):
                for k in range(size):
                    for o in range(size):
                        set_pixel(x_pos+5+j*size+o, y_pos+5+i*size+k, clr[img[i][j]])

# Construction du mur, effet pixel alétoire 4x4
for x in range(0,385):
    for y in range(0,43):
        r,g,b = randint(250,255), randint(222,242), randint(210,242)
        set_pixel(2*x, 2*y, (r,g,b))
        set_pixel(2*x+1, 2*y, (r,g,b))
        set_pixel(2*x, 2*y+1, (r,g,b))
        set_pixel(2*x+1, 2*y+1, (r,g,b))
           

trace_casio(afc_cadeau_color, afc_cadeau_image1,263,67)
trace_casio(afc_cadeau_color, afc_cadeau_image2,237,62)
trace_casio(ml_cadeau_color, ml_cadeau_image,247,60)
trace_casio(ir_couronne_color, ir_courone_image, 5, 12)
trace_casio(rm_horlogecasio_color, rm_horlogecasio_image,340,55)
trace_casio(ns_chaussette_color, ns_chaussette_image,350,20)

# Construction de la table, effet pixel aléatoire + degradé.
for x in range(0,385):
    for y in range(82,193):
        c = 82+y//2+randint(0,8)
        set_pixel(x, y, (c,c-95,c-130))

trace_casio(ar_vin_color, ar_vin_image,54,22)
trace_casio(ar_vin_color, ar_vin_image,70,55)
trace_casio(ts_bouteille_champagne_color, ts_bouteille_champagne_image,45,45)
trace_casio(sb_bol_de_chocolat_color, sb_bol_de_chocolat_image, 112, 75)
trace_casio(cr_truffeenchocolat_color, cr_truffeenchocolat_image, 120,81)
trace_casio(cr_truffeenchocolat_color, cr_truffeenchocolat_image, 125,78)
trace_casio(cr_truffeenchocolat_color, cr_truffeenchocolat_image, 123,83)
trace_casio(ay_chandelle_color, ay_chandelle_image1, 20, 85)
trace_casio(ay_chandelle_color, ay_chandelle_image1, 134, 103)
trace_casio(ay_chandelle_color, ay_chandelle_image1, 225, 67)
trace_casio(ay_chandelle_color, ay_chandelle_image2, 79, 160)
trace_casio(ay_chandelle_color, ay_chandelle_image2, 310, 90)
trace_casio(am_chocolatchaud_color, am_chocolatchaud_image,10,127 ,2)
trace_casio(am_chocolatchaud_color, am_chocolatchaud_image,340,115)
trace_casio(rc_pdepice_color, rc_pdepice_image, 116, 127)
trace_casio(jr_calisson_color, jr_calisson_image,260,174)
trace_casio(jr_calisson_color, jr_calisson_image,272,173)
trace_casio(jr_calisson_color, jr_calisson_image,284,175)
trace_casio(jr_calisson_color, jr_calisson_image,265,167)
trace_casio(jr_calisson_color, jr_calisson_image,276,168)
trace_casio(jr_calisson_color, jr_calisson_image,271,162)
trace_casio(ac_orge_color, ac_orge_image,320,155)

# Buche et accessoires
trace_casio(ir_buche_color, ir_buche_image, 171, 100)
trace_casio(rc_houx_color, rc_houx_image, 230, 105)
trace_casio(mc_sapin_color, mc_sapin_image, 215, 107)
trace_casio(mc_sapin_color, mc_sapin_image, 255, 103)
trace_casio(fg_papanoel_color, fg_papanoel_image, 200, 110)
trace_casio(sv_bonhomme_color, sv_bonhomme_image, 270, 95)
trace_casio(sl_lanterne_color, sl_lanterne_image, 177, 70,2)

trace_casio(jc_joyeuxnoel_color, jc_joyeuxnoel_image, 50, 15,2)

# Affichage final de l'image
show_screen()

"""
   ####     ##      #####    ####     #####             ####     ####     ####     ####
  ##  ##   ####    ##   ##    ##     ##   ##           ##  ##   ##  ##   ##  ##   ##  ##
##       ##  ##   #          ##     ##   ##               ##   ##  ##       ##       ##
##       ##  ##    #####     ##     ##   ##             ###    ##  ##     ###      ###
##       ######        ##    ##     ##   ##            ##      ##  ##    ##       ##
  ##  ##  ##  ##   ##   ##    ##     ##   ##           ##  ##   ##  ##   ##  ##   ##  ##
   ####   ##  ##    #####    ####     #####            ######    ####    ######   ######

   ####    #####   ##   ##    ####    #####   ##   ##  ######    #####            ##   ##   #####   #######  ####
  ##  ##  ##   ##  ###  ##   ##  ##  ##   ##  ##   ##   ##  ##  ##   ##           ###  ##  ##   ##   ##   #   ##
##       ##   ##  #### ##  ##       ##   ##  ##   ##   ##  ##  #                 #### ##  ##   ##   ## #     ##
##       ##   ##  ## ####  ##       ##   ##  ##   ##   #####    #####            ## ####  ##   ##   ####     ##
##       ##   ##  ##  ###  ##       ##   ##  ##   ##   ## ##        ##           ##  ###  ##   ##   ## #     ##   #
  ##  ##  ##   ##  ##   ##   ##  ##  ##   ##  ##   ##   ##  ##  ##   ##           ##   ##  ##   ##   ##   #   ##  ##
   ####    #####   ##   ##    ####    #####    #####   #### ##   #####            ##   ##   #####   #######  #######
"""
# Lycée Louis Pasteur, concours de Noël 2022 de Casio.
Télécharger




Félicitations à tous et toutes, vos réalisations sont très impressionnantes, vous avez su brillamment répondre au sujet ! :bj:

Source : https://www.casio-education.fr/actualit ... noel-2022/
Lien vers le sujet sur le forum: Résultats+scripts concours Casio de dessin de Noël 2022 (Commentaires: 2)

Décapsulage ASIC+CPU+Flash de la TI-83 Plus à 4 puces '99-01

Nouveau messagede critor » 09 Mar 2023, 16:11

16736Comme nous venons encore de le voir, les calculatrices graphiques au sièce dernier étaient construites autour d'une architecture à 3 puces :
  • mémoire ROM
  • mémoire RAM
  • processeur
4364De nos jours ce n'est plus le cas. Le matériel des calculatrices graphiques s'articule désormais autour de 2 puces :
  • mémoire Flash-ROM
  • ASIC ou microcontrôleur
Cette dernière puce intègre à la fois le processeur et la RAM. Par exemple chez Texas Instruments il s'agit un ASIC.

Restons chez Texas Instruments et concentrons-nous sur la TI-83 Plus sortie en 1999, succédant à la TI-83 avec son architecture à 3 puces sans ASIC, et toujours commercialisée aujourd'hui. Un excellent choix pour illustrer cette transition.

Habituellement nous parlons de révisions matérielles (numérotés alphabétiquement à partir de la lettre A), et indiquées chez Texas Instruments au dos des calculatrices dans le timbre à date accompagnant le numéro de série.

Mais ici il nous serait peu clair de te référer la chose en ce sens, car la numérotation des révisions TI-83 Plus a été plusieurs mois réinitialisée, lors de certains changements d'usine de production, et en prime il y a eu plusieurs usines produisant le modèle en parallèle, et leurs numérotations même lorsqu'identiques ne correspondaient pas au même matériel.

Pour simplifier, disons que ce sont les machines assemblées à partir de 2002 qui n'utilisent plus que 2 puces.
Et bien justement, intéressons-nous à cette transition. Jusqu'en 2001 nous avons eu droit à des TI-83 Plus articulées pour leur part autour de 4 puces :
  • mémoire Flash-ROM de 512 Kio : une puce 29F400TC-90PFTN de chez Fujitsu
  • mémoire RAM de 32 Kio : une puce A62W5308
  • processeur 8 bits z80 : une puce Z84C0008 de chez Zilog
  • ASIC : une puce TI-REF 9815455 de chez Texas Instruments
Plus précisément il s'agit d'une des premières révisions matérielles, donc D ou antérieur, selon la numérotation de l'usine I (Taiwan), assemblée entre janvier 1999 et mai 2001.

Cette révision matérielle constitue une véritable énigme dans toute la série des TI-83 Plus ; à quoi peut donc bien servir l'ASIC si les processeurs et RAM n'y sont pas intégrés ?
Et bien Travis Goodspeed se propose généreusement de te décapsuler les puces et explorer leur circuit intégré.

Alors c'est parti !

16746Commençons par la puce Flash-ROM de 512 Kio, la 29F400TC-90PFTN de chez Fujitsu.

Tu pourras noter dans la photographie du circuit intégré ci-contre :
  • la date de conception dans le coin en bas à gauche : 1997, cohérent avec une utilisation dans les premières TI-83 Plus de 1999
  • une référence dans le coin en bas à droite : 98965A
  • en haut au centre le logo Fujitsu comme indiqué sur le boîtier de la puce, mais également ô surprise le logo AMD

Source : https://twitter.com/travisgoodspeed/sta ... 5117625345

16745Passons maintenant à la puce Zilog Z84C0008 du processeur 8 bits z80.

En bas au centre nous trouvons la référence 84C00 (à ne surtout pas confondre avec le futur modèle TI-84 Plus C) accompagnée d'un triple copyright (1975, 1987 et 1991), ainsi que du logo Zilog.

Source : https://twitter.com/travisgoodspeed/sta ... 0606598144

1674716741Enfin voici l'heure de s'attaquer à cette fameuse mystérieuse puce ASIC TI-REF 9815455 de chez Texas Instruments.

Et en fait surprise, aucune mention de Texas Instruments sur le circuit intégré. Nous trouvons :
  • dans le coin en haut à gauche sur une couche interne et donc partiellement masqué le logo de Toshiba accompagné d'une date de conception dès 1990
  • dans le coin en haut à droite une référence CD431409

Source : https://twitter.com/travisgoodspeed/sta ... 9777550336

Il serait intéressant de poursuivre l'étude avec l'ASIC utilisé par la suite, le fameux TI-REF 738X, commun malgré l'assembleur très différent à la fois aux dernières révisions matérielles des modèles Flash TI-73 et TI-83 Plus, ainsi qu'aux rééditions sous d'autres références d'entrée de gamme de l'ancien modèle TI-83 (TI-82 STATS, TI-76.fr). En pratique nous n'avons jamais réussi à changer son mode de fonctionnement, ce qui aurait pu en théorie permettre la transformation de ces modèles d'entrée de gamme en TI-83 Plus...
Lien vers le sujet sur le forum: Décapsulage ASIC+CPU+Flash de la TI-83 Plus à 4 puces '99-01 (Commentaires: 0)

MaClasseTI.fr, plateforme TI-83 Python en ligne gratuite !

Nouveau messagede critor » 14 Mar 2023, 14:58

La dernière réforme du lycée a commencé à être mise en place à partir de 2018 pour les nouveaux élèves de Seconde, et a débouché sur le Baccalauréat nouveau format pour la session 2021. Une réforme qui a complètement chamboulé le marché français de la calculatrice scolaire.

Rappelons que dans ce contexte, on distingue :
  • les enseignements faisant toujours l'objet d'une évaluation terminale : Français (épreuve anticipée en Première), Philosophie, 2 enseignements de spécialité, grand oral
  • les enseignements évalués en contrôle continu : le reste du tronc commun et les enseignements optionnels
Cela fait une différence importante en terme d'organisation de l'évaluation :
  • les épreuves terminales, peu importe qu'elles soient écrites, pratiques ou orales, sont organisées sous le cadre réglementaire national, ne permettant que l'autorisation de la calculatrice comme seul outil numérique personnel, avec mode examen dans le cas d'une calculatrice graphique
  • les évaluations pour le contrôle continu sont organisées selon des modalités librement choisies par l'enseignant ou établissement concerné, qui à la différence peuvent autoriser tout outil numérique qu'ils jugent pertinent pour l'évaluation (ordinateur, tablette, smartphone, ...)
Parlons spécialités. Les enseignements de spécialité à choisir sont au nombre de 3 pour la rentrée en Première. Une spécialité devant obligatoirement être abandonnée à la fin de la Première, seules 2 spécialités seront conservées en Terminale.

Le choix des enseignements de spécialité est totalement libre pour les élèves décidant de poursuivre en série générale. À ce jour, 13 spécialités sont possibles mais en pratique toutefois, le choix sera limité par les spécialités offertes par le ou les lycées accessibles.

Pour les élèves décidant de poursuivre en série technologique, l'organisation est similaire, à part que les élèves n'ont pas ou très peu de choix. Selon la série choisie, les enseignements de spécialités sont soit imposés, soit n'offrent qu'un nombre limité de choix spécifiques à la série en question.

Problème, en pratique, les seuls élèves à être concernés par une épreuve terminale autorisant la calculatrice ne sont désormais plus que ceux :
  • faisant le choix de la série générale avec certains enseignements scientifiques en spécialité, et qui de plus les conservent jusqu'en Terminale : Mathématiques, Physique-Chimie et/ou Sciences de l'Ingénieur
  • faisant le choix de certaines séries technologiques : STL, STI2D, STMG, ST2S, STHR ou STAV
Concentrons-nous sur la série générale qui reste la plus populaire. Effet pervers de la réforme qui n'a pas du tout été anticipé ; entre le choix d'une série et de spécialités à la fin de la Seconde et l'abandon d'une spécialité à la fin de la Première, la visibilité des élèves et familles niveau orientation est bien souvent réduite à moins d'une année. Un élève de Seconde ou même Première ne sait pas s'il passera une épreuve terminale avec calculatrice. Et comme nous venons de le voir, il ne suffit pas de faire des Mathématiques ou des sciences pour cela, ces enseignements ne faisant pas l'objet d'une épreuve terminale dans le cadre du tronc commun ou des options.

En conséquence :
  • plutôt que de s'équiper dès la Seconde nombre de familles préfèrent différer l'achat d'une calculatrice graphique, en pratique à la Première ou même pire à la Terminale
  • nombre d'enseignants ne se donnent même plus la peine de recommander cet achat en Seconde, et parfois même en Première
Cet équipement plus tardif a bien évidemment des conséquences regrettables, avec un temps réduit pour la prise en main l'outil, et une utilisation moins optimale aux épreuves terminales.

Les alternatives en attendant un éventuel équipement sont actuellement :
  • utiliser la Casio fx-92+ Spéciale Collège héritée du Collège, certes excellente au Collège mais qui comme son nom l'indique n'est pas parfaitement adaptée aux exigences du lycée
  • faire sur ordinateur portable, tablette ou smartphone avec des logiciels, applications ou plateformes bien souvent choisis par les enseignants, et l'énorme défaut que ces outils numériques auxquels ils habituent les élèves ne seront pas ceux autorisés aux épreuves terminales

Conscient de cette problématique, Texas Instruments a travaillé très dur afin d'apporter une solution. Nous avons le plaisir aujourd'hui de t'annoncer le grand lancement de MaClasseTI.fr, la nouvelle plateforme numérique de Texas Instruments conçue sur-mesures pour l'apprentissage des Mathématiques et des Sciences au lycée français :bj:

Tournant dans le navigateur et donc utilisable aussi bien sur ordinateur que tablette ou smartphone et ce peu importe le système d'exploitation, MaClasseTI.fr se compose de différents modules interconnectables que nous allons te présenter :
  • Calculatrice en ligne
  • Editeur Python
  • Tutoriels
  • Classe

Image

Nous allons donc découvrir tout cela ensemble. Mais avant ceci, précisons que l'intégralité des fonctionnalités de la plateforme sont accessibles gratuitement !



Sommaire :



A) Calculatrice en ligne - un émulateur TI-83 Premium CE

La calculatrice en ligne prend la forme d'un émulateur de TI-83 Premium CE. Il fait actuellement tourner le système 5.7.2.0017 sur un boot en version 5.6.1.0006, et est basé sur la même technologie que celle utilisée par TI-SmartView CE, ainsi que la solution TI-84 Plus CE Online sortie en mi-2022.

Précisons que l'émulateur ne reproduit pas ici totalement le dernier modèle TI-83 Premium CE Edition Python : il n'y a pas de gestion du Python ici, l'application dédiée étant justement absente des applications préchargées. Mais ne sois pas trop déçu(e), car nous allons reparler de Python très vite.

Ceci donc mis à part, toutes les autres applications officielles sont bien présentes, et tu as donc accès à l'ensemble des autres fonctionnalités. L’émulateur, hors Python, conviendra ainsi aussi bien aux utilisateurs de TI-82 Advanced Edition Python que de TI-83 Premium CE.

Précisons que l'émulateur ne permet pas d'importer ou exporter des données (applications, programmes, feuilles de calcul, ...) et ne permet pas non plus de prendre de capture d'écran. Il semble ainsi cibler une simple utilisation des fonctionnalités officielles intégrées dans un contexte purement scolaire par des élèves.

Pari très audacieux de la part de Texas Instruments, cet émulateur de TI-83 Premium CE est donc entièrement gratuit et totalement libre d'accès pour tous et toutes, alors que le constructeur n'avait historiquement jamais proposé une telle offre à tous. Il n'y a besoin ni de payer ni même de s'inscrire sur la plateforme pour l'utiliser, et c'est bien apprécié : il est donc possible de mettre immédiatement les élèves dessus dès le premier cours de l'année, formidable ! :bj:
On se rend compte donc que NumWorks n'est désormais plus le seul à avoir sa calculatrice en ligne gratuite directement sur son site !



B) Python : éditeur, simulateur, et bibliothèques

B1) Editeur Python et bibliothèque de projets

Passons maintenant à l'éditeur Python qui, pour le coup, est dédié aux fonctionnalités Python.

Immédiatement ici encore sans besoin de la moindre inscription, tu peux soit créer un nouveau projet, soit ouvrir un projet déjà existant. Dans ce dernier cas tu peux :
  • soit ouvrir des projets en ligne, maclassti.fr donnent en effet accès à une véritable bibliothèque - au choix :
    • exemples de projets
    • projets partagés en public par d'autres utilisateurs
    • tes propres projets si enregistrés en ligne (leur sauvegarde en ligne nécessitant une inscription)
  • soit ouvrir tes projets enregistrés en local (la sauvegarde locale étant dans tous les cas possible sans inscription)
Tu es libre de partager avec l'ensemble de la communauté d'utilisateurs aussi bien les projets que tu crées que ceux que tu modifies.

Choisissons de commencer un nouveau projet. Nous y trouvons donc un éditeur Python en ligne comme il faut : numérotation des lignes, coloration syntaxique, et même quelques propositions d'auto-complétions lorsqu'on est en mode d'édition de code.

Précisons que la sauvegarde locale du projet utilise le format .py, et y inclut sous forme de chaînes de documentation les informations spécifiques à la conception du projet, permettant ainsi leur récupération lorsque tu rouvriras ce fichier depuis la plateforme. Le bouton "Télécharger pour la calculatrice" quant à lui te fera récupérer un fichier .py allégé (note : TI Connect CE, pour macOS et Windows, pourra directement convertir ce fichier à la volée en fichier .8xp compatible avec la calculatrice lors du transfert, mais si tu ne peux pas utiliser ce logiciel, il faudra donc que tu le convertisses par toi-même auparavant).

Par contre, apparemment l'éditeur ne gère qu'un seul et unique script, ce qui est dommage pour un outil mettant en avant la conception de projets. Certains projets gagneraient en effet beaucoup en organisation à pouvoir avoir leur code scindé en différents scripts, notamment pour la définition de bibliothèques personnelles ou de classes. C'est d'ailleurs un des avantages de notre outil en ligne "Project Builder" qui gère depuis peu le Python pour CE :)



B2) Simulateur TI-83 Premium CE Edition Python

Commençons de suite un nouveau projet avec l'affichage du triangle de Pascal dans la console Python (inspiré du sujet NSI 2023 n°17 exercice 2).

Le bouton lecture
de la barre d'outils permet d'ouvrir une visionneuse en ligne permettant de lancer le script Python saisi, dans une interface proche de celle d'une TI-83 Premium CE Edition Python. Elle n'est clairement pas identique pour autant (différences dans les couleurs, icônes et polices de caractères comme tu peux le constater ci-après) ce qui nous indique que nous n'avons pas affaire à un émulateur mais à un simulateur. La différence est importante, car cela implique que le fonctionnement interne de la TI-83 Premium CE Edition Python n'est pas reproduit à l'identique, ce qui ouvre la voie à des différences à l'utilisation qu'il va nous falloir creuser.
Code: Tout sélectionner
from math import log

def pascal(n):
  triangle= [[1]]
  for k in range(1, n):
    ligne_k = [1]
    for i in range(1,k):
      ligne_k.append(triangle[k - 1][i-1]+triangle[k - 1][i])
    ligne_k.append(1)
    triangle.append(ligne_k)
  return triangle

def print_pascal(n):
  triangle = pascal(n)
  lmax = [0] * len(triangle[-1])
  for l in triangle:
    for i in range(len(l)):
      lmax[i] = max(lmax[i], l[i])
  for l in triangle:
    ligne = ""
    for i in range(len(l)):
      ligne += ("{:0" + str(1 + int(log(lmax[i], 10))) + "} ").format(l[i])
    print(ligne)

print_pascal(9)
(lancer en ligne)

Cet éditeur en ligne en passant nous le reconnaissons justement à ces différences d'interface TI-83 Premium CE Edition Python, il s'agit très exactement de celui disponible chez Vittascience, qui a en fait conçu la plateforme MaClasseTI avec Texas Instruments..

D'ailleurs, nous n'avons pas besoin de chercher bien loin, rien qu'en restant sur le formatage d'affichages dans la console nous trouvons des anomalies. Il y a clairement un problème à l'exécution si l'on compare avec la calculatrice :
Code: Tout sélectionner
LINES = 4
DELTA = 8
START = 4

def print_stars(i):
  print(" "*(DELTA // 2)*(LINES - i - 1) + "*"*(DELTA*i + START))

for i in range(LINES):
  print_stars(i)
print("Hello TI-World from inside !")
for i in range(LINES - 1, -1, -1):
  print_stars(i)
(lancer en ligne)

La fonction print() semble ignorer les caractères espace lorsque présents au début d'une chaîne de caractères, correspondant ici au " " en ligne 6 du script. Un contournement pour tes projets est de les remplacer par des espaces insécables "\xA0". C'est bien dommage, car nous sommes en plein dans ce qui se pratique au lycée, le formatage dans la console pouvant être jugé plus facilement accessible que la manipulation de pixels.

Mais pas d'inquiétude, nous avons rapporté les bugs que nous avons trouvé à TI, qui a pu les constater ; espérons donc que ceci pourra être corrigé bientôt.

Par contre, il y a d'autres choses excellentes offertes par les boutons du simulateur :
  • possibilité de faire défiler pas à pas l'exécution du script, avec à chaque étable rafraîchissement de l'écran de la calculatrice et surlignage de la prochaine ligne qui sera exécutée (en passant un beau moyen de comprendre le fonctionnement des boucles)
  • possibilité de faire afficher l'état de l'ensemble des variables globales, et de le rafraîchir au fur et à mesure en cas d'une exécution pas à pas
Tout ceci est extrêmement sympathique dans le contexte du développement d'un projet !
Il est grand temps de savoir à quoi nous avons affaire. Regardons du côté de la bibliothèque intégrée sys :
Code: Tout sélectionner
import sys
l = dir(sys)
print(l)

Pas de propriété sys.platform, mais nous pouvons par contre regarder du côté de sys.version et sys.version_info.
Code: Tout sélectionner
import sys
print(sys.version_info)
print(sys.version)

Mystère résolu, la visionneuse Python utilise Skulpt, une implémentation de Python pour navigateurs, et ici plus précisément une implémentation partielle (ish) de Python 3.7. Une implémentation qui plus est open source dont tu es libre de contribuer à l'amélioration !



B3) Programmation par blocs et bibliothèques Python

La barre d'outils supérieure permet de basculer l'éditeur entre différents modes :
  • le mode code, par défaut qui est celui illustré jusqu'à présent
  • le mode blocs
  • le mode hybride
Le mode blocs permet de saisir le script par assemblage de blocs, exactement comme en Scratch au Collège. Bien évidemment ce n'est pas le but au lycée.

Mais justement, le mode hybride pour sa part juxtapose les deux vues : blocs et Python. Dans ce mode le script est toujours saisi par assemblage de blocs, mais tu en obtiens automatiquement une transcription en Python qui est mise à jour au fur et à mesure. Il t'est même possible via un clic droit de désactiver/réactiver des blocs pour mieux comprendre quelles lignes Python sont relatives à leur présence.

Un formidable outil pour faire participer l'ensemble des élèves de Seconde sans laisser personne de côté dans le cadre d'une transition progressive de Scratch à Python !

L'affichage et la gestion des blocs sont ici réalisés par Blockly, encore une fois un projet open source, par Google, auquel tu peux contribuer.

Les blocs sont saisis à l'aide de la barre d'outils latérale, qui nous donne par catégories les blocs disponibles. Commençons par les blocs que nous qualifierons de non spécifiques :
  • Fonc : blocs relatifs aux définitions de fonctions et valeurs retournées
  • Ctl : blocs de contrôle, ce sont ceux qui englobent d'autres blocs (boucles comme répéter, alternative si/alors/sinon, ...)
  • Ops : blocs relatifs aux opérateurs de comparaison (égal, inférieur, supérieur, ...) et opérateurs logiques (et, ou, oui, non, ...)
  • List : blocs relatifs aux manipulations de listes
  • E/S : blocs relatifs aux opération d'entrée/sortie (print/afficher, input/saisir, ...)
  • Var : blocs relatifs aux manipulations de variables (affecter, rappeler, incrémenter, ...)
  • Text : blocs relatifs aux manipulations de chaînes de caractères
On peut noter en passant les info-bulles d'explication extrêmement complètes et dans un Français parfaitement correct disponibles sur chaque bloc.
Le reste des blocs concernent des fonctionnalités spécifiques au Python, et commencent à nous donner un premier aperçu de la formidable étendue des bibliothèques disponibles :
  • math (dans lequel un petit coquin a même casé un 42 comme valeur spécifiée par défaut pour le bloc de valeur numérique)
  • random (relatif à l'aléatoire)
  • time
  • ti_system
  • ti_plotlib (pour les représentations dans un repère dont les diagrammes)
  • ti_hub (relatif à l'interface TI-Innovator Hub permettant de connecter des capteurs et actionneurs pour projets STEM)
  • ti_rover (relatif au TI-Innovator Rover utilisable avec l'interface précédente)
  • micro:bit (relatif à la carte de développement BBC micro:bit programmable en Python et permettant de connecter des capteurs et actionneurs pour projets STEM)
  • ce
  • turtle (pour les tracés relatifs dits à la tortue/turtle/Scratch)
  • tello (relatif aux drones Tello)
Nous allons explorer tout cela.



B4) Interface personnalisable pour accessibilité

Avant d'aller plus loin, notons comment l'interface de l'éditeur Python a été conçue pour s'adapter à un très large public scolaire.

Chacun ou chacune peut choisir selon ses capacités visuelles ou celles de son écran entre des thèmes clair et sombre, et même pour chacun activer un mode avec contraste élevé :




Plusieurs polices de caractères sont également au choix pour une meilleur lisibilité, dont OpenDyslexic qui se veut adaptée aux élèves dyslexiques :


Enfin, spécificité de l'éditeur Python par rapport au reste de la plateforme, plusieurs langues sont disponibles : Français, Anglais, Italien, Espagnol et Arabe :

Notons l'Arabe qui n'adapte pas seulement le contenu de l'interface mais également sa disposition, les différents éléments étant réorganisés pour une logique de lecture de droite à gauche !

On peut toutefois remarquer que la traduction est incomplète : certains éléments de l'éditeur restent en Français, et d'autres sont systématiquement affichés en Anglais pour toute autre langue.



B5) Bibliothèques Python standard non graphiques

Sur TI-83 Premium CE Edition Python, on peut obtenir l'ensemble des bibliothèques disponibles en tapant help("modules").

Malheureusement ici sur le simulateur de l'éditeur Python, cet appel déclenche une exception NotImplementedError. La fonction help() n'a visiblement pas été implémentée.

La bibliothèque importlib n'étant pas davantage présente, pour tester la présence ou l'absence d'éventuelles bibliothèques non mises en avant par la barre d'outil, nous allons devoir tester leur importation une par une.

En espérant ne rien rater, nous nous référerons pour cela :
  • à la liste officielle des bibliothèques standard intégrées à Python
  • à l'ensemble des bibliothèques officielles intégrées ou rajoutables sur TI-83 Premium CE Edition Python
Commençons pour le moment par les bibliothèques standard non graphiques. La TI-83 Premium CE Edition Python en intègre 9 :
  • __main__
  • array
  • builtins
  • collections
  • gc
  • math
  • random
  • sys
  • time
Toutes ne sont pas présentes ici dans le simulateur Python. Nous constatons l'absence de builtins et gc et n'en retrouvons donc que 7.

Par contre, nous remarquons la disponibilité de 18 bibliothèques supplémentaires non présentes sur la calculatrice, de quoi aller bien plus loin dans tes projets :
  • bisect
  • copy
  • datetime
  • itertools
  • keyword
  • numbers
  • operator
  • platform
  • re
  • signal
  • string
  • test
  • textwrap
  • token
  • types
  • unittest
  • urllib
  • webbrowser




























calculatrice
TI-83 Premium CE
Edition Python
éditeur Python
en ligne
__main__
array
bisect
builtins
collections
copy
datetime
itertools
gc
keyword
math
numbers
operator
platform
random
re
signal
string
sys
test
textwrap
time
token
types
unittest
urllib
webbrowser
total
9
25



B6) Bibliothèque ti_system - clavier, caractères et console

La bibliothèque ti_system est spécifique à la TI-83 Premium CE Edition Python. Elle permet entre autres (cf. notre article) :
  • des affichages avancés dans la console (ligne au choix)
  • d'effectuer une pause (délai en secondes)
  • de tester l'appui sur une touche
  • d'exporter/importer des données
L'intérêt est certes moindre dans le cadre d'un éditeur en ligne ici déconnecté de l'environnement TI-83 Premium CE, mais il reste toutefois important que, malgré tout, cette bibliothèque se comporte le mieux possible et ne génère pas d'erreur, histoire de pouvoir développer et tester correctement ses projets en ligne avant de les charger sur la calculatrice.

Vérifions et comparons-en le contenu :
Code: Tout sélectionner
import ti_system
l = dir(ti_system)
l.sort()
print(l)

La calculatrice offre 2 méthodes à notre connaissance identiques pour effectuer une pause : sleep(secondes) et wait(secondes). Ici dans l'éditeur en ligne, wait semble avoir été oublié et il faudra donc remplacer tous ses appels si utilisé.

Niveau importation/exportation de données, ça commence mal. Toutes les méthodes concernées recall_list(), store_list() et recall_RegEQ() déclenchent une exception NotImplementedError. Et ce de façon fort inattendue puisque l'ensemble de ces méthodes sont bien présentes et même documentées correctement via les info-bulles de la barre d'outils.

Testons un petit peu maintenant la méthode d'affichage disp_at(numero_ligne, texte, alignement), avec :
  • numero_ligne : la ligne où afficher, numérotée de 1 à 11 du haut vers le bas
  • alignement : au choix "left", "right" ou "center" pour des affichages respectivement alignées à gauche, alignés à droite ou centrés
Tentons par exemple l'affichage en mode texte dans la console, d'une image binaire représentons le logo de Texas Instruments, et faisant appel aux divers alignements possibles :
Code: Tout sélectionner
from ti_system import *
logo = [
  ["WWWWWWW     WWW", "center"],
  ["WWWWWWW       ", "center"],
  ["WWWWWWWWW WWW  WWWWWW  ", "right"],
  ["WWWWWWWWW WWW WWWWWWW  ", "right"],
  ["WWWWWWWWWWWWWWW   WWW    WWWWWW", "left"],
  ["WWWWWWWWWWWWWW  WWW WWWWWWWWWW", "right"],
  ["WWWWWWWWWWWW WWW  WWWWWWWWWW", "right"],
  ["WW     WWW       WWWW", "center"],
  ["     WWWWWWWWWW", "center"],
  ["     WWWWWWWW", "center"],
  ["        WWWWW", "center"]
]
 
for i in range(len(logo)):
  ligne = logo[i]
  disp_at(i + 1, ligne[0], ligne[1])
disp_wait()

Et bien zut, quelque chose ne va clairement pas sur la plateforme en ligne. D'une part, nous constatons que les affichages via disp_at() n'effacent pas le contenu de la console aux endroits affectés, mais s'effectuent par-dessus. À la rigueur, comme il s'agit ici d'une interface web, nous pouvons comprendre que ce comportement de la calculatrice ne soit pas évident à reproduire selon la technologie choisie.

Mais il y a bien plus embêtant que cela ; les alignements ne sont pas bons. Tentons de vérifier ; la console faisant très exactement 32 colonnes sur calculatrice, numérotons chaque caractère affiché :
Code: Tout sélectionner
from ti_system import *
logo = [
  ["WWWWWWW     WWW", "center"],
  ["WWWWWWW       ", "center"],
  ["WWWWWWWWW WWW  WWWWWW  ", "right"],
  ["WWWWWWWWW WWW WWWWWWW  ", "right"],
  ["WWWWWWWWWWWWWWW   WWW    WWWWWW", "left"],
  ["WWWWWWWWWWWWWW  WWW WWWWWWWWWW", "right"],
  ["WWWWWWWWWWWW WWW  WWWWWWWWWW", "right"],
  ["WW     WWW       WWWW", "center"],
  ["     WWWWWWWWWW", "center"],
  ["     WWWWWWWW", "center"],
  ["        WWWWW", "center"]
]

for i in range(len(logo)):
  s_in = logo[i][0]
  s_out = ""
  c = {
    "left": 1,
    "right": 33 - len(s_in),
    "center": (32 - len(s_in)) // 2 + (len(s_in) % 2)
  }[logo[i][1]] % 10
  for j in range(len(s_in)):
    s_out += (s_in[j] != " " and str(c) or " ")
    c = (c + 1) % 10
  logo[i][0] = s_out
 
for i in range(len(logo)):
  ligne = logo[i]
  disp_at(i + 1, ligne[0], ligne[1])
disp_wait()

Effectivement :
  • les alignements à gauche sont décalés d'un caractère par rapport aux alignements à droite
  • lorsque affichant un nombre impair de caractères, les alignements centrés sont décalés d'un demi caractères par rapport aux alignements à droite
Il y a clairement eu une erreur. Pour les affichages en disp_at(), l'interface en ligne utilise une console en 33 colonnes au lieu de 32 colonnes.

C'est d'ailleurs bien curieux cette erreur, car les affichages console avec print() restent pour leur part sur 32 colonnes à la différence :
Code: Tout sélectionner
from ti_system import *
s = ""
for i in range(33):
  s += str((i + 1) % 10)

for i in range(4):
  print(s)
for i in range(1, 3):
  disp_at(i, s, "left")
disp_wait()

Sur la technique utilisée pour obtenir (mal) les alignements sur l'interface en ligne, on peut l'utilisation de polices différentes pour le contenu console et les affichages via disp_at().
Dans tous les cas, nous avons là aussi informé TI de ce problème.

Poursuivons en consultant le contenu de la police de caractères, d'abord avec print() :
Code: Tout sélectionner
def pchars(k, l=16):
  print("\xA0\xA0|0123456789ABCDEF")
  print("--+----------------")
  for i in range(k * l, (k + 7) * l, l):
    ligne = hex(int(i // l))[2:].upper() + "_|"
    for j in range(l):
      ligne += chr(i + j)
    print(ligne)

pchars(2)
pchars(9)

Nous constatons l'affichage incorrect des 32 caractères de codes 0x80 à 0x9F. Parmi ceux-ci, rappelons que les 16 caractères de codes 0x80 à 0x8F sont spécifiques à la TI-83 Premium CE.




Comme nous avons vu qu'il y avait utilisation de 2 polices différentes, vérifions également avec des affichages via ti_system.disp_at(). Nous constatons en fait très exactement le même problème, ni plus ni moins :
Code: Tout sélectionner
from ti_system import *

disp_clr()

def pchars(k, l=16):
  disp_at(1, "\xA0\xA0|0123456789ABCDEF", "left")
  disp_at(2, "--+----------------", "left")
  n = 3
  for i in range(k * l, (k + 9) * l, l):
    ligne = hex(int(i // l))[2:].upper() + "_|"
    for j in range(l):
      ligne += chr(i + j)
    disp_at(n, ligne, "left")
    n += 1

pchars(2)
disp_wait()
pchars(9)
disp_wait()

Peut-être que TI devrait fournir sa police spéciale complète, ou bien peut-être que VittaScience pourrait utiliser la version communautaire, proposée dans le domaine public ? :P

Niveau touches clavier, nous ne disposons ici pas du clavier complet à 50 touches de la calculatrice, mais de 2 touches cliquables,
entrer
et
annul
, interrogeables par les méthodes suivantes :
  • ti_system.wait_key() et ti_system.disp_wait() attendent l'appui sur n'importe laquelle de ces touches
  • ti_system.escape() teste l'appui sur la seule touche
    annul
Précisons que sur la calculatrice, ti_system.wait_key() renvoie le code de la touche activée (cf. ici), soit entre autres 5 pour
entrer
et 9 pour
annul
. Ici sur la plateforme c'est différent, ti_system.wait_key() ne renvoie rien. Question de compatibilité, c'est une nouvelle fois dommage.

Dernière chose à évoquer avant de passer aux bibliothèques graphiques, si nous n'avons que 2 touches utilisables, comment se passent les saisies avec input() ? Pour cela, voici un petit jeu repris de chez nsi.xyz :
Code: Tout sélectionner
from random import randint

essais_max= 5  # nombre d'essais maximum
essais = 1   # nombre essais
nombre_joueur = 0   # nombre du joueur au départ
nombre_max_ordi = 25  # nombre maximum généré par l'ordinateur
nombre_ordi = randint(1,nombre_max_ordi)   # nombre choisi par l'ordinateur
print("L'ordinateur a choisi un nombre entre 1 et",nombre_max_ordi, ".")
print("Vous devez le trouver en moins de 5 tentatives !")
while nombre_ordi  != nombre_joueur and essais <= essais_max:
    print("vous êtes au", essais, "essai.")
    nombre_joueur = int(input("Choisissez un nombre :"))
    if nombre_joueur < nombre_ordi:
        print("Le nombre que vous avez choisi est trop petit")
    elif nombre_joueur > nombre_ordi:
        print("Le nombre que vous avez choisi est trop grand")
    else:
        print("Félicitations ! Vous avez trouvé le nombre de l'ordinateur ","en",essais,"essai(s)")
    essais += 1
if essais>essais_max and nombre_joueur != nombre_ordi :
    print("Désolé, vous avez utilisé tous vos essais.")
    print("Vous êtes vraiment nul, réessayer jusqu'a ce que vous gagnez!")
    print("L'ordinateur avais choisi le nombre",nombre_ordi,".")
(lancer en ligne)

Nous obtenons bien le message d'invite de saisie dans l'écran de la plateforme, sans pouvoir interagir avec. Mais la bonne nouvelle, c'est qu'en fait, il y a une seconde console non pas en mode graphique mais en mode texte que l'on trouve sous l'éditeur. Les divers affichages via print() et input() y sont dupliqués, pouvant à la différence y être sélectionnés et copiés. Et dans cette console-ci, le message d'invite est accompagné d'une boîte de saisie.

En l'état, l'implémentation ti_system de la plateforme nous semble fort peu satisfaisant. Entre le déclenchement d'erreurs, et son manque de fiabilité en l'absence d'erreur, nous ne sommes pas sûrs de son utilité, le voyant davantage comme un obstacle que comme une aide. Et c'est très curieux car plusieurs éléments nous indiquent qu'il y a eu des bases très soignées et très propres. C'est un peu comme si le développement avait été finalement scindé entre plusieurs entités, ou haché avec des pauses plus ou moins longues.

Mais bon, vu le travail colossal accompli sur tout le reste de cette plateforme, avec un peu de volonté et de temps, amener ti_system à un niveau satisfaisant ne devrait être qu'un jeu d'enfant… :)



B7) Bibliothèques de tracé dans un repère

La TI-83 Premium CE Edition Python bénéficie de plusieurs bibliothèques de tracé dans un repère, avec chacune leurs spécificités.

Il y a d'abord ti_plotlib qui est intégré, et permet de tracer divers diagrammes :
  • nuage de points
  • diagramme en ligne brisée
  • droite de régression linéaire

Plusieurs bibliothèques complémentaires officielles sont également rajoutables, et offrent d'autres types de diagrammes :
  • ce_chart pour les diagrammes en barres
  • ce_box pour les diagrammes en boîte dits à moustaches
  • ce_quivr pour les champs vectoriels

Et bien c'est fantastique, l'ensemble de ces bibliothèques sont ici présentes sans avoir rien à charger :


ce_box
ce_chart
ce_quivr
Code: Tout sélectionner
from ce_box import *
d = (2, 3, 5, 7, 11)
b = box(d)
b.show()


Code: Tout sélectionner
from random import *
from ce_chart import *
seed(42)
n = 5
cx = [
  randint(0, n ** 2)
  for i in range(n + 1)
]
connex = [
  ("Me", cx[1] / n),
  ("Li", cx[2] / n),
  ("Si", cx[3] / n),
  ("Ja", cx[4] / n),
  ("Ck", cx[5] / n)
]
cht = chart()
cht.data(connex)
cht.title("Lorem ipsum")
cht.frequencies(2)
cht.show()


Code: Tout sélectionner
import ti_plotlib as plt
from ce_quivr import *

def fx(x):
  val1 = x ** 3
  val2 = 4 * x ** 2
  val3 = 3 * x
  return ((val1 - val2) + val3) - 2

def dx(x):
  val1 = 3 * x ** 2
  val2 = 8 * x
  return (val1 - val2) + 3

def dx2(x):
  val1 = 6 * x
  return val1 - 8

def motion(min2, max2, n):
  dt = (max2 + min2) / n
  t = min2
  for i in range(0, n, 1):
    quiver(t, fx(t), t + dt, fx(t + dt), 1, 'blk', 'line')
    if i % 7 == 0:
      quiver(t, fx(t), 0, dx(t), 0.4, 'r', 'vector')
      quiver(t, fx(t), 0, dx2(t), 0.4, 'b', 'vector')
    t = t + dt

Y_MAX = 8
N_POINTS = 100
plt.window(-0.25, 4, -5, Y_MAX)
plt.cls()
plt.title('Motion in one Dimension')
plt.color(0, 0, 0)
plt.axes("on")
plt.labels('Time', '   X Position     ', 7, 3)
motion(0, 4, N_POINTS)
plt.show_plot()


On remarque en passant que la plateforme n'utilise pas le même générateur de nombre aléatoire que la calculatrice, le diagramme en barres différent malgré l'utilisation de la même graine (seed).

L'implémentation de ti_plotlib est certes fonctionnelle elle aussi...
Code: Tout sélectionner
import ti_plotlib as plt
import math

plt.cls()

def linspace(min2, max2, number):
  time = []
  space = round(max2) + math.fabs(min2)
  step = space / number
  point = min2
  time.append(point)
  for i in range(0, number, 1):
    point = point + step
    time.append(point)
  return time

def Sinus(t):
  sin = []
  for i in range(0, len(t), 1):
    sin.append(math.sin(t[int(i)] / 180.0 * math.pi))
  return sin

NUMBER_OF_POINTS = 50
MINIMUM = -360
MAXIMUM = 360
Angle = linspace(MINIMUM, MAXIMUM, 50)
Sinus2 = Sinus(Angle)
print(str(Angle))
print(str(Sinus2))
plt.cls()
plt.auto_window(Angle, Sinus2)
plt.grid(90, 0.25, "dot")
plt.color(0, 0, 153)
plt.axes("on")
plt.color(0, 0, 0)
plt.labels('Angle (°)', '', 6, 1)
plt.title('f(x) = sin(x)')
plt.color(0, 153, 0)
plt.plot(Angle, Sinus2, "o")
plt.color(255, 0, 0)
plt.scatter(Angle, Sinus2, "o")
plt.show_plot()

... mais elle nous semble incomplète lorsque l'on interroge son contenu :
Code: Tout sélectionner
import ti_plotlib as plt
l = dir(plt)
l.sort()
print(l)

Si certains manques peuvent être jugés purement décoratifs, ce n'est pas toujours le cas. Par exemple, ne pas pouvoir consulter les bornes de la fenêtre nous semble problématique.



B8) Bibliothèques de tracé par déplacements - turtle

La TI-83 Premium CE Edition Python permet de charger une bibliothèque complémentaire turtle, bibliothèque de tracé par déplacements d'une tortue.

Nous avons le plaisir de constater qu'elle est présente directement sur la plateforme :
Code: Tout sélectionner
from turtle import *
import math
r, g, b = 0, 255, 127
t = Turtle()
t.penup()
longueur = 204
t.backward(longueur / 2)
t.left(90)
t.forward(longueur / 2)
t.right(90)
t.pendown()
for count2 in range(10):
  t.fillcolor(r, g, b)
  t.begin_fill()
  for count in range(4):
    t.forward(longueur)
    t.right(90)
  t.end_fill()
  r, g, b = b, r, g
  longueur = longueur * (math.sqrt(3) - 1)
  t.forward(longueur / 2)
  t.right(30)


Une implémentation de turtle ici très complète avec les méthodes de remplissage, même si quelques bugs isolés à identifier sont encore capables de littéralement ravager certains tracés :
Code: Tout sélectionner
from math import pi, sin, cos, sqrt
from turtle import *
turtle = Turtle()

def spiral():
  phi = (1+sqrt(5))/2
  a  =0
  r = 0
  dr = 0.15
  turtle.penup()
  for i in range(300):
    turtle.forward(r)
    turtle.pencolor(0,0,0)
    turtle.dot(3)
    turtle.pencolor(205,133,63)
    turtle.dot(2)
    turtle.goto(0,0)
    turtle.setheading(0)
    a+=360/phi
    turtle.right(a)
    if a>=360:
      r+=dr
      a-=360   

def feuille(core,a):
    turtle.begin_fill()
    turtle.right(a/2)
    turtle.forward(core)
    turtle.left(a)
    turtle.forward(core)
    turtle.left(180-a)
    turtle.forward(core)
    turtle.left(a)
    turtle.forward(core)
    turtle.end_fill()

turtle.speed(0)
turtle.pencolor(30,144,255)
turtle.dot(320)

d=25
core=40
turtle.pencolor(160,82,45)
turtle.dot(40)

c=((255,215,0),(255,255,0))

for i in range(2):
  turtle.pencolor(c[0][0], c[0][1], c[0][2])
  turtle.fillcolor(c[i][0], c[i][1], c[i][2])
  for h in range(10*i,370,20):
    r=h * pi / 180
    x=d*cos(r)
    y=d*sin(r)
    turtle.penup()
    turtle.goto(x,y)
    turtle.pendown()
    turtle.setheading(h)
    feuille(core,32)

spiral()

turtle.show()


Ici encore, nous avons espoir que l'implémentation de turtle soit rapidement améliorée suite à nos feedbacks, et rendue ainsi encore plus excellente !



B9) Bibliothèques de tracé par pixels

Sur la TI-83 Premium CE Edition Python, plusieurs bibliothèques te permettent de prendre le contrôle de l'ensemble des pixels de la zone graphique.

Il y a ti_graphics qui est intégré mais non mis en avant aux menus.

Se rajoutent deux bibliothèques additionnelles préchargées, mises en avant aux menus et appelant en pratique la précédente :

Aucune de ces bibliothèques n'est présente ici sur la plateforme, ce qui soulève un mystère.

En effet, sur la calculatrice, l'ensemble des bibliothèques de tracé dans un repère et tracé par déplacements fonctionnent en faisant appel aux bibliothèques de tracé par pixel ici absentes sur la plateforme.

Y aurait-t-il une autre bibliothèque de tracé par pixel ici utilisée et si oui serait-elle également directement appelable depuis les scripts de l'utilisateur ?...



B10) bibliothèques STEM TI-Innovator Hub

La TI-83 Premium CE Edition Python est un formidable outil polyvalent intégrant plusieurs bibliothèques très utiles dans le cadre de la conception de projets STEM. Ces bibliothèques ciblent divers périphériques pouvant être connectés à ta calculatrice, chacun avec leurs propres capteurs et actionneurs que tu pourras interroger ou commander depuis ton code.

La bibliothèque ti_hub est dédiée TI-Innovator Hub, brique programmable intégrant plusieurs capteurs/actionneurs et permettant d'en connecter d'autres via des ports Grove et breadboard.

Et bien miraculeux, non seulement la bibliothèque ti_hub est présente, mais son importation déclenche l'ajout d'un TI-Innovator Hub dans la partie simulation.

Mais encore mieux que ça, de façon fort intelligente la plateforme arrive à déterminer les différents types de capteurs et actionneurs invoqués par ton code et te les rajoute également, tout en te précisant si il s'agit d'éléments intégrés au TI-Innovator Hub ou d'éléments rajoutés !
Code: Tout sélectionner
from ti_hub import *
import brightns
from analogout import *

# Analog Write on OUT 1
out1 = analog_out("OUT 1")

def ecl_affine(x):
  k = 1 + x / 100
  return 255 * 1

L = brightns.measurement()
while not L == 100:
  P = ecl_affine(L)
  out1.set(P)
  L = brightns.measurement()
P = ecl_affine(L)
out1.set(P)


La valeur retournée par chaque capteur peut ici être ajustée, de quoi tester tes projets comme en vrai !

C'est de plus un formidable outil si tu souhaites faire développer des projets STEM en classe car il te permet à chaque élève de disposer (virtuellement) de ses propres éléments matériels, plutôt que de faire la queue pour tester avec les éléments matériels de la classe en nombre limité.

De ton côté tu n'as plus besoin de t'embêter avec la logistique, n'ayant pas besoin de prévoir et distribuer les éléments matériels en quantité suffisante pour les séances concernées. Tu peux réserver les éléments matériels pour les tests finaux et présentation du projet.



B11) bibliothèques STEM TI-Innovator Rover

Un périphérique remarquable qui peut lui-même être connecté sur la brique programmable TI-Innovator Hub, c'est le robot sur roues TI-Innovator Rover, invocable par la bibliothèque ti_rover.

Ce périphérique intègre lui-même ses propres capteurs et actionneurs (capteur de distance, capteur de couleur au sol, diode RVB, ...).

Et bien c'est fantastique ici, car non seulement le robot TI-Innovator Rover, lorsque invoqué, est rajouté au simulateur, mais il est même accompagné d'un véritable tapis de tests !
Code: Tout sélectionner
import ti_rover as rv

def poly(n):
  for i in range(n):
    rv.forward(1)
    rv.left(360//n)

for i in range(3, 6):
  poly(i)

Hautement pertinent, tu pourras ainsi tester aisément comme en vrai tes projets utilisant les couleurs au sol pour influer sur le comportement du TI-Innovator Rover !
Un tapis de plus notamment bien pensé pour le codage d'un projet de"suivi de ligne".

Et en prime, les sens de rotation des deux servomoteurs et même distance restant à parcourir sont reportés en temps réel !



B12) bibliothèques STEM micro:bit

13451Autre périphérique utilisable avec ta TI-83 Premium CE Edition Python pour tes projets STEM, la carte de développement BBC micro:bit, aussi bien en version 1 que 2.

Cette carte intègre ses propres capteurs et actionneurs (dont un buzzer pour la v2 ainsi qu'un afficheur à 5x5 diodes adressables), et permet également d'en connecter d'autres.

Elle est invoquée en Python par la bibliothèque microbit dont nous avons le plaisir de constater la présence ici, avec une nouvelle une gestion dédiée et parfaitement fonctionnelle dans le simulateur !
Code: Tout sélectionner
from microbit import *
from mb_disp import *
display.show("Image.PACMAN",delay=400,wait=True)




B13) bibliothèques STEM drone tello

Autre périphérique remarquable utilisable avec ta TI-83 Premium CE Edition Python pour tes projets STEM, le drone Tello, dont le bêta-test avait été lancé l'année dernière.

Ici encore le drone Tello est géré dans le simulateur avec un véritable terrain de test préchargé et report de l'altitude en temps réel, de quoi tester en toute sécurité !
Code: Tout sélectionner
from tello import *
tello.takeoff()




C) Tutoriels

3è grande partie de la plateforme, nous arrivons aux tutoriels. Ils prennent la forme de vidéos avec toute une série de playlists au choix, concernant l’utilisation des calculatrices TI-83 Premium CE. Tu trouveras tout ce que tu veux de la prise en main jusqu’aux utilisations spécifiques à chaque partie du programme de Mathématiques :
  • Prise en main de la TI-83 Premium CE
  • Programmation en Python
  • Suites et fonctions
  • Algèbre et géométrie
  • Statistiques
  • Probabilités

Allons par exemple dans la playlist Algèbre et géométrie regarder comment calculer avec les nombres complexes.

Et c’est ici que nous allons enfin commencer à parler de la formidable intégration qui fait la force de MaClasseTI.fr.

En effet, à côté de chaque vidéo non orientée Python tu disposes d’un bouton te permettant de faire appel à l’émulateur de TI-83 Premium CE. Tu peux alors tenter de reproduire en direct les manipulations, ce sont de véritables tuto-vidéos interactifs qui te sont ainsi proposés !

Il est juste dommage qu’à ce jour cette possibilité ne concerne pas les vidéos ciblant le Python, l’émulateur étant en effet dépourvu de ces fonctionnalités comme nous avons vu.

Mais ce n’est pas tout. Chaque vidéo est également accompagnée d’un support téléchargeable, une trace écrite complètement repensée au format .pdf !

De plus, pour te permettre de t’auto-évaluer certaines vidéos seront accompagnées d’un QCM auto-correctif, avec des corrections d’excellente facture qui, bien loin de se contenter de te donner la réponse, te détailleront l’intégralité de la démarche !




D) Classe

La plateforme dispose donc également d’un module de gestion de classe. L’utilisation de cette partie nécessite une inscription mais reste elle aussi intégralement gratuite, aussi bien pour les élèves que les enseignants.

Tu peux donc t’y inscrire en tant qu’enseignant et rajouter tes élèves pour reconstituer tes classes ou groupes. Une intégration directement dans l’ENT de l’établissement est également possible via le service GAR, protégeant les données personnelles.

À partir de là c’est très simple, nous avons 3 onglets :
  • Mes activités
  • Mes classes
  • Profil

Dans Mes activités tu peux donc créer tes activités.

Tu peux le faire de deux façons, la première étant de partir d’une activité vide.

Il te faut alors choisir le type d’activité :
  • Calculatrice
  • Editeur Python
  • Glisser-déposer
  • Réponse libre
  • Texte à trous
  • QCM
  • Exercice avec consigne

Calculatrice permet de créer une activité ciblant l’utilisation de la TI-83 Premium CE (hors Python). Elle reprend l’émulateur couvert ci-dessus, en lui rajoutant une spécificité notable dans le cadre de l’usage en classe : la possibilité de bloquer l’utilisation de certaines touches, orientant donc la recherche des élèves dans le sens que tu souhaites.

De façon similaire, Éditeur Python cible le codage en Python pour TI-83 Premium CE Edition Python et reprend le module exploré plus haut.

Passons maintenant au reste. Certaines de ces autres formes d’activités ont l’avantage de te permettre de bénéficier d’une correction automatisée (notamment QCM, glisser-déposer, texte à trous, etc.).

Précisons que les émulateur et éditeur Python sont parfaitement intégrables sur toutes les autres formes d’activités, c’est juste le statut de leur utilisation qui change, passant d’objet d’étude à outil d’étude.

Pour chacun de ces autres types d’activité tu peux donc choisir d’inclure ou pas l’émulateur TI-83 Premium CE, et ici aussi d’en désactiver les touches de ton choix.

Nombres de choses sont intégrables à l’énoncé de ton activité :
  • expressions à saisir en LaTeX
  • images
  • liens
  • documents PDF
  • éditeur Python
  • vidéos youtube / peertube / vimeo
  • documents bureautiques Google Docs (texte, tableur, …)
  • illustrations des touches TI-83 Premium CE
  • illustrations des écrans usuels TI-83 Premium CE à sélectionner dans une banque


L’autre façon de te créer une activité, c’est de partir de consulter celles disponibles dans la banque, alimentée par les enseignants du réseau T3.

Tu pourras alors les importer dans ton compte puis les modifier librement.

Une fois que tu auras plusieurs activités, tu pourras, si tu le souhaites, les organiser en parcours (activité 1, 2, etc.).

Maintenant que tu as tes activités, il te faut des classes et des élèves.


Une fois ceci-fait tu pourras leur attribuer des activités ou parcours d’activités, de façon individuelle ou collective, avec une date de remise, et activer la possibilité ou pas de rendre plusieurs fois l’activité (c’est-à-dire effectuer plusieurs tentatives, la dernière remplaçant les précédentes).

L’onglet Profil t’indique les corrections que tu as à faire, c’est-à-dire les activités ne bénéficiant pas d’une correction automatisée. Dans ce cas, tu pourras entre autres rejouer les éventuelles manipulations effectuées par l’élève sur l’émulateur, histoire de mieux pouvoir comprendre sa démarche ou ses éventuelles erreurs.

Tu peux même y passer en mode élève, histoire de vérifier si les différentes activités ainsi que leur contenu apparaissent correctement, et les résoudre avec l’élève de test ”demo_student” attribué à chaque classe :

Tu vois alors apparaître en temps réel la remise et la réussite des activités par les élèves de ta classe, et te vois alors offert la possibilité de leur rendre en rajoutant une appréciation à personnaliser !

Précisons qu’avec ce module de gestion de classe nous avons affaire à OpenSTEAM-LMS, encore une fois une solution open-source, et développée par Vittascience.




E) Conclusion


La réforme du lycée et du Baccalauréat avait hélas complètement bouleversé l’utilisation de la calculatrice au lycée en entraînant, faute d’anticipation et de solutions, de nouveaux usages fort regrettables n’allant pas dans l’intérêt des élèves et de leur réussite :
  • usages non optimaux en poursuivant avec les élèves l’utilisation de la Casio fx-92+ Spéciale Collège héritée du Collège
  • usages néfastes en exerçant les élèves sur ordinateur/tablette/smartphone avec des applications ou plateformes, alors que ces outils ne sont pas autorisés aux épreuves terminales écrites et que les élèves en seront donc brutalement privés
Aujourd’hui fini de souffrir, fini les dilemmes et choix douloureux. Texas Instruments accompagné de la formidable expertise de VittaScience, start-up française talentueuse deux fois lauréate du prix Edu-up, te sort une plateforme en ligne conçue sur-mesures dans le cadre de la réforme du lycée et du Baccalauréat.

MaClasseTI.fr est une plateforme entièrement gratuite et comme nous avons pu le voir le long de cette présentation utilisant et interconnectant une majorité de modules opensource !

Rappelons la disponibilité d’émulateurs TI-83 Premium CE Edition Python, désormais utilisables gratuitement par tout-le-monde sans inscription, du jamais vu dans toute l’histoire de Texas Instruments !

MaClasseTI.fr te permet ainsi de commencer à faire prendre en main les TI-82 Advanced Edition Python et TI-83 Premium CE à tes élèves, dès le premier jour de leur arrivée en Seconde !

Plus besoin de s’embêter à insister pour que les élèves s’équipent ; aucune urgence, ils pourront le faire plus tard lorsqu’ils seront sûrs de conserver une spécialité scientifique jusqu’au Baccalauréat, pendant l’année de Première ou même au début de l’année de Terminale !

C’est un pari extrêmement audacieux et généreux de Texas Instruments que nous ne pouvons que saluer ! :bj:

Encore quelques petits défauts pour ce lancement comme nous avons vu, mais ils sont bien mineurs devant l’étendue titanesque de ce projet ; nous les avons tous signalés et vu l’énergie phénoménale mobilisée là-dessus nous avons espoir qu’ils seront corrigés rapidement.

Le niveau colossal d’intégration des différentes briques de la plateforme est absolument remarquable : :D
  • émulateur TI-83 Premium CE appelable depuis les tuto-vidéos
  • émulateur TI-83 Premium CE intégrable aux activités de classe
  • simulateur TI-83 Premium CE Edition Python intégrable aux activités classe
  • vidéo et expressions LaTeX intégrables aux activités de classe
  • périphériquesSTEM intégrables au simulateur TI-83 Premium CE Edition Python
  • environnements virtuel de test 2D et 3D pour les TI-Innovator Rover et drone Tello
  • ...

La possibilité de développer et tester ses projets STEM sans avoir à s’embêter à mobiliser le matériel en quantité suffisante à chaque séance concernée est également géniale, un confort formidable pour l’enseignant !

Rappelons les bibliothèques de projets Python et activités librement utilisables et même modifiables, permettant à la fois de gagner du temps et combler les débutants !

Mais qu’attends-tu pour venir mettre la main à la pâte et concevoir des projets et activités géniales qui combleront tes élèves tout en les amenant à un usage optimal de leur calculatrice le jour de l’épreuve terminale, les conduisant ainsi à la réussite ? ;)

Lien : https://maclasseti.fr/
Lien vers le sujet sur le forum: MaClasseTI.fr, plateforme TI-83 Python en ligne gratuite ! (Commentaires: 16)

Premiers sujets BAC 2023 avec corrigés !

Nouveau messagede critor » 16 Mar 2023, 08:52

La semaine du lundi 20 mars sera marquée par les épreuves de spécialité du Baccalauréat 2023.

Mais en réalité, les premières épreuves de spécialité ont déjà eu lieu cette semaine en Polynésie française ainsi que pour les candidats et candidates d'une première moitié des lycées français en Europe et en Afrique.
L'intégralité des sujets de séries générale et technologique que nous avons récupérés ces trois derniers jours sont maintenant disponibles.

Ils sont parfois même accompagnés de corrections, car nombre d'enseignants se sont donné beaucoup de mal pour toi (essentiellement pour les sujets de Mathématiques, Physique-Chimie, NSI et Sciences de l'Ingénieur).

Ces sujets ont été conçus dans le même moule que ceux de la semaine prochaine (dans le sens où ce sont les mêmes consignes qui ont été communiquées aux concepteurs de sujets), et ils sont donc représentatifs des dernières évolutions de l'épreuve, avec entre autres la suppression des parties/exercices/questions au choix maintenant que l'épidémie est derrière nous.

Il est donc dans ton intérêt de prendre connaissance des 1 à 4 sujets relatifs à chacune de tes spécialités, et si possible de les chercher en conditions d'examen (c'est-à-dire sans regarder la correction avant d'avoir lu, compris et cherché, meilleure façon de retenir le pourquoi du comment faire).

Liens :
Lien vers le sujet sur le forum: Premiers sujets BAC 2023 avec corrigés ! (Commentaires: 0)

Révise la spécialité Mathématiques du BAC 2023 avec les QCM

Nouveau messagede critor » 17 Mar 2023, 11:10

Au Baccalauréat général en Mathématiques la calculatrice est systématiquement autorisée, la dernière interdiction remontant au sujet tombé en 2003 et dans les seuls centres d'examen français d'Asie.

Une nouveauté qui avait été remarquée sur une écrasante majorité de sujets de Mathématiques lors de la première véritable session du nouveau Baccalauréat en 2022, c'était le grand retour en force de l'exercice de type QCM ou Vrai/Faux. Sur les 20 sujets de spécialité Mathématiques que nous avons eus pour la session 2022, nous comptons :
  • 13 sujets (65%) avec un exercice de type QCM, sans justification ni pénalités
  • 1 sujet (5%) avec un exercice de type Vrai/Faux, avec justification

Les premiers sujets 2023 confirment cet élément caractéristique, mais attention car pas vraiment dans les mêmes proportions. À prendre avec précautions car nous n'avons pas encore beaucoup de sujets, mais sur les 4 premiers sujets de la session 2023 nous notons :
  • 2 sujets (50%) avec un exercice de type QCM, sans justification ni pénalités
  • 2 sujets (50%) avec un exercice de type Vrai/Faux, avec justification
Si tu as un QCM alors tu as beaucoup de chance. Il s'agit en effet d'un exercice ultra-facile car ta calculatrice va pouvoir te permettre de trouver la bonne réponse ou éliminer les mauvaises, et ainsi terminer l'exercice en un temps record pour te laisser plus de temps pour traiter tous les autres exercices à justifier ! :bj:

Voici quelques tuto-vidéos en ce sens :

En passant pour ce dernier week-end de révisions, n'hésite pas à regarder du côté des exercices de QCM ou Vrai/Faux des sujets de BAC, et te donnant la peine de justifier systématiquement même lorsque ce n'est pas exigé. Ces exercices te permettront de couvrir rapidement un large éventail de thèmes et questions types.

Lien : sujets BAC Général 2023 avec corrigés
Lien vers le sujet sur le forum: Révise la spécialité Mathématiques du BAC 2023 avec les QCM (Commentaires: 0)

Remerciements don de calculatrices par HP

Nouveau messagede critor » 17 Mar 2023, 16:11

16749Tous nos remerciements aux anciens et anciennes de la branche HP calculatrices, pour nous avoir fait confiance et nous avoir adressé fort généreusement le reliquat de stock qu'ils avaient encore dans leurs bureaux.

Nous n'avons pas toujours été faciles à vivre, nous l'admettons bien volontiers, mais il n'y a jamais eu aucune malveillance ou intention de blesser, notre préoccupation avant tout étant la bienveillance envers les utilisateurs et utilisatrices scolaires, et sommes bien désolés si cela a pu être perçu autrement à un moment ou à un autre.

Nous récupérons donc une HP 39gII et la mettrons à profit très prochainement pour te parler d'un fantastique nouveau projet donnant une véritable seconde vie à ce modèle. ;)
16750Elle était de plus accompagnée de deux autres formidables pièces, des kits d'acquisition de mesures physiques.

Le premier kit inclut :
  • calculatrice HP 40gs faisant tourner la version 2.22, modèle de milieu introduit en 2006 qui avait la particularité d'offrir officiellement des fonctionnalités de calcul formel, jamais vues jusqu'alors dans le milieu de gamme ! :bj:
  • interface USB d'acquisition de mesures physiques HP StreamSmart 410
  • et divers capteurs Fourier compatibles : pression, microphone, lumière, distance, ...
16751Le deuxième kit fournit :
  • calculatrice HP 39gs, modèle de 2006 similaire à la HP 40gs mais sans les fonctionnalités de calcul formel et donc d'entrée de gamme, ici anormalement en version 2.23 alors que la 2.22 serait la dernière selon nos sources, peut-être quelque chose d'intéressant à te récupérer
  • interface USB d'acquisition de mesures physiques HP StreamSmart 400 cette fois-ci
  • et les mêmes capteurs
D'excellentes pièces qui auraient très certainement ruiné notre association si nous avions dû les acheter avec la surenchère malheureusement pratiquée sur le marché de l'occasion autour des anciennes calculatrices Hewlett Packard (et encore pire si accompagnées de ce genre de périphériques et accessoires rarissimes), merci énormément ! :D

Cela va grandement nous être utile pour continuer à te documenter les anciennes calculatrices graphiques Hewlett Packard sur notre comparateur en ligne, et on espère amener progressivement la chose au niveau de ce qu'il est déjà capable de servir concernant les modèles concurrents de l'époque.

Nous étions partants pour vous accompagner encore nombre d'années dans la réalisation de grandes choses, c'est bien dommage que la vente à Moravia soit apparemment venue mettre un terme brutal à tout cela. Notre plus grand regret restera donc de ne pas avoir réussi à établir un lien de confiance plus tôt. Merci encore pour toutes vos magnifiques réalisations depuis 1987, nous ne vous oublierons jamais ! :favorite: :'(
Lien vers le sujet sur le forum: Remerciements don de calculatrices par HP (Commentaires: 3)

Firebird Emu v1.6 - nouvelle version de l'émulateur Nspire !

Nouveau messagede Adriweb » 17 Mar 2023, 17:44

Trois ans après la sortie de la v1.5, Firebird Emu est désormais sorti en version 1.6, avec plein d'améliorations à la clé !

Certains d'entre vous avez déjà pu profiter de builds beta au cours du temps, mais c'est donc désormais officiel : Fabian Vogt, alias Vogtinator, a enfin sorti cette nouvelle version de l'émulateur TI-Nspire après avoir beaucoup travaillé :)

Voici un résumé des changements principaux :
  • Nouvelle fenêtre de création d'images Flash, désormais aussi disponible sur les apps mobile !
  • Traduction de l'application disponible aussi en Polonais
  • Gestion de multiples fichiers pour les drag'n'drop de transferts
  • Meilleure gestion du bouton [on], rendant l'activation du mode Press-to-Test accessible
  • Meilleure gestion de la mémoire RAM "FastBoot" (persistante apres-reboot), ce qui permet notamment de faire fonctionner les OS spéciaux "installer"
  • Gestion de l'émulation des Nspire CX II (/-T/CAS)
    Cependant, avec les programmes de dump actuels, vous n'obtiendrez pas un bootrom complet et le démarrage de l'OS échouera.
  • Améliorations concernant la gestion des transferts USB
  • La connexion à GDB fonctionne sur Windows
  • Une dizaine de bugs ont été corrigés (plusieurs pour plateformes mobiles, meilleur rendus des gris sur pre-CX, bugs de touches sur le clavier sur l'interface, ...)


En plus de tout ceci, Fabian et moi-même avons mis en place ce qu'il faut coté CI (GitHub Actions) pour builder automatiquement Firebird sur presque toutes les plateformes, ce qui est bien plus pratique, à la fois pour les développeurs, et pour les utilisateurs voulant tester en avances de nouvelles fonctionnalités pas encore sorties dans une version officielle :
Image Image Image ; et pour des distros Linux via OBS : Image


En test beta, il y a désormais une version en ligne (utilisant la technologie WebAssembly) de l'app : https://nspire-emus.github.io/firebird/wasm/


Changelog détaillé (en Anglais) :
Show/Hide spoilerAfficher/Masquer le spoiler
New features:
  • New dialog for creating Flash images, which is also available in the Mobile UI! (#262)
  • Running as 64bit application on Windows is supported now (#234)
  • Polish translation is available now (#207)
  • CX II (/-T/CAS) calculators can now be emulated (#165)! However, with the current dumping programs you will not get a complete bootrom and booting the OS will fail.
Improvements:
  • Multiple files can be sent in the Mobile UI and by dropping them into the main window on desktop (#279)

    Reimplemented emulation speed control: Now it's more accurate, especially on Windows
  • GitHub actions now performs automated builds for Android (armeabi-v7a and arm64-v8a in one APK), macOS and Windows (32bit and 64bit) on releases and pull requests (#283, #284, #285)
  • The "installer" for OS 4.5.3.14 (and later?) works now. It requires fastboot RAM to persist state across reboots, which is now implemented.
  • More accurate emulation of the On button: It's now possible to enter Press-To-Test mode (#271)
  • Faster saving and loading of snapshots (#231)
  • More reliable USB file transfers
  • The debugger console now includes entered commands in the log
  • Support for PIE (position-independent executables) on x86_64. Previously, care needed to be taken that PIE was disabled, otherwise it would crash on start. (#211)
  • Building the JIT is disabled automatically if the platform does not support it (#197)
  • Firebird builds on FreeBSD now (#228, #248)
Bugfixes:
  • File access on Android got fixed (#202 and its various duplicates)
  • Fix placement of keypad buttons in the touchpad area (#41)
  • Various fixes for the Mobile UI layout (#201)
  • The kit configuration page in the Mobile UI no longer causes the keyboard to pop up by default (#257)
  • Connecting with GDB on windows works now (#259, #260)
  • Some shades of grey were not displayed properly when emulating pre-CX models (#270)
  • Fix crash on AArch64/arm64 when executing certain instructions
  • The keypad reacts to touch events in the desktop version as well now (#292, #293)
  • Some places were no longer translated correctly after the introduction of language switching in 1.5
  • Keys could get stuck on focus changes. Now they're all released when the keypad loses focus (#287)
  • The Ctrl key now changes color when pressed
  • Emulation speed no longer remains unlimited after a failed file transfer
Repo for Arch, Debian, Fedora, Ubuntu and openSUSE: via OBS.
There is work in progress to implement and improve support for running in the browser on Qt for WebAssembly (#294). A preview is available on https://nspire-emus.github.io/firebird/wasm/


Code source (Licence: GPLv3) : https://github.com/nspire-emus/firebird
Téléchargement (Windows, macOS, Linux, Android, iOS): archives_voir.php?id=250252
Lien vers le sujet sur le forum: Firebird Emu v1.6 - nouvelle version de l'émulateur Nspire ! (Commentaires: 6)

-
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.
1216 utilisateurs:
>1176 invités
>36 membres
>4 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)