Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.


 

Všechny články v sekci
Zdrojákoviště jazyka C - Základní konstrukce
Článek pro vás napsal Зайчик
Avatar
Uživatelské hodnocení:
3 hlasů
Коммунизм для нашего будущего!
Aktivity