• С++ Підкажіть, як реалізувати, щоб користувач в консольному вікні мав змогу за допомогою стрілок на клавіатурі обирати пункт, який забажає. А при зміні пунктів змінювався колір надписей. Наприклад: МЕНЮ Ввести записиВивести записиРозрахувати кількість введених записів Вихід з програми(пункти в string)А надписи можуть бути зеленого(якщо користувач на цьому пункті) і червоного кольору (якщо не на цьому пункті) а консольне вікно білого кольору. Користувач за допомогою клавіш обирає бажаний варіант.Також бажано додати стрілки, щоб було зображено на якому пункті стоїть користувач ​

Ответы 1

  • Ответ:

    Для реалізації цієї функціональності вам необхідно використовувати функції з бібліотеки "conio.h", яка надає доступ до консольного вводу-виводу в С++. Ось приклад коду, який можна використовувати:

    Объяснение:

    #include <iostream>

    #include <conio.h>

    #include <windows.h>

    using namespace std;

    int main()

    {

       const int MENU_SIZE = 4;

       string menu[MENU_SIZE] = { "Ввести записи", "Вивести записи", "Розрахувати кількість введених записів", "Вихід з програми" };

       int selectedMenuItem = 0;

       int key;

       // Встановлюємо курсор на початок консольного вікна

       COORD cursorPosition = { 0, 0 };

       SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cursorPosition);

       // Надаємо фон білого кольору

       system("color f0");

       // Реалізуємо меню

       while (true)

       {

           // Виводимо список пунктів меню

           for (int i = 0; i < MENU_SIZE; i++)

           {

               if (i == selectedMenuItem)

               {

                   // Якщо пункт вибрано, то надаємо йому зелений колір

                   cout << "\x1b[32m" << menu[i] << "\x1b[0m" << endl;

               }

               else

               {

                   // Якщо пункт не вибрано, то надаємо йому червоний колір

                   cout << "\x1b[31m" << menu[i] << "\x1b[0m" << endl;

               }

           }

           // Чекаємо на натискання клавіші

           key = _getch();

           // Обробляємо клавішу

           if (key == 224)

           {

               // Якщо була натиснута стрілка, то читаємо наступний символ

               key = _getch();

               if (key == 72 && selectedMenuItem > 0)

               {

                   // Стрілка вгору

                   selectedMenuItem--;

               }

               else if (key == 80 && selectedMenuItem < MENU_SIZE - 1)

               {

                   // Стрілка вниз

                   selectedMenuItem++;

               }

           }

           else if (key == 13)

           {

               // Якщо була натиснута клавіша Enter, то виходимо з циклу

               break;

           }

           // Переміщуємо курсор на початок консольного вікна

           cursorPosition.Y -= MENU_SIZE;

           SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE

  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years