Graphiques avec la carte Galaxia

Cet article a pour objet de proposer une bibliothèque minimale écrite en Python et destinée à afficher des graphiques et/ou du texte sur l’écran de la carte Galaxia. Pour cela nous proposons deux classes : une classe Font pour définir un jeu de caractères et une classe Screen comportant les différentes fonctions d’affichage.

La classe Font

Le choix s’est porté sur une fonte non proportionnelle de dimensions 8 pixels en largeur sur 8 pixels en hauteur. L’écran de la carte Galaxia ayant une résolution de 160 pixels en largeurs sur 128 pixels en hauteur, cela permet d’afficher 16 lignes de 20 caractères. Pour stocker un caractère, il faut 8 octets, La fonte est donc mémorisée dans un fichier binaire « font8x8.bin » de 2048 octets. Ce fichier a été généré à partir du fichier texte 8x8_horizontal_MSB_2.asm disponible sur github basti79 Cette fonte a l’apparence suivante:

Classe Font.py

Python

La classe Screen

La classe Screen a été écrite à partir d’informations obtenues avec l’aide GPT 3.5 en chattant sur micropython et circuitpython. Les suggestions de Chat GPT ont été éventuellement modifiées afin qu »elles donnent les résultats attendus. En résumé la classe Screen propose un constructeur permettant de définir les dimensions de l’écran, un bitmap correspondant à ces dimensions associé à une palette de 256 couleurs. Ainsi nous avons choisi que chaque pixel pouvait avoir l’une des 256 couleurs. Ces couleurs sont définies par un calcul à partir de 3 entiers compris entre 0 et 255 (rouge, vert, bleu).

Les fonctions disponibles sont:

  • setColor(r,g,b) : définit la couleur courante de tracé (composantes : rouge, vert et bleu). Toutes fonctions suivantes ( exceptée fillScreen )utilisent la couleur de tracé courante
  • drawPixel(x,y) : trace un pixel en colonne x et ligne y
  • drawLine(x0,y0,x1,y1) : trace un segment de droite du point (x0,y0) au point (x1,y1)
  • drawRect(x,y,w,h) : dessine un rectangle dont le point en haut et à gauche a pour coordonnées (x,y), de largeur w et de hauteur h
  • fillRect(x,y,w,h) : dessine un rectangle plein (voir drawRect pour les paramètres)
  • drawChar,c,x,y): affiche le caractère c en position colonne x et ligne y
  • drawString(string,x,y) : affiche la chaine de caractères string en position colonne x et ligne y
  • drawCircle(x,y,r) : dessine un cercle centré en x,y et de rayon r
  • fillScreen(r,g,b): remplit complétement l’écran avec la couleur spécifiée
Python

Exemple d’utilisation

Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *