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
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.