Genere des nombres aleatoirement et en fait des graphiques en mouvement
Source / Exemple :
// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 30-06-2002 par cmarsc
// GRAPHIQUE EN HISTOGRAMME MODE GRAPHIQUE
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <string.h>
#include <dos.h>
#define COUL_CADRE CYAN
#define MAXI 300
#define N_BARRES 12
enum reponse1 { NON,OUI };
int main(void) {
int gdriver = DETECT, gmode, errorcode;
int i,x;
int y1[N_BARRES], reponse[N_BARRES];
int graph1[N_BARRES], graph1_precedent[N_BARRES];
char texte[N_BARRES][5];
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
srand( (unsigned) time(NULL) );
memset(texte, '\0', N_BARRES);
// initialiser a zero
for (i = 0; i < N_BARRES; i++) {
y1[i] = 0; reponse[i] = OUI;
graph1[i] = 0; graph1_precedent[i] = 0;
}
// grand cadre
setfillstyle(1,COUL_CADRE);
bar (1, 00,getmaxx(), 355);
setcolor(BLACK);
rectangle(2 ,20 , getmaxx()-1,355 );
setcolor(WHITE);
rectangle(1 ,22 , getmaxx(),356+00 );
settextstyle(SMALL_FONT, HORIZ_DIR, 5);
sprintf(texte[0],"Projections des ventilations : 2003");
// effet d'ombre
setcolor(BLACK);
outtextxy(180 ,1,texte[0]);
// texte en rouge
setcolor(RED);
outtextxy(181 ,1,texte[0]);
// elargir le texte en longueur * 3 et en hauteur * 10
setusercharsize(3, 1,10, 1);
setfillstyle(1,CYAN);
bar (1,375,getmaxx() , getmaxy()-15);
setcolor(YELLOW);
rectangle (1,375,getmaxx() , getmaxy()-15);
setcolor(LIGHTCYAN);
sprintf(texte[0],"APPUYEZ SUR UNE TOUCHE POUR QUITTER");
outtextxy(12 ,360,texte[0]);
setcolor(BLACK);
// faire un effet 3D
for (i = 0; i < 2;i++) {
outtextxy(13 +i,360+i,texte[0]);
}
while( !kbhit() ) {
// x = 52 ecart entre les barres
for (i = 0, x = 5 ; i < N_BARRES; i++, x +=52) {
// determiner la hauteur de la barre
if (reponse[i] == OUI) {
// garder la valeur de graph1[i] precedente
graph1_precedent[i] = graph1[i];
graph1[i] = (rand() % MAXI) +1;
// effacer le chiffre en blanc sous la barre
setfillstyle(1, COUL_CADRE);
bar (15 + x,333 , 50 + x,350 );
// convertir le nombre tire
sprintf(texte[i],"%3d",graph1[i]);
// afficher ce nombre sous la barre
settextstyle(SMALL_FONT, HORIZ_DIR, 6);
setcolor(BLACK);
outtextxy(15 + x,331,texte[i]);
setcolor(WHITE);
outtextxy(16 + x,332,texte[i]);
}
if ( graph1[i] > graph1_precedent[i]) {
// faire monter la barre
if (y1[i] < graph1[i]) {
y1[i]++; reponse[i] = NON;
} else if (y1[i] == graph1[i]) {
// choisir un autre chiffre
reponse[i] = OUI;
}
} else {
// faire descendre la barre
y1[i]--; reponse[i] = NON;
if (y1[i] == graph1[i] || y1[i] <= 0 ) reponse[i] = OUI;
}
setcolor(COUL_CADRE);
rectangle(8 + x ,326 - y1[i] , 52 + x,327- y1[i] );
// dessiner les 2 traits sur les cotes
// trait rouge vif a gauche
setcolor(LIGHTRED);
rectangle(8 + x,330 - y1[i] , 9 + x,330 );
// barre au milieu en rouge
setcolor(RED);
rectangle(10 + x,330 - y1[i] , 50 + x,330 );
// trait noir a droite
setcolor(BLACK);
rectangle(51 + x,330 - y1[i] ,52 + x,330 );
} // fin de for (i)
} // fin de while
closegraph();
return 0;
} // fin de main
Conclusion :
// PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
// ecrit le 30-06-2002 par cmarsc
// GRAPHIQUE EN HISTOGRAMME 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.