С++ Підкажіть, як реалізувати, щоб користувач в консольному вікні мав змогу за допомогою стрілок на клавіатурі обирати пункт, який забажає. А при зміні пунктів змінювався колір надписей.
Наприклад: МЕНЮ
Ввести записи
Вивести записи
Розрахувати кількість введених записів
А надписи можуть бути зеленого і червоного кольору, на білому фоні
І користувач за допомогою клавіш обирає бажаний варіант.
Ответы
Ответ:
#include <ncurses.h>
#include <string>
#include <ncurses.h>
#include <string>
int main() {
// Ініціалізуємо ncurses
initscr();
noecho();
cbreak();
keypad(stdscr, TRUE);
curs_set(0);
start_color();
// Встановлюємо кольори
init_pair(1, COLOR_GREEN, COLOR_WHITE);
init_pair(2, COLOR_RED, COLOR_WHITE);
// Створюємо меню
std::string menu_items[] = {"Ввести записи", "Вивести записи", "Розрахувати кількість введених записів"};
int num_items = 3;
int current_item = 0;
// Відображаємо меню
while (true) {
clear();
for (int i = 0; i < num_items; i++) {
if (i == current_item) {
attron(COLOR_PAIR(1));
} else {
attron(COLOR_PAIR(2));
}
mvprintw(i + 1, 2, menu_items[i].c_str());
attroff(COLOR_PAIR(1));
attroff(COLOR_PAIR(2));
}
refresh();
// Обробляємо вибір користувача
int key = getch();
switch (key) {
case KEY_UP:
current_item--;
if (current_item < 0) {
current_item = num_items - 1;
}
break;
case KEY_DOWN:
current_item++;
if (current_item >= num_items) {
current_item = 0;
}
break;
case 10: // Enter
// Обробляємо вибір пункту меню
clear();
mvprintw(0, 0, "Вибрано: %s", menu_items[current_item].c_str());
refresh();
getch();
break;
}
}
// Завершуємо ncurses
endwin();
return 0;
}
Объяснение:
Для реалізації такого функціоналу у с++, можна використаии бібліотеку 'ncurses', яка дозволяє створюввти інтерфейс консольних додатків з використнням клавіш, курсору і термінальних екранів, надіюсь допоміг :)