Effets d'affichages 2 mode graphique turbo c++ 2

Contenu du snippet


Source / Exemple :


//  PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
//  ecrit le 24-06-2002 par cmarsc
//  EFFETS D'AFFICHAGES 2 MODE GRAPHIQUE

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <dos.h>

#define FOND_ECRAN CYAN

int initialiser_mode_graphique (void);

void entree_clavier (void);
void box_bouton(int x1, int y1,int x2, int y2, int coul_fond);
void message (int x1, int y1, int coul_texte,char *texte, int taille_texte);

void effet_cadre6 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre7 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre8 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre9 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre10 (int x1, int y1,int x2, int y2, int couleur);
void effet_cadre11(int x1, int y1,int x2, int y2, int couleur);
void effet_cadre12(int x1, int y1,int x2, int y2, int couleur);

int main(void)
{

   initialiser_mode_graphique();

   // cadre bleu haut

// x1 = 1  y1 = 1  x2 = max  y2 = 30 coul_fond bleu clair
   box_bouton(1,1, getmaxx(), 30, LIGHTBLUE);

// x1 = 10  y1 = 3  coul_fond = vert  texte   taille_texte = 7
   message(10,3, LIGHTCYAN, "ENTREZ UN CHIFFRE ENTRE 1 ET 7", 7);
   message(505,3, LIGHTGREEN, "ESC QUITTER", 7);

   // grand cadre noir
   box_bouton(1,35, getmaxx(), getmaxy(), FOND_ECRAN);

   entree_clavier();
   return 0;
}

int initialiser_mode_graphique(void) {

   // detection automatique du mode video
   int gdriver = DETECT, gmode, errorcode;

// initialiser le mode graphique
   initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

   errorcode = graphresult();

// tester si une erreur se produit
   if (errorcode != grOk)
   {
	  printf("ERREUR : %s\n", grapherrormsg(errorcode));
	  printf("Appuyez sur une touche :");
	  getch();
	  exit(1);
   }

return 0;

} // fin de la fonction initialiser_mode_graphique

void box_bouton(int x1, int y1,int x2, int y2, int coul_fond) {

	 int i1;
	 // rectangle en couleur
	 setfillstyle(SOLID_FILL,coul_fond);
	 bar (x1, y1, x2, y2);

	 // dessiner un bouton avec un effet de relief 3
	 for (i1 = 0; i1 < 3; i1++) {

		setcolor(WHITE);
		line (x1+i1, y1+i1, x2-i1 ,  y1+i1);  // trait haut
		line (x1+i1, y1+i1, x1+i1 ,  y2-i1);  // trait gauche

		setcolor(LIGHTGRAY);
		line (x1+i1, y2-i1, x2-i1 ,  y2-i1);  // trait bas
		line (x2-i1, y1+i1, x2-i1 ,  y2-i1);  // trait droite
	 }

return ;
} // fin de la fonction box

void message(int x1, int y1, int coul_texte, char *texte, int taille_texte) {

	 // afficher un message avec differentes tailles
	 // de caracteres
	 int i;
	 settextstyle(SMALL_FONT, HORIZ_DIR,taille_texte);

	 // texte en arriere plan
	 setcolor(coul_texte);
	 outtextxy(x1,y1, texte);

	 // texte en avant plan
	 setcolor(BLACK);
	 for (i = 0; i< 2;i++) {
	   outtextxy(x1+ 1, y1 + i, texte);
	 }

return ;
}

void entree_clavier(void) {

	 char votre_choix;
while(1) {	    // TAPER ESC POUR SORTIR

	votre_choix = getch();

	switch (votre_choix) {
	case '1':

	   // x1 = 50  y1 = 45  x2 = 600 y2  = 450  couleur = vert clair
		effet_cadre6(50, 45,600, 450, LIGHTCYAN);
		sleep(1); // effacer avec le meme effet
		effet_cadre6(50, 45,600, 450, FOND_ECRAN);
		break;

	case '2':

	   // x1 = 10  y1 = 55  x2 = 500 y2 = 450  couleur = rouge vif
		effet_cadre7(10,55,500,450, LIGHTRED);
		sleep(1); // effacer avec le meme effet
		effet_cadre7(10,55,500,450, FOND_ECRAN);
		break;

	case '3':

	   // x1 = 105  y1 = 75  x2 = 500 y2 = 450  couleur = vert clair
		effet_cadre8(105, 75, 500, 450, LIGHTGREEN);
		sleep(1); // effacer avec le meme effet
		effet_cadre8(105, 75, 500, 450, FOND_ECRAN);
		break;

	case '4':

	   //  x1 = 50  y1 = 45  x2 = 600 y2 = 400  couleur = jaune
		effet_cadre9( 50, 45, 600, 400, YELLOW);
		sleep(1); // effacer avec le meme effet
		effet_cadre9( 50, 45, 600, 400, FOND_ECRAN);
		break;

	case '5':

	   //  x1 = 15  y1 = 45  x2 = 630 y2 = 450  couleur = violet
		effet_cadre10(15, 45, 630, 450, LIGHTBLUE);
		sleep(1); // effacer avec le meme effet
		effet_cadre10(15, 45, 630, 450, FOND_ECRAN);
		break;

	case '6':

	   //  x1 = 15  y1 = 45  x2 = 630 y2 = 450  couleur = noir
		effet_cadre11(15, 45, 630, 450, BLACK);
		sleep(1); // effacer avec le meme effet
		effet_cadre11(15, 45, 630, 450, FOND_ECRAN);
		break;

	case '7':

	   //  x1 = 8  y1 = 45  x2 = 630 y2 = 455  couleur = noir
		effet_cadre12(8, 45, 630, 455, BLACK);
		sleep(1); // effacer avec le meme effet
		effet_cadre12(8, 45, 630, 455, FOND_ECRAN);
		break;

	 case 27:     // fin du programme
		closegraph();    // fin mode graphique
		exit(0);
		break;

	 default:

		break;
	 } // fin de switch

} // fin de while(1)
// return ;
} // fin de la fonction entree_clavier

void effet_cadre6(int x1, int y1,int x2, int y2, int couleur) {

	// afficher du haut gauche vers le bas droit

	int i1, i2;
	setcolor(couleur);

	for (i1 = 0, i2 = 0; (y1+i1 <= y2) || (x1 + i2 <= x2); ) {

	   if (y1 + i1 <= y2) i1 ++;
	   if (x1 + i2 <= x2) i2 ++;
	   rectangle (x1, y1, x1+i2 , y1+i1);
	}

return ;
} // fin de la fonction effet_cadre6

void effet_cadre7(int x1, int y1,int x2, int y2, int couleur) {

	// afficher du haut droit vers le bas gauche

	int i1, i2;
	setcolor(couleur);

	for (i1 = 0, i2 = 0; (y1 + i1 <= y2) || (x2 - i2 >= x1); ) {

	   if (y1 + i1 <= y2) i1 ++;
	   if (x2 - i2 >= x1) i2 ++;
	   rectangle (x2-i2, y1, x2 , y1+i1);
	}

return ;
} // fin de la fonction effet_cadre7

void effet_cadre8(int x1, int y1,int x2, int y2, int couleur) {

	// afficher du bas gauche vers le haut droit

	int i1, i2;
	setcolor(couleur);

	for (i1 = 0, i2 = 0; (y2 - i1 >= y1)  || (x1 + i2 <= x2); ) {

	   if (y2 - i1 >= y1) i1 ++;
	   if (x1 + i2 <= x2) i2 ++;
	   rectangle  (x1, y2 - i1+1, x1 + i2  , y2);
	}

return ;
} // fin de la fonction effet_cadre8

void effet_cadre9(int x1, int y1,int x2, int y2, int couleur) {

	// afficher du bas droit vers le haut gauche

	int i1, i2;
	setcolor(couleur);

	for (i1 = 0, i2 = 0; (y2 - i1 >= y1)  || (x2 - i2 >= x1); ) {

	   if (y2 - i1 >= y1) i1 ++;
	   if (x2 - i2 >= x1) i2 ++;
	   rectangle  (x2 - i2 +1, y2 - i1, x2 , y2);
	}

return ;
} // fin de la fonction effet_cadre9

void effet_cadre10(int x1, int y1,int x2, int y2, int couleur) {

	// afficher du milieu vers le haut et le bas

	int i1;
	float milieu_y;

	// calculer le centre de la figure
	milieu_y = y1 + ((y2 - y1) / 2);

	setcolor(couleur);

	for (i1 = 0; (milieu_y-i1 >= y1) && (milieu_y +i1) <= y2 ; ) {

	   if (milieu_y -i1 >= y1) i1 ++;
	   rectangle (x1, milieu_y -i1+1, x2 , milieu_y+i1);
	}

return ;
} // fin de la fonction effet_cadre10

void effet_cadre11(int x1, int y1,int x2, int y2, int couleur) {

	// afficher du milieu vers la gauche et la droite

	int i2;
	float milieu_x;

	// calculer le centre de la figure
	milieu_x = x1 + ((x2 - x1) / 2);

	setcolor(couleur);
	for (i2 = 0; (milieu_x-i2 >= x1) && (milieu_x +i2) <= x2 ; ) {

	   if (milieu_x -i2 >= x1) i2 ++;
	   rectangle (milieu_x-i2+1, y1, milieu_x + i2 , y2);
	}

return ;

} // fin de la fonction effet_cadre11

void effet_cadre12(int x1, int y1,int x2, int y2, int couleur) {

	// afficher du milieu vers la gauche et la droite

	int i1;
	float milieu_y;

	// calculer le centre de la figure
	milieu_y = y1 + ((y2 - y1) / 2);

	setcolor(couleur);
	for (i1 = 0; i1 < milieu_y; i1++) {
		rectangle (x1+i1, y1+i1, x2-i1 ,  y2-i1);
		delay(1);
	}

return ;
} // fin de la fonction effet_cadre12

Conclusion :


// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 24-06-2002 par cmarsc
// EFFETS D'AFFICHAGES 2 MODE GRAPHIQUE

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.