В игровом проекте, над которым я работал, меня серьезно замедлили - вплоть до отказа - из-за отсутствия библиотек, которые могли бы упростить процесс отображения меню в текстовом режиме(т.е. текстовое поле 80x25, собственный интерфейс command.com/cmd.exe).
Мне нужно что-то, что может дать список вариантов, в идеале включающий несколько страниц, и включающий значения, которые нужно ввести, чтобы выбрать один из этих;подсказать пользователю;осторожно упрекайте пользователя (возможно, звоните в колокольчик и перерисовывайте подсказку «выберите один:»), когда указанный пользователь не может ввести что-то действительное;и возвращает что-то, что может быть использовано для определения того, какая опция была передана.
Оказывается, это намного больше работы, чем кажется;и теперь тот же самый вопрос, который так сильно замедлял меня дома, возник (или вот-вот встанет) на работе.Кто-нибудь знает какие-либо библиотеки без авторского лева с функцией, которой можно передать контейнер для хранения опций, отобразить их на экране и получить выбор пользователя?
Ответ : Ncurses оченьподходит для этой цели, включая явное предоставление драйвера меню.Он имеет лицензию в стиле MIT, что делает его совместимым с коммерческим использованием.Тем не менее, он не доступен для MS-DOS или Windows.(Я ссылался на command.com выше, но не думал явно указать, что это вопрос архитектуры Microsoft.)
Однако, похоже, он был успешно скомпилирован в DOS и Windows вв прошлом, и я уверен, что смогу заставить его или, по крайней мере, те его части, которые мне нужны, работать, особенно если учесть, что это логика меню, а не рисование линий и т.п.после.Вопрос Хорошие ресурсы для написания приложений в стиле консоли для Windows? также должен быть полезен в этом отношении.
Позже, дополнительный ответ : Windows обеспечивает достаточное количество отображенияфункциональность из коробки, как показано здесь - хотя это не включает систему отображения меню, в отличие от ncurses.Нечестивый гибрид логики меню ncurses и Windows API?Это может быть столь же жизнеспособный выбор, как cygwin ...
Намного позже дополнительный ответ : и ncurses, и pdcurses работают очень гладко с Windows, даже без использования Windows API для чего-то большего, чем простои размер дисплея.Я остановился на использовании pdcurses и научился создавать собственные меню - с учетом обратных вызовов, легко расширяемой экранной очереди сообщений, использования строкового класса C ++ и других подобных функций.
Далееupdate : Библиотеки меню Curses написаны на C, поэтому работают в терминах последовательностей char *.Я перестал пытаться использовать их и вместо этого написал свои собственные меню, используя низкоуровневые функции проклятий для отображения на экране.