Menu
Zdravím. Dnes vám ukážu, jak si vytvořit vlastní menu v jazyce C. Budeme potřebovat vytvořit soubor.h a napsat si do něj všechny funkce, co budeme potřebovat alias gotoxy,MyGetch a nějaké barvičky, abych nespamoval jen kódama, tak "jak si vytvořit tento soubor.h" je v následujícím videu.
Tak, teď už máme náš soubor a můžeme se pustit do psaní našeho menu.
#include "winitrix.h" // hlavičkový soubor.h
#define POLOZKY_MENU 3 // pocet polozek v menu
// funkce
void menu(void);
void vypis_menu(int, int);
void hlava_menu(void);
void item1(void);
void item2(void);
int main()
{
menu();
return 0;
}
void menu(void) // samotné menu
{
hlava_menu();
int pozice = 1;
vypis_menu(1,1);
int konec = 0;
while(konec == 0)
{
if (kbhit())
{
int Key;
Key = MyGetch();
if(Key) {
switch(Key)
{
case 27: //escape
konec = 1;
break;
case 328: // up
if (pozice > 1) pozice--;
else pozice = POLOZKY_MENU;
break;
case 336: // down
if(pozice < POLOZKY_MENU) pozice++;
else pozice = 1;
break;
case 13: // enter
switch(pozice)
{
case 1: item1();
break;
case 2: item2();
break;
case 3: clear();
konec = 1;
}
default:
continue;
}
}
vypis_menu(pozice,1);
}
}
}
void vypis_menu(int pozice,int i) // vypsání menu pole pomocí cyklu
{
char *polozky[] = {"item1","item2","end"};
for(i = 0; i < POLOZKY_MENU; i++)
{
gotoxy(1,3+i+i);
if ((i+1)==pozice) color(2); else color(0);
printf("%s\n",polozky[i]);
}
}
void hlava_menu()
{
clear();
gotoxy(1,1);
color(2);
printf("M A I N M E N U"); // nadpis nebo titulek
}
void item1(void) // obsah položky číslo 1
{
hlava_menu();
gotoxy(0,5);
color(2);
printf("item1\n");
getchar();
menu();
}
void item2(void) // obsah položky číslo 2
{
hlava_menu();
gotoxy(0,5);
color(2);
printf("item2\n");
getchar();
menu();
}
Přidávám video jak to má vypadat a jak to bude fungovat.
V kódu jsem měl prvně nekonečný cyklus, poté jsem ho nahradil cyklem s proměnnou konec, ve videu tato změna není. Je to tak přirozenější.
Tak to je vše, ani to nebylo tak těžké. Snad jsem vám pomohl.
Komentáře


Zobrazeno 10 zpráv z 15. Zobrazit vše