Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ALLEGRO -> LES BASES [VC++ 6.0]


Information sur la source

Catégorie :Divers Niveau : Débutant Date de création : 05/09/2003 Date de mise à jour : 05/09/2003 22:23:24 Vu / téléchargé: 3 005 / 235

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

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

  • /*
  • * 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( );
/*
    * 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!!
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de AmK le 06/09/2003 17:04:53

vive allegro !!!

signaler à un administrateur
Commentaire de nomenclator le 06/09/2003 19:34:26

Salut D1m3X, merci pour tes remarques concernant mon utilisation de malloc.
C' est vrai que mes commentaires sont mal insérés avec mon code et en plus il y a des lettres qui manquent a des mots.Enfin !
J' ai zieuté ton code sur allegro , et j ai essayé de le compiler sous VC++ avec la bibli allegro.h. Et lorsque que je cherche a executer ton code, je vois que j' ai besoin djgpp. Qu est ce que c' est ?
Ou serait il possible de le trouver ?

Merci et bonne continuation !

signaler à un administrateur
Commentaire de AmK le 07/09/2003 17:31:57

BIZARRE SOUS VC++ ça DOIT MARCHER SANS PROB EST CE QUE TU E S SUR D' AVOIR PLACe LA DLL LA OU Il faut ???? tu as bien installé la lib d'allegro ? n'oublie qu'il faut que tu ajoutes alleg.lib et que tu mettes subsystem : windows et non pas console !!

signaler à un administrateur
Commentaire de nomenclator le 10/09/2003 03:01:29

Je n' arrive pas a trouver alleg.lib sur les moteurs de recherche , mais j' ai vu a l' article 464 de ce site des explications pour l' installer DJGPP et tout le tralala, mais ca ne parle pas a vrai dire. En tout cas apres la creation d' un fichier djgpp.bat comme il est dit de faire et d' aller ensuite dans Propriétes/ memoire. Moi j' ny arrive pa. J' ai pas l' onglet memoire !

N' etant pas un expert en ce type de prog :
Si t' as une idée sur la question, je veux bien que tu éclaires ma lanterne !
Merci d' avance.

signaler à un administrateur
Commentaire de AmK le 10/09/2003 17:23:45

si tu veux d'ici quelques jours je t'envoie le zip d'allegro tout pret pour vc++ !!! :) c'est quoi ton email ?

signaler à un administrateur
Commentaire de nomenclator le 10/09/2003 17:59:24

Ah cool ! Merci de me le proposer.
Donc mon email est : nomenclator_68@hotmail.com.
A++.


signaler à un administrateur
Commentaire de SoaB le 20/10/2003 19:13:26

so.ab@ifrance.com plz je le veux bien ossi ca serait cool car je n'arrive pas à intégrer Allegro ds VC++

signaler à un administrateur
Commentaire de nicographx le 27/03/2004 14:31:00

Vu que tou le monde le demande, je le demande aussi ;) car moi non plus je n'arrive pas a configurer allegro dans VC++

Donc si tu pouvé m'nevoyer ossi le fichier, ca seré sympa
merci d'avance
nicographx@hotmail.com

signaler à un administrateur
Commentaire de Mosley le 04/10/2006 07:09:14

Si l'un de vous pouvez m'envoyer un tutoriel sur la création d'un GUI avec Allegro sous dev c++!!
le mail c mahraptor@hotmail.com
merci d'avance!!

signaler à un administrateur
Commentaire de cdesroch le 09/01/2007 01:36:02

Est-ce que quelqu'un peut me faire suivre ce zip de allegro pour Visual Studio 6 C++?

sur ce courriel: moi123@laposte.net

signaler à un administrateur
Commentaire de lilperso le 14/03/2009 23:05:52

please est ce que tu peut donner un lien pour telecharger pour le curseur

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.