Bon j'ai decide de faire un tutorial sur allegro pour ceux qui ne connaissent pas encore cette magnifique librairie graphique specialement concue pour les jeux , voila ce tutorial montre comment deplacer un rond à l'ecran et aussi la gestion du clavier ...
Source / Exemple :
////////////////////////////////////////////////////////////////////////////////////
// Gestion du clavier avec Allegro //
// Deplacement d'un Rond a l'ecran //
// Auteur : Amokrane Chentir //
// Date : 31/05/2003 //
////////////////////////////////////////////////////////////////////////////////////
#include <allegro.h>
void main()
{
BITMAP *image; // pour charger un fond noir de taille 640 * 480
BITMAP *buffer;// buffer indispensable pour afficher l'image a l'ecran grace a la fonction blit
PALETTE palette;// la palette on s'en servira lors du chargement de l'image
int x=320; // position du rond en x initial
int y=240; // position du rond en y initial
install_allegro(SYSTEM_AUTODETECT,&errno,atexit); // fonction d'initialisation d'allegro
install_keyboard(); //initialisation du clavier
set_color_depth(16); // mode 16 bits(plein ecran)
set_gfx_mode(GFX_AUTODETECT,640,480,0,0); // indispensable pour le graphisme
buffer=create_bitmap(640,480); // buffer de taille 640 * 480
image=load_bitmap("noir.bmp",palette); // chargement de l'image .BMP
while(!key[KEY_ ESC]) // Tant que l'on a pas pressé la touche ESC (echap)
{
textout(image,font,"Deplacement d'un Rond avec Allegro !",1,1,makecol(100,100,12)); //la fonction makecol est expliquée plus bas
circle(image,x,y,5,makecol(255,0,0)); // Affichage sur notre bitmap d'un cercle dont le centre est au coordonés x=320 et y=240 et de rayon 5
blit(image,buffer,0,0,0,0,image->w,image->h); // Affichage de l'image sur le buffer
blit(buffer,screen,0,0,0,0,640,480); // le buffer affichera ceci sur l'ecran
if(key[KEY_UP]) // si on appuie sur la touche du haut
{
clear_bitmap(image); // efface l'ecran
y--; // on decrement y
circle(image,x,y,5,makecol(255,0,0)); // et on affiche de nouveau le cercle
}
else if(key[KEY_DOWN]) // LA meme chose ...
{
clear_bitmap(image);
y++;
circle(image,x,y,5,makecol(255,0,0));
}
else if(key[KEY_LEFT])
{
clear_bitmap(image);
x--;
circle(image,x,y,5,makecol(255,0,0));
}
else if(key[KEY_RIGHT])
{
clear_bitmap(image);
x++;
circle(image,x,y,5,makecol(255,0,0));
}
}
}
END_OF_MAIN(); // Allegro exige que l'on mette ça a la fin du code ...
/////////////////////////////////////////////////////////////////////////////////////////// //
// OK , alors makecol c'est pour la couleur , analysons les 3 parametres : //
// makecol(255,0,0) ici le premier parametre est 255 ce qui nous donnera la couleur rouge //
// makecol(0,255,0)ça c'est pour la couleur Verte //
// makecol(0,0,255) et vla pour la couleur Bleue //
// d'ou le mot RGB Red Green Blue //
// makecol(R,G,B) ! //
// Rappelez vous maintenant quand vous etiez a l'ecole primaire on vous apprenez a melanger les couleurs //
// primaires pour obtenir des couleurs secondaires , dans notre cas c'est la meme chose //
// ex : makecol(100,100,12); donnera la couleur vert militaire ! //
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* Ok maitenant parlons du systeme buffer affichage a l'ecran qui s'appelle entre autre le double buffering
le double buffering consiste a dessiner dabbord dans une zone de la memoire pour ensuite afficher le bitmap
à l'ecran , c'est ce que fait nos 2 fonctions blit(voir plus haut)
blit(image,buffer,0,0,0,0,image->w,image->h) => la on dessine dans une zone de la memoire
blit(buffer,screen,0,0,0,0,640,480);=> et la on affiche sur notre ecran de taille 640*480
C'est tres simple :) */
/* Allegro gere le clavier par le biais de diverses manieres ici j'ai utilise la technique la plus simple
key[KEY_$] : ou $ peut etre une lettre comme N B D U ou bien tout simplement la case ESC UP DOWN etc....
/* Pour plus d'infos sur la librairie d'allegro allez jetez un coup d'oeil sur www.allegro.cc */
Conclusion :
PS : je fais mes premiers pas avec allegro donc si il ya quelqu'un qui connait bien la librairie et qui trouve qu'il ya une erreur dans le code alors c'est avec plaisir qu'il me corrige :)
je tiens au passage a remercier un certain yeux d'or qui m'a fait connaitre allegro :p
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.