Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Tutorial allegro (gestion du clavier et deplacement d'un rond àl'ecran)

0/5 (11 avis)

Vue 10 976 fois - Téléchargée 607 fois

Description

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

Codes Sources

A voir également

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.