Предмет: Информатика, автор: anastasiyafomina353

С++ Підкажіть, як реалізувати, щоб користувач в консольному вікні мав змогу за допомогою стрілок на клавіатурі обирати пункт, який забажає. А при зміні пунктів змінювався колір надписей.

Наприклад: МЕНЮ
Ввести записи
Вивести записи
Розрахувати кількість введених записів

А надписи можуть бути зеленого і червоного кольору, на білому фоні
І користувач за допомогою клавіш обирає бажаний варіант.​

Ответы

Автор ответа: bilanskijsasa77
0

Ответ:

#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', яка дозволяє створюввти інтерфейс консольних додатків з використнням клавіш, курсору і термінальних екранів, надіюсь допоміг :)

Похожие вопросы