Menu

C++ Základní konstrukce C Zdrojákoviště 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.


 

  Aktivity (2)

Článek pro vás napsal Зайчик
Avatar
Коммунизм для нашего будущего!

Jak se ti líbí článek?
Celkem (3 hlasů) :
4444 4


 


Miniatura
Následující článek
Stealth v C

 

 

Komentáře
Zobrazit starší komentáře (5)

Avatar
Зайчик
Člen
Avatar
Зайчик:

Může to být tím že jedeš pod linuxem, pokud si dobře pamatuju funkce kbhit je v knihově windows. V linuxu se to dělá trošku jinak, nebo si třeba zapoměl naincludovat hlavičkový soubor

#include <windows.h>
Odpovědět 29.3.2013 14:31
Коммунизм для нашего будущего!
Avatar
marek.vlcko
Člen
Avatar
marek.vlcko:

Dík za odpoveď.
Používam Windows 7 a prostredie Visual Studio 2010

 
Odpovědět 29.3.2013 14:58
Avatar
marek.vlcko
Člen
Avatar
marek.vlcko:

bolo treba pridať

#include <conio.h>

no ešte stále niečo nefunguje ako má

 
Odpovědět 29.3.2013 15:01
Avatar
marek.vlcko
Člen
Avatar
marek.vlcko:

Error7error C2065: 'konec' : undeclared identifier
Error8error C2065: 'pozice' : undeclared identifier

Vedel by si mi s tým poradiť?

 
Odpovědět 29.3.2013 15:18
Avatar
Зайчик
Člen
Avatar
Odpovídá na marek.vlcko
Зайчик:

hm divný máš tam tyhle dva řádky?

int pozice = 1;
int konec = 0;

Každopádně nevím jak ve visual studiu ;) C jsem dělal v Code::Blocks. Zkus to dělat v Code::Blocks jestli nebude zrada tady.

Odpovědět 29.3.2013 16:09
Коммунизм для нашего будущего!
Avatar
jirka
Neregistrovaný
Avatar
jirka:

kdyby tam byla ta videa, pomohlo by mi to :)

 
Odpovědět 24.9.2013 13:28
Avatar
Gulia.J
Člen
Avatar
Gulia.J:

Škoda, že videa nejsou dostupná...

 
Odpovědět 10.10.2013 22:51
Avatar
corei8
Člen
Avatar
corei8:

Ahoj.Video nefunguje škoda:(.

 
Odpovědět 11.2.2014 20:39
Avatar
Člen
Člen
Avatar
Člen:

Thx za tutorial funguje ;)

Odpovědět 3.8.2014 18:36
...
Avatar
davaj
Člen
Avatar
davaj:

Mohl bys tam dopsat aspon ty kody "gotoxy,MyGetch a nějaké barvičky," kdyz je video nepristupne.

 
Odpovědět 20.10.2014 14:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

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