Як я створив мінімальну бібліотеку TUI на C

Студенти часто скаржаться на необхідність використання функції gotoxy з бібліотеки windows.h. І вони мають на це право, адже хоча ця функція надзвичайно потужна, вона є і дуже складною в застосуванні. Здається, що з її допомогою можна навіть відтворювати відео, але це надзвичайно важко впровадити. Тому я вирішив створити бібліотеку TUI, яка дозволить розробникам більше зосереджуватись на логіці програми, а не на вирішенні проблем з інтерфейсом — підрахунком пікселів, місцями для виведення, тим, як показати чи приховати елементи тощо.

Моя бібліотека підтримує три основні види вікон підказок та кілька функцій для покращення їх використання:

  1. Вибір підказки: ця функція дозволяє відобразити список варіантів для вибору користувачем, а потім повертає індекс вибраного варіанту.
  2. Вхідна підказка: дозволяє створити вікно, в яке користувач може вводити дані. Вікно оновлюється автоматично, щоб залишатися чутливим до змін.
  3. Попередження підказка: ця функція дає можливість попередити або повідомити користувача. Підказка закривається натисканням клавіші Enter.

Існують також невізуальні функції:

  • Приховати курсор: дозволяє приховати миготливий курсор, щоб він не дратував користувача.
  • Чекати натискання Enter: ця функція зупиняє виконання програми до того часу, поки користувач не натисне клавішу Enter, даючи йому достатньо часу для перегляду виведених даних.

Я додав кілька зображень і гіфок, щоб показати, як працює кожна з цих функцій:

pic

Вікно вибору підказки

pic

Вікно вводу підказки

pic

Вікно попередження підказки

pic

Робочий приклад у гіфці

Завдяки цим функціям ви навіть можете створити програму, що повністю виключає використання простого вікна з printf.

Ви можете знайти робочі приклади та пояснення коду на моїй сторінці GitHub!

GitHub - alperkaya0/c-terminal-gui: Легкий і красивий спосіб отримати ввід та вивести результат, використовуючи вікна підказок у C терміналі. Ознайомтесь із зображеннями та гіфками!

Дякую за увагу! Буду радий, якщо ви поставите зірочку!

Перекладено з: How I Created a Minimal C TUI Library