IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Allegro

FAQ AllegroConsultez toutes les FAQ

Nombre d'auteurs : 3, nombre de questions : 29, création le 10 mai 2013 

 
OuvrirSommaire2DTexte

Allegro dispose principalement de deux fonctions pour afficher du texte à l'écran :

 
Sélectionnez
void textout_ex(BITMAP *bitmap, const FONT *font, const char *string, int x, int y, int color, int background);

--> Permet d'afficher une chaîne de caractères sans formatage.

 
Sélectionnez
void textprintf_ex(BITMAP *bitmap, const FONT *font, int x, int y, int color, int background, const char *format, ...);

--> Permet d'afficher une chaîne de caractères avec formatage ; l'utilisation étant la même que les fonctions de type printf.

Examinons tout d'abord la fonction textout_ex et ses arguments :

  • bitmap est le bitmap sur lequel la chaîne va être écrite ;
  • font est la police de caractères utilisée pour écrire le message ; Allegro fournit une police standard appelée font ;
  • string est la chaîne de caractères à afficher ;
  • x et y sont les coordonnées où va être placée la chaîne de caractères ;
  • color est la couleur du texte ; pour définir une couleur, il faut utiliser la macro makecol(r, g, b) ;
  • background est la couleur de fond du texte ; on peut mettre une couleur de fond par exemple avec makecol ou mettre un fond transparent en passant la valeur -1.

Note : si vous utilisez une version archaïque d'Allegro (par exemple la 4.0.X), ou même si vous lisez des tutoriels Allegro un peu anciens, il se peut que vous tombiez sur la fonction textout au lieu de textout_ex. Pas de panique, textout est toujours présente dans les nouvelles versions d'Allegro même si elle est dépréciée. La seule différence entre textout et textout_ex est l'absence d'argument background.

Voici un exemple d'utilisation de textout_ex

 
Sélectionnez
/* On suppose qu'Allegro est correctement initialisé */

/* On définit une chaîne à afficher */
char chaine[] = "Ceci est un test d'affichage de texte";

/* On l'affiche sur l'écran en (10, 10) avec la police par défaut, en blanc sur fond transparent */
textout_ex(screen, font, chaine, 10, 10, makecol(255, 255, 255), -1);

/* On fait une pause de 5 secondes pour admirer le résultat */
rest(5000);

Examinons maintenant textprintf_ex et ses arguments :

  • bitmap, font, x, y, color, background et string ;
  • sont les mêmes que précédemment ;
  • ... sont les arguments additionnels en cas de formatage de la chaîne.

La fonction textprintf_ex fonctionne de la même manière que printf pour ce qui est du formatage de chaîne. Si vous voulez placer un entier dans le message par exemple, il suffit de spécifier %d dans la chaîne, puis votre entier dans les arguments additionnels.

Note : même remarque que précédemment concernant textprintf, que vous pourrez retrouver si vous utiliser une ancienne version d'Allegro ou d'un tutoriel.

Voici un exemple d'utilisation de textout_ex :

 
Sélectionnez
/* On suppose qu'Allegro est correctement initialisé */

/* On définit une chaîne à afficher */
char chaine[] = "Test du formatage. On affiche un entier : %d, un flottant : %f, un caractere : %c";

/* Puis quelques variables à placer dedans */
int   entier    = 15;
float flottant  = 3.14f;
char  caractere = 'c';

/* On l'affiche sur l'écran en (10, 10) avec la police par défaut, en blanc sur fond transparent
   On place les paramètres additionnels dans leur ordre d'apparition dans la chaîne de formatage */
textprintf_ex(screen, font, 10, 10, makecol(255, 255, 255), -1, chaine, entier, flottant, caractere);

/* On fait une pause de 5 secondes pour admirer le résultat */
rest(5000);
Créé le 14 septembre 2008  par xboxut

Pour obtenir un affichage correct des caractères spéciaux tels que les accents, il faut changer le format d'encodage des caractères avec la fonction suivante :

 
Sélectionnez
void set_uformat(int type);

Pour gérer correctement les accents, on pourra par exemple passer en paramètre U_ASCII, qui définit le mode ASCII étendu (8 bits). Les autres encodages possibles sont U_ASCII_CP, U_UNICODE et U_UTF8.

ATTENTION : bien que l'on puisse changer l'encodage des caractères à la volée, ce n'est pas conseillé. Si l'on souhaite utiliser la fonction set_uformat, il est conseillé de l'appeler avant l'initialisation d'Allegro (allegro_init) et de ne plus y toucher par la suite.
En effet, les chaînes chargées avant et après l'appel à cette fonction risquent d'être incompatibles du fait d'une représentation mémoire différente.

Créé le 14 septembre 2008  par xboxut

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008-2012 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.