• Предмет: Информатика
  • Автор: anastasiyafomina353
  • Вопрос задан 5 месяцев назад

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

А надписи можуть бути зеленого(якщо користувач на цьому пункті) і червоного кольору (якщо не на цьому пункті) а консольне вікно білого кольору. Користувач за допомогою клавіш обирає бажаний варіант.

Також бажано додати стрілки, щоб було зображено на якому пункті стоїть користувач ​

Ответы

Ответ дал: lovecacao
0

Ответ:

Для реалізації цієї функціональності вам необхідно використовувати функції з бібліотеки "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

Вас заинтересует