Allegro -> les bases [vc++ 6.0]

Description

Ce petit début vous expliquera un peu comment utiliser la bibliothèque graphique, très pratique pour le dévellopement de jeux, la plus simple que j'ai rencontré, associé au C++ ...

Pas de grande difficulté pour ceux qui connaisse un peu de C++, et ceux qui sont fort en anglais auront d'autant plus facile à se rappeler les noms des fonction, tout à fait anglais standard ^^ i.e. : load_bitmap(...); je crois que ceux qui connaissent l'anglais, et même ceux qui ne le connaissent pas, devrait comprendre l'action de cette fonction sans trop de problème ...

Source / Exemple :


/*

  • Ce programme va servir à vous initialiser à la programmation
  • avec la biblio Allegro, il va vous montrer comment charger un
  • bitmap pour le mettre en curseur et comment faire pour que ce
  • curseur change lorsque par exemple la souris passe au dessus
  • d'un bouton
  • Programmed by [DmX]
  • /
#include <allegro.h> // Pour permettre l'utilisation de la bibliothèques BITMAP *buffer,
  • mouse,
  • MouseOver;
// Déclaration d'une palette, pour la couleur... PALETTE palette; int main( void ) { /******************** Initialisations allegro ********************/ /*
  • L'initialisation allegro sert a installer en qq sorte tt les driver
  • si on install le clavier aver install_keyboard() de allegro on pourra
  • l'utiliser dans les programmes\jeux allegro dans leskel cette fonctions
  • est appelee.
  • toutes les initialisatiosn servent a rendre les different drivers utilisable
  • /
// cette fonction est la mm ke allegro_init( ); install_allegro ( SYSTEM_AUTODETECT, &errno, atexit ); // initialisation du clavier, pour pouvoir utiliser readkey( ); et le tableau key[] install_keyboard ( ); // initialisation de la souris, pour pouvoir change son curseur et l'afficher install_mouse ( ); // le texte sera en mode transparence text_mode ( -1 ); set_color_depth( 24 ); if(set_gfx_mode( GFX_AUTODETECT, 640, 480, 0, 0 ) < 0 ) { set_gfx_mode ( GFX_TEXT, 0, 0, 0, 0 ); allegro_message ( "Ce programme ne peut pas etre initialise!\n" ); exit( 1 ); } /******************** Fin des initialisations ********************/ //Crée les deux bitmaps buffer = create_bitmap ( 640, 480 ); // la souris sera le bmp Player.bmp mouse = load_bitmap "D:\\Images\\AllegroGame\\MouseCursor3.bmp", palette ); // curseur ki sera appliker kan la souris se trouvera o dessus du bouton MouseOver = load_bitmap( "D:\\Images\\AllegroGame\\Player.bmp", palette ); /*
  • Les quatres appelle de fonction ki suivent servent à:
  • set_mouse_sprite( ); sert à mettre l'argument comme curseur de la souris
  • set_mouse_sprite_focus( ); set à placer le point de 'gravité' de la souris
  • ce point sera celui sur lekel la souris tournera, avancera :)
  • set_mouse_range( ); sert à limiter le deplacement de la souris, les arguments
  • seront une sorte de rectangle ki delimiterons le deplacement souris
  • position_mouse( ), place la souris a la position en X comme premier argument
  • et la position en Y comme deuxieme argument
  • /
set_mouse_sprite ( mouse ); set_mouse_sprite_focus ( 12.5, 12.5 ); set_mouse_range ( 100, 100, 539, 379 ); position_mouse ( 150, 240 ); //Execute la boucle tant que la touche echap n'est pas appuyée while( !key[ KEY_ESC ] ) { /*
  • Les quatres appel de fonctions qui suivent servent à:
  • clear_bitmap( ); effacer le bitmap buffer, pour avoir un ecran vide
  • rectfill( ); creer un rectangle plein en couleur (les deux fois)
  • textout_centre( ); ecrire un texte centrer a l'ecran
  • /
clear_bitmap ( buffer ); rectfill ( buffer, 100, 100, 539, 379, makecol( 128, 128, 128 ) ); rectfill ( buffer, 240, 230, 400, 250, makecol( 192, 192, 255 ) ); textout_centre ( buffer, font, "Click here !", 320, 240, makecol( 0, 0, 250 ) ); //Vérifie si le pointeur est au dessus du bouton if( mouse_x > 240 && mouse_x < 400 && mouse_y > 230 && mouse_y < 250 ) { set_mouse_sprite( MouseOver ); textout( buffer, font, "La souris est au dessus du bouton", 10,10, makecol( 255, 255, 255) ); //Vérifie si le bouton gauche est appuyé if( mouse_b & 1 ) { clear_bitmap( buffer ); textout_centre( buffer, font, "Vous etes vraiment naif !", 320, 230, makecol( 255, 255, 255 ) ); install_int_ex( DecrementeTimer, SECS_TO_TIMER( 1 ) ); for ( ; CompteARebour >= 0; ) { textprintf( buffer, font, 320, 250, makecol( 255, 255, 255 ), "%d", CompteARebour ); } remove_int( DecrementeTimer ); } //Vérifie si le bouton droit est appuyé if( mouse_b & 2 ) { textout( buffer, font, "Pas avec le bouton droit !", 10, 30, makecol( 255, 255, 255 ) ); } } // si la souris ne se trouve pas sur(au dessus) le(du) bouton else { // Je remet le curseur initial set_mouse_sprite( mouse ); // J'écris les différent texte textout( buffer, font, "La souris n\'est pas au dessus du bouton!", 10, 10, makecol( 255, 255, 255 ) ); // si le bouton droit est appuye en dehors du bouton if ( mouse_b & 1 ) { textout( buffer, font, "Appuyez sur le bouton!!!", 10, 30, makecol( 255, 255, 255 ) ); } // si le bouton droit de la souris est appuye en dehors du bouton if ( mouse_b & 2 ) { textout( buffer, font, "Pas avec le droit! :\\", 10, 30, makecol( 255, 255, 255 ) ); } } //Affiche la souris sur le bitmap 'buffer' show_mouse ( buffer ); //Affiche buffer à l'écran blit ( buffer, screen, 0, 0, 0, 0, 640, 480 ); } /*
  • detruit le bitmap, en d'autre mot: desalloue la memoire allouee
  • car le bitmap mouse est alloue ss le savoir avec load_bitmap
  • ki va stocké le bitmap en memoire
  • /
destroy_bitmap( mouse ); return 0; } END_OF_MAIN( );

Conclusion :


Biensur pour, pouvoir compiler ce programme vous aurez besoin de la librairie Allegro, et lisez bien l'aide à l'utilisation!!!!! :)

pas de bugs avec VC++ 6.0!!

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.