Реализовать консольное меню - C (СИ)

Узнай цену своей работы

Формулировка задачи:

подскажите как реализовать консольное меню на Си чтоб в консоли можно было перемещатся между пунктами стрелками или просто нажымая цыфры

Решение задачи: «Реализовать консольное меню»

textual
Листинг программы
#include <stdio.h> 
#include <windows.h>
 
static int value = 1;
 
int print_menu(int index) {
    if (index > 4 || index < 0) return 0;
    (index == 1) ? printf("First            @\n") : printf("First           \n");
    (index == 2) ? printf("Second           @\n") : printf("Second          \n");
    (index == 3) ? printf("Third            @\n") : printf("Third           \n");
    (index == 4) ? printf("Forth            @\n") : printf("Forth           \n");
}
 
void selected(int button) {
    system("cls");
    printf("##################\n");
    printf("##################\n");
    printf("# %d was selected #\n", button);
    printf("##################\n");
    printf("##################\n");
    getch();
}
 
int button_process() {
    
    char ch = '0';
    while (!kbhit());
    ch = getch();
    switch (ch) {
        case '1': 
            value = ch - 0x30;
            selected(value);
            break;
        case '2': 
            value = ch - 0x30;
            selected(value);
            break;
        case '3': 
            value = ch - 0x30;
            selected(value);
            break;
        case '4': 
            value = ch - 0x30;
            selected(value);
            break;
    }
    if (ch == 72) {
        //Arrow up
        value -= 1;
        if (value == 0) value = 4;
    }
    else if (ch == 80) {
        //Arrow down
        value += 1;
        if (value == 5) value = 1;
    }
    else if (ch == 13) {
        // Enter button
        selected(value);
    }
    return value;
}
 
int main()
{
    int button = 1;
    while (1) {
        print_menu(button);
        button = button_process();
        system("cls");
    }
    system("PAUSE");
}

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы