I. Description d'Allegro

Allegro est un acronyme récursif qui correspond à "Allegro Low LEvel Game ROutines" (routines de bas niveau pour les jeux).

Il s'agit donc d'une API destinée au développement de jeux vidéos dans les langages C/C++. Cette API, distribuée gratuitement, supporte de nombreuses plateformes telles que des Unix (Linux, FreeBSD, Irix, Solaris Darwin), BeOS, MacOS X, Windows bien évidemment, et notre bon vieux DOS.

Allegro propose de nombreuses fonctions graphiques et sonores, gère le clavier, la souris, le joystick et des timers. Cette API dispose également de fonctions mathématiques 3d et en point fixe, de fonctions de gestion de fichiers de données compressés et d'une interface graphique.

Pour les connaisseurs, le moteur de combat 2D " Mugen " fut développé en C à l'aide d'Allegro. Nous allons voir comment installer cette API sous votre IDE préférée.

Il existe plusieurs méthodes pour installer Allegro. Vous pouvez par exemple choisir de compiler l'API pour ensuite l'utiliser ou bien directement télécharger les library compilées et les installer dans votre IDE. Je ne vous indiquerai pas ici la méthode pour compiler Allegro par contre je vous donnerai les informations nécessaires afin d'installer les library pré compilées.

Site web officiel : http://alleg.sourceforge.net/

II. Installation d'Allegro

II-A. Installation sous Dev-C++ (Bloodshed)

Vous trouverez cet IDE gratuit à cette adresse : http://www.bloodshed.net/dev/devcpp.html

Tout d'abord il va falloir télécharger les bibliothèques de fonctions compilées d'Allegro destinées au compilateur de Dev C++ qui est le plus souvent MinGW sous Windows.
Vous trouverez un .zip à cette adresse, section " Binary ", package pour MinGW : http://www.allegro.cc/files/

Une fois l'archive décompressée, vous remarquerez la présence de 3 dossiers : include, bin et lib.
Les fichiers contenus dans le dossier bin sont les DLL que vous devrez placer dans le répertoire system32 de votre dossier système : windows.
Les fichiers et dossiers se trouvant dans le dossier include doivent être copiés dans le dossier include de Dev C++. Il s'agit des header files contenant les signatures des fonctions d'Allegro et autres macros nécessaires au développement d'applications multimédia sous cette API.
Le contenu du dossier lib devra également être copié dans le dossier lib de Dev C++. Ces fichiers sont les bibliothèques contenant le code des fonctions que propose Allegro.

II-B. Installation sous Visual Studio

L'installation d'Allegro sous cet environnement est quasi identique à l'installation sous Dev C++. Cependant les compilateurs sont différents, de ce fait le format des bibliothèques de fonctions va changer. C'est pour cela qu'il faudra télécharger un pack propre à l'environnement Visual Studio.

Vous trouverez à cette adresse une liste d'archives .zip destinées à différentes versions de Visual Studio (de la version 6 jusqu'à la 8) : http://www.allegro.cc/files/

A partir de la, le déroulement est le même que celui sous Dev C++, il vous faudra copier le contenu du dossier bin dans le dossier Windows/system32, le contenu du dossier include dans le dossier include de votre Visual Studio et pour finir le contenu du dossier lib dans le dossier lib de votre IDE.

II-C. Installation sous Code::Blocks

Code::Blocks est l'éditeur montant, vous le trouverez ici : http://www.codeblocks.org/

Le développement de Dev C++ fut arreté et l'équipe du projet se tourna vers Code::Blocks. Tout comme Dev C++, Code::Blocks dans sa version Windows peut être téléchargé avec le compilateur MinGW, de ce fait il vous faudra télécharger le même pack que celui de Dev C++.

Vous trouverez donc le .zip à cette adresse, section " Binary ", package pour MinGW : http://www.allegro.cc/files/

La démarche est identique, le contenu du dossier lib dans le dossier lib de Code::Blocks, les include dans le dossier include et les DLL toujours dans windows/system32.

III. Configuration & Premier programme

III-A. Configuration sous Dev-C++

Sous Dev C++, 2 choix sont possibles : le projet console et l'application Windows. Mais avant de taper une quelconque ligne de programmation il va falloir configurer le compilateur afin qu'il sache utiliser les bibliothèques de fonctions d'Allegro lors de la phase de "linkage".

Il existe 2 manières de compiler une application Allegro : effectuer un "linkage" statique ou dynamique.

III-A-1. Linkage statique

Le "linkage" statique vous permettra de distribuer votre application sans avoir à la distribuer avec les DLL Windows d'Allegro. C'est un système qui peut s'avérer utile mais qui augmentera la taille de votre exécutable car il contiendra en plus de votre code, le code des fonctions d'Allegro (environs 500 ko).

Pour compiler votre application sous Dev C++ de manière statique il faut se rendre dans le menu Projet > Options du projet. Ensuite vous sélectionnez l'onglet Paramètres. C'est dans la section Editeur de lien que l'on va donner les renseignements au compilateur pour utiliser les library d'Allegro. Il faut copier la liste des library suivantes qui sont nécessaires à la compilation :

-lalleg_s -lgdi32 -lwinmm -lole32 -ldxguid -ldinput -lddraw -ldsound

  • alleg_s : Bibliothèque statique des fonctions d'Allegro
  • gdi32 : Bibliothèque classique Win32
  • winmm : Bibliothèque Windows bas niveau pour le son
  • ole32 : Bibliothèque Windows classique pour la gestion des objets OLE
  • dinput : Bibliothèque Direct Input (composant de DirectX gérant les E/S)
  • ddraw : Bibliothèque Direct Draw (composant de DirectX gérant l'affichage 2D)
  • dsound : Bibliothèque Direct Sound (composant de DirectX gérant le son)
  • dxguid : Bibliothèque de DirectX gérant le son également

Comme vous pouvez le voir, Allegro dans sa "version" Windows se base énormément sur DirectX ainsi que d'autres fonctions bas niveaux de l'API Windows. Afin de ne pas avoir à distribuer les DLL, il faut donc inclure aussi le code des fonctions sur lequelles Allegro se base.

Pour finir il faut indiquer dans la colonne compilateur l'option :
-DALLEGRO_STATICLINK.

Image non disponible

III-A-2. Linkage dynamique

La deuxième méthode consiste donc à se baser sur les DLL ce qui rendra la taille de l'exécutable plus petite mais obligera l'utilisateur à avoir les DLL d'Allegro pour pouvoir utiliser votre application.
La méthode est la même que pour le linkage statique sauf qu'au lieu de spécifier la longue liste des library d'Allegro il suffira juste de mettre dans la section Editeur de liens l'option : -lalleg.

Image non disponible

Et voila, vous êtes enfin prêt à écrire votre premier programme à l'aide d'Allegro ! Mais avant, voyons comment se déroule la configuration sous Visual Studio.

III-B. Configuration sous Visual Studio

Sous Visual Studio il vous faudra créer un projet de type Win32 Application. Choisissez de créer un projet vide, cela vous évitera la génération automatique de certains fichiers sources par l'IDE.

Image non disponible


Screenshot de Visual C++ 6.0

III-B-1. Linkage statique

Tout comme sous Dev C++ vous avez la possibilité de compiler votre application de manière statique. Une fois votre projet crée il faudra vous rendre dans Projet > Settings (sous Visual Studio 6.0) et choisissez l'onglet Link. Le champ qui nous intéresse est : Object/Library modules. C'est ici qu'il va falloir indiquer le nom des library que nous allons utiliser.

Pour une compilation statique il faudra remplir le champ comme ceci :

alleg_s.lib gdi32.lib winmm.lib ole32.lib dxguid.lib dinput.lib ddraw.lib dsound.lib

Image non disponible

III-B-2. Linkage dynamique

La démarche est identique mais il faudra seulement préciser la library alleg.lib.

Image non disponible

Attention !
Si vous utilisez Visual Studio Express 2005, il y a quelques différences : Il faut créer un nouveau projet vide dans la section Général et non pas une application Win32 comme l'on faisait.
De ce fait il va falloir configurer nous même les propriétés du projet. Voila la démarche à suivre pour pouvoir travailler dans les mêmes conditions :
Aller dans un Project / Properties. Section Configuration Properties / C/C++ / General modifier Debug Information Format en Program Database for Edit & Continue.
Dans Configuration Properties / C/C++ / Optimization modifier l'onglet Optimization en mettant disabled.
Dans Configuration Properties / C/C++ / Code Generation passer l'onglet Runtime Library à Multi-threaded Debug DLL.
Dans Configuration Properties / Linker / Input ajouter alld.lib dans Additional Dependencies.
Et pour finir dans Configuration Properties / Linker / Debugging passer Generate Debug à yes.
Source : http://awiki.tomasu.org/bin/view/Main/VisualCExpress2005

III-C. Configuration sous Code::Blocks

Pour créer une application Allegro sous Code::Blocks, il faut sélectionner une application de type Win32 GUI Applications.

Image non disponible

III-C-1. Linkage statique

Sous Code::Blocks, la configuration de la compilation se déroule dans Settings > Compiler, il faut ensuite choisir l'onglet Linker. Vous n'aurez pas à taper la liste des library à la main mais à travers le bouton Add (en bas à gauche), vous allez spécifier au compilateur ou se trouve les library qu'il devra utiliser lors de la phase de linkage.

Ces library sont les mêmes que ci dessus :

liballeg_s.a libgdi32.a libwinmm.a libole32.a libdxguid.a libdinput.a libddraw.a libdsound.a

Et vous les trouverez normallement dans le dossier lib de votre dossier d'installation de Code::Blocks.

Image non disponible


N'oubliez pas d'indiquer dans Settings > Compiler , onglet Compiler > Other options, l'option : -DALLEGRO_STATICLINK

III-C-2. Linkage dynamique

Il suffit simplement de préciser la library liballeg.a.

Image non disponible

III-D. Premier programme

Le header file

Avant toute chose il faut include l'header file principal d'Allegro qui se nomme tout simplement : allegro.h, c'est lui que vous devrez include à chaque fois que vous aurez besoin d'une fonction d'Allegro.

C
Sélectionnez
#include <allegro.h>

(Note : il est possible de définir la constante ALLEGRO_STATICLINK avant l'inclusion de ce header. La définition de cette constante signalera au compilateur que nous souhaitons effectuer une compilation statique. Si on effectue cela, on n'aura pas à renseigner le champ Compilateur dans la configuration du projet. La syntaxe est : #define ALLEGRO_STATICLINK).

Le fonction main

Etant donné qu'Allegro est multi plateforme, il fallait trouver un moyen de rendre la fonction main compatible. Car chaque plateforme possède sa propre implémentation de main (winmain sous windows etc...) Pour cela il existe la macro END_OF_MAIN() qui se chargera de remplacer le main codé par un main en adéquation avec la plateforme ciblé. De ce fait, la fonction main d'un programme se basant sur Allegro aura toujours cette syntaxe :

C
Sélectionnez

int main(void)
{
	/* code */
	return 0 ;
} END_OF_MAIN() ;
					

Initialisation d'Allegro

Avant une quelconque utilisation, Allegro a besoins d'être initialisé. Pour cela il existe une macro qui initialise la library (récupération des informations du système, créations de variables globales etc...) Cette macro est : allegro_init().

Il s'agit en fait de l'appel simplifié :

C
Sélectionnez
install_allegro(SYSTEM_AUTODETECT, &errno, atexit);

Il faut obligatoirement appeler allegro_init() avant d'effectuer quoi que ce soit avec les fonctions d'Allegro. Il existe quelques exceptions que nous étudierons plus tard. Cette fonction renvoie 0 si tout s'est bien passé.

Notre premier programme ressemblera donc a cela :

C
Sélectionnez

#include <allegro.h>
 
int main(void)
{
	/* Initialisation d'Allegro */
	if(allegro_init() != 0)
		return 1;
 
 	/* Affichage d'un message dans une boite de dialogue */
	allegro_message("Hello World with Allegro !");
 
	return 0 ;
} END_OF_MAIN() ;
 
					

Dans ce programme nous ne faisons qu'initialiser Allegro et afficher un message à l'écran. Nous étudierons en profondeur, dans le prochain article, l'affichage de texte sous Allegro.