GENERER DES NOMBRES PSEUDO ALEATOIREMENT PUIS FAIRE UN GRAPHIQUE AVEC
Source / Exemple :
// PROGRAMME EN C SOUS DOS TURBO C++ BORLAND
// ecrit le 16-03-2002 par cmarsc
// GRAPHIQUE EXPRESS NOMBRE ALEATOIRE
#include <stdio.h>
#include <stdlib.h> // pour rand
#include <conio.h> // pour gettext
#include <dos.h> // pour delay
#define VALEUR_MAXI 49 // sortir les numeros entre 3 et 49
#define NBRE_DE_BARRE_MAXI 12 // graphique avec 12 barres
void afficher_le_texte (void);
void graphique(int numero_tire,char type_effet);
void effacer_ecran(void);
static char *texte = " Graphique des numeros tires aleatoirement ";
int main(void) {
char votre_choix;
int numero_tire;
votre_choix = '\0';
textbackground(BLUE); // fond BLEU
clrscr(); // effacer l'ecran
_setcursortype(_NOCURSOR); // supprimer le curseur clignotant
do {
// choisir la valeur par defaut si choix non valide 1 2 ou 3
// valeur par defaut
if (votre_choix < '1' || votre_choix > '3' ) votre_choix = '1';
do {
numero_tire = rand() % (VALEUR_MAXI) +1;
// type d'effet 1 2 ou 3
graphique(numero_tire,votre_choix);
} while (!kbhit()); // detecter une touche frappee
// au clavier
votre_choix = getch();
} while (votre_choix != 27); // ESC sortir du programme
return 0;
} // fin de main
void afficher_le_texte (void) {
int i1, i2;
textcolor(WHITE); // texte blanc
textbackground(rand() % (15)); // choisir aleatoirement
// la couleur de fond
for (i1 = 0; i1 < 37; i1++) {
gotoxy(1+i1,2); // deplacer texte a la colonne 37
cprintf("%s",texte); // de gauche vers la droite
delay(5); // ralentir l'effet
}
for (i2 = 0; i2 < 20; i2++) {
gotoxy(1+i1-i2,2); // deplacer texte colonne 37-20
cprintf("%s",texte); // de droite vers la gauche
delay(5); // ralentir l'effet
}
textbackground(BLUE); // fond bleu
gotoxy(20,1);
cprintf("Taper 1 2 ou 3 ESC pour sortir ");
} // fin afficher_le_texte
void graphique(int numero_tire,char type_effet) {
int i1 , hauteur_barre, couleur_barre;
static int nbre_de_barre;
static int col = 0;
// eviter un numero inferieur a 3 car valeur trop petite
if (numero_tire < 3) return ;
// calculer la hauteur de la barre
hauteur_barre = (numero_tire * 21) / VALEUR_MAXI;
// remettre le compteur a zero lorsque les 12 barres sont affichees
nbre_de_barre = (nbre_de_barre >= NBRE_DE_BARRE_MAXI) ? 0 : nbre_de_barre;
if (nbre_de_barre < 0 || nbre_de_barre > NBRE_DE_BARRE_MAXI) exit(0);
if (type_effet == '1') {
if (!nbre_de_barre) {
delay(1000); // attendre avant d'effacer
effacer_ecran(); // effacer l'ecran a chaque fois
afficher_le_texte();
}
}
++nbre_de_barre;
col = nbre_de_barre * 6; // 6 = ecart entre 2 barres
if (type_effet == '2') {
// effacer la barre de haut en bas
for (i1 = 0; i1 < 22 ; ++i1) {
gotoxy(col,3 + i1 );
cprintf( "%5c",'\0');
delay(5 ); // ralentir l'effet
}
}
for (i1 = 0; i1 < hauteur_barre ; ++i1) {
// definir les couleurs des barres
switch (nbre_de_barre) {
case 1: couleur_barre = 2; break;
case 2: couleur_barre = 15; break;
case 7: couleur_barre = 14; break;
case 8: couleur_barre = 13; break;
default: couleur_barre = nbre_de_barre; break;
}
textcolor(couleur_barre);
gotoxy(col,23-i1); cprintf("%3d%3c",numero_tire,'\0');
gotoxy(col,24 - i1 ); cprintf( "ÛÛÛÛ");
if (i1 < hauteur_barre ) { // dessiner l'ombre
textcolor(BLACK); // couleur noir
gotoxy(col+4,24 - i1 );
cprintf( "Û");
}
delay(10); // ralentir l'effet
}
if (type_effet == '3') {
// effacer le haut de la barre
for (i1 = 0; i1 < 21 - hauteur_barre ; ++i1) {
gotoxy(col,3 + i1 );
cprintf( "%5c",'\0');
delay(15); // ralentir l'effet
}
}
return ;
} // fin graphique
void effacer_ecran(void) {
int i1;
// deplacer tout l'ecran vers le haut
for (i1 = 0; i1 < 50 ; ++i1) {
gotoxy(1,25);
cprintf("\n");
delay(5); // ralentir l'effet
}
return ;
} // fin effacer_ecran
Conclusion :
// PROGRAMME EN C SOUS DOS TURBO C++ BORLAND
// ecrit le 16-03-2002 par cmarsc
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.