Move the text 4 effets de textes turbo c++2 devc++4

Soyez le premier à donner votre avis sur cette source.

Vue 3 546 fois - Téléchargée 171 fois

Description

Afficher le menu autrement avec des effets (déplacements)

Source / Exemple :


//  PROGRAMME EN C SOUS DOS TURBO C++2 BORLAND
//  ecrit le 02-04-2002 par cmarsc 
//  MOVE TEXTE4

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

/* mettre 20 pour devc++4 */
#define VITESSE_D_AFFICHAGE 300

// remplace delay si non disponible dans votre bibliotheque
void ralentir(void);         
void effacer_ecran(void);

void effet1_droite_gauche(int col_depart, int col_fin,int ligne);
void effet1_gauche_droite(int col_depart, int col_fin,int ligne);

void effet2_droite_gauche(int col_depart, int col_fin,int ligne);
void effet2_gauche_droite(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 4   ESC pour sortir ");

	textcolor(12);

	while(1) {		// TAPER ESC POUR SORTIR

		votre_choix = getch();

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

		switch (votre_choix) {

		case '1' :

		   // col_depart = 79    col_fin = 5    ligne = 3
			  effet1_droite_gauche(79,5,3);

		break;

		case '2' :
		   // col_depart = 2     col_fin =  70   ligne = 3
			  effet1_gauche_droite(2,70,3);

		break;
		case '3' :
		   // col_depart = 80    col_fin =  2    ligne = 3
			  effet2_droite_gauche(80,2,3);

		break;

		case '4' :

		   // col_depart = 2     col_fin = 74    ligne = 3
			  effet2_gauche_droite(2,74,13);

		break;

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

		break;
		}

	} // 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 effacer_ecran(void) {
	int i1;
	for (i1 = 0; i1 < 23; i1++){
		gotoxy(1,1+i1);
		cprintf("%79c",'\0');
	}
return;

}

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

	int i1, i2,long_ligne;

	// nbre d'element dans le menu
	int max_menu = sizeof(menu) / sizeof(menu[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 ; ++i2) {
			gotoxy( ( col_depart - long_ligne) - i2 ,ligne+i1);
			cprintf("%s ",menu[i1]);

			ralentir();         // ralentir l'effet
		}
	}
return ;
}       // fin de la fonction :  effet1_droite_gauche

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

	int i1, i2,long_ligne;

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

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

		// longueur de la ligne la plus grande ici Nø 4 ou 7
		long_ligne = strlen(menu[4]);

		for (i2 = 0; col_depart + long_ligne+ i2 < col_fin ; ++i2) {
			gotoxy( col_depart + i2 ,ligne+i1);
			cprintf(" %s",menu[i1]);

			ralentir();         // ralentir l'effet

		}
	}
return ;

}       // fin de la fonction :  effet1_gauche_droite

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

	int i1, i2,long_ligne, long_ligne_pre;

	// nbre d'element 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

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

}

return ;
}       // fin de la fonction :  effet2_droite_gauche

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

	int i1, i2,long_ligne, long_ligne_pre;

	// nbre d'element 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
      }

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

}

return ;
}       // fin de la fonction :  effet2_gauche_droite

Conclusion :


// PROGRAMME EN C SOUS DOS TURBO C++2 DEVC++4
// ecrit le 02-04-2002 par cmarsc
// MOVE TEXTE4

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.