Effets de textes 5 turbo c++2 devc++4

Description

Afficher le menu autrement avec des effets

Source / Exemple :


//  PROGRAMME EN C SOUS DOS TURBO C++ BORLAND
//  ecrit le 07-04-2002 par cmarsc 
//  MOVE TEXTE5

#include <stdio.h>
#include <conio.h>           // <conio.c> devc++4
#include <stdlib.h>
#include <string.h>

/* mettre 150 pour devc++4 */
#define VITESSE_D_AFFICHAGE 500

/* remplace delay si non disponible dans votre bibliotheque */
void ralentir(void);                
                                             
void blanc(int long_ligne);
void effacer_ecran(void);

void effet1_droite_gauche_monter(int col_depart, int col_fin,int ligne);
void effet1_gauche_droite_monter(int col_depart, int col_fin,int ligne);

char *menu[] = {
    "FILE",
    "EDIT",
    "SEARCH",
    "RUN",
    "COMPILE",
    "DEBUG",
    "PROJECT",
    "OPTIONS",
    "WINDOW",
    "HELP"
};

int main(void) {

    char votre_choix;
    /* textbackground(CYAN);            fond vert */

    clrscr();                    /* effacer ecran */

    _setcursortype(_NOCURSOR);  /* supprimer le curseur clignotant */

    gotoxy(15,25);
    textcolor(YELLOW);
    cprintf("TAPER UN CHIFFRE ENTRE 1 et 2   ESC pour sortir ");

    textcolor(10);

    while(1) {      /* TAPER ESC POUR SORTIR */

        votre_choix = getch();

     do {

        ralentir(); /* temps d'attente */
        effacer_ecran();

        switch (votre_choix) {

        case '1' :

             /* col_depart = 80 col_fin =   2   ligne = choix aleatoire */
                effet1_droite_gauche_monter(80,2, rand() %19+4);

        break;

        case '2' :
             /* col_depart = 2   col_fin = 74   ligne = choix aleatoire */
                effet1_gauche_droite_monter(2,74,rand() %19+4);

        break;

        case 27:    exit(0);    /* sortir du programme */
        break;
        default:

        break;
        }
        } while (!kbhit());

    } // fin de while(1)

// return 0;

} /*    fin de main */

void ralentir(void) {
    int i0;      
    for (i0 = 0; i0 < VITESSE_D_AFFICHAGE ; i0++){
        gotoxy(1,1);
        cprintf("%1c",'\0');
    }
return;
}

void blanc(int long_ligne) {
    int i1;
    for (i1 = 0; i1 <= long_ligne; ++i1) {
        cprintf("%1c",'\0');
    }
return ;
}

void effacer_ecran(void) {
    int i1;
    for (i1 = 0; i1 < 23; i1++){
        gotoxy(1,1+i1);
        cprintf("%79c",'\0');
    }
return;

}

void effet1_droite_gauche_monter(int col_depart, int col_fin,int ligne) {

    int i1, i2, i3 , long_ligne, long_ligne_pre;

    /* nbre d'elements dans le menu */
    int max_menu = sizeof(menu) / sizeof(menu[0]);

    long_ligne = 0;         long_ligne_pre =0;
    for (i1 = 0; i1 < max_menu; ++i1) {

        /* longueur de la ligne */
        long_ligne = strlen(menu[i1]);

for (i2 = 0; ( col_depart - long_ligne ) - i2 > col_fin +long_ligne_pre ; ++i2) {
      gotoxy( ( col_depart - long_ligne ) - i2 ,ligne);

      cprintf("%s ",menu[i1]);
       ralentir();      /* ralentir l'effet */
}

        /* remonter de n lignes : choix aleatoire en argument */
        for (i3 = 0;    i3 < ligne ; ++i3) {
            gotoxy( ( col_depart - long_ligne ) - i2 ,ligne-i3);
            cprintf("%s ",menu[i1]);

            gotoxy( ( col_depart - long_ligne ) - i2 ,ligne+1-i3);
            blanc(long_ligne);
            ralentir();      /* ralentir l'effet    */
        }

        /* cummuler la longueur des lignes precedentes */
        long_ligne_pre += long_ligne + 2;

    }

return ;
}        /* fin de la fonction :    effet2_droite_gauche_monter */

void effet1_gauche_droite_monter(int col_depart, int col_fin,int ligne) {

    int i1, i2, i3 ,long_ligne, long_ligne_pre;

    /* nbre d'elements dans le menu */
    int max_menu = sizeof(menu) / sizeof(menu[0]);

    long_ligne = 0;     long_ligne_pre = 0;

    for (i1 = 0; i1 < max_menu; ++i1) {

        /* longueur de la ligne */
        long_ligne = strlen((menu[(max_menu-1)-i1]));

for (i2 = 0; col_depart + i2 < (col_fin - long_ligne) - long_ligne_pre; ++i2) {

   gotoxy(col_depart + i2 ,ligne);
   cprintf(" %s",menu[(max_menu-1)-i1]);

   ralentir();      /* ralentir l'effet */
}

        /* remonter de n lignes : choix aleatoire en argument */
        for (i3 = 0;    i3 < ligne ; ++i3) {
            gotoxy( col_depart + i2 ,ligne-i3);
            cprintf(" %s",menu[(max_menu-1)-i1]);

            gotoxy( col_depart + i2 ,ligne+1-i3);
            blanc(long_ligne);
            ralentir();      /* ralentir l'effet */
        }

        /* cummuler la longueur des lignes precedentes */
        long_ligne_pre += long_ligne + 2 ;

    }

return ;
}        /* fin de la fonction :    effet2_gauche_droite_monter */

Conclusion :


// PROGRAMME EN C SOUS DOS TURBO C++ DEVC++4
// ecrit le 07-04-2002 par cmarsc
// MOVE TEXTE5

Codes Sources

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.