Voila j'ai remarque que dans beaucoup de programme on a besoins de demander ce que l'on voulait faire (surtout pour les caculette) danc j'ai programmer une fontion qui fais ces menus
Pour l'exemple j'ai pris naturellement l'exemple d'une calcullette qui peut faire plusieur fonctions
Source / Exemple :
#include <stdio.h>
#include <bios.h>
#include <conio.h>
#define SIZE_TAB(x) (sizeof(x)/sizeof((x)[0]))
void PrintItem(int x,int y,char *name)
{
gotoxy(x,y);
cprintf("ÌÍ> %s",name);
}
int menu(
int x, /* position horizontale */
int y, /* position verticale */
int color, /* couleur du texte */
int bkcolor, /* couleur du fond */
char * title, /* titre du menu */
int nbItem, /* nombre d'article */
char ** tabItem /* tableau des noms des articles */
)
{
int i,nb,choix;
/* on change toutes les couleurs */
textcolor(color);
textbackground(bkcolor);
/* on affiche le titre avec une barre en dessous */
gotoxy(x,y);
nb = cprintf("%s",title);
gotoxy(x,y+1);
for(i=0;i<nb;i++)
{
cprintf("Ä");
}
/* on repssitionne le Y */
y += 2;
/* on affiche tous les articles */
for(i=1;i<nbItem;i++)
{
PrintItem(x,y+i,tabItem[i]);
}
/* on affiche le premier article en couleurs inverses */
textcolor(bkcolor);
textbackground(color);
PrintItem(x,y + 0,tabItem[0]);
/* la boucle */
choix = 0;
while(1)
{
switch(bioskey(0))
{
case 7181: /* ENTRER */
return choix;
case 18432: /* HAUT */
/* on affiche normalement l'ancien article selectionner */
textcolor(color);
textbackground(bkcolor);
PrintItem(x,y+choix,tabItem[choix]);
/* on calcul la position du nouvel article */
if(--choix < 0)
{
choix = nbItem - 1;
}
/* on affiche en inversant les couleur */
textcolor(bkcolor);
textbackground(color);
PrintItem(x,y+choix,tabItem[choix]);
break;
case 20480: /* BAS */
/* on affiche normalement l'ancien article selectionner */
textcolor(color);
textbackground(bkcolor);
PrintItem(x,y+choix,tabItem[choix]);
/* on calcul la position du nouvel article */
if(++choix >= nbItem)
{
choix = 0;
}
/* on affiche en inversant les couleur */
textcolor(bkcolor);
textbackground(color);
PrintItem(x,y+choix,tabItem[choix]);
break;
}
}
/* on ne passera jamais ici ! */
return -1;
}
int main(void)
{
/* on veut faire par exemple une calculette */
char *allItem[] = {
"Addition",
"Soustraction",
"Multipication",
"Division",
"Puissance",
"Factoriel",
"Sinus",
"Modulo",
"ax + b = 0",
"ax^2 + bx + c = 0",
"A propos",
"Quitter"
};
int choix;
textbackground(BLACK);
clrscr();
choix = menu(10,2,WHITE,RED,"Que voulez-vous faire ?",SIZE_TAB(allItem),allItem);
textcolor(WHITE);
textbackground(BLACK);
clrscr();
cprintf("Vous avez choisi l'article :\r\n");
cprintf("%s\r\n",allItem[choix]);
getch();
return 0;
}
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.