2012-03-14 3 views
3

В игровом проекте, над которым я работал, я серьезно замедлился - вплоть до отказа от того, что, похоже, нет библиотек, которые могут упростить процесс отображения меню в текстовом режиме (т.е. текстовое поле 80x25, собственный интерфейс command.com/cmd.exe).Библиотеки для отображения текстового меню?

Мне нужно что-то, что может предоставить список вариантов, в идеале включающих несколько страниц, и включая значения, которые нужно ввести, чтобы выбрать один из них; запросить пользователя; аккуратно порежьте пользователя (возможно, позвонив в колокольчик и перерисуя подсказку «выберите один:»), когда пользователь не сможет ввести что-то действительное; и возвращает то, что может быть использовано для определения того, какая опция была передана.

Это, оказывается, намного больше работы, чем кажется; и теперь тот же самый вопрос, который меня так сильно затормозил дома, придумал (или собирается придумать) на работе. Кто-нибудь знает какие-либо библиотеки non-copyleft с функцией, которая может быть передана контейнером для хранения опций, отображать их на экране и получить выбор пользователя?

Ответ: Ncurses очень подходит для этой цели, включая явно предоставление драйвера меню. Он имеет лицензию в стиле MIT, что делает ее совместимой с коммерческим использованием. Однако он недоступен для MS-DOS или Windows. (Я ссылался на command.com выше, но не думал явно указывать, что это вопрос в отношении архитектур Microsoft.)

Однако похоже, что он был успешно скомпилирован в DOS и Windows в прошлом, и я уверен, что смогу получить его или, по крайней мере, его части, которые мне нужны, чтобы работать, особенно учитывая, что это логика меню, а не рисование линии и тому подобное. Вопрос Good resources for writing console style applications for Windows? также должен быть полезен в этом отношении.

Позже, дополнительный ответ: Windows обеспечивает достаточное количество функциональных возможностей дисплея из коробки, как показано here - хотя это делает не включать в себя систему меню дисплея, в отличие от Ncurses. Нечестивый гибрид логики меню ncurses и Windows API? Это может быть жизнеспособным выбором в качестве Cygwin ...

Намного позже дополнительный ответ: Оба Ncurses и pdcurses работают очень гладко с Windows, даже без использования Windows API, для чего-то большего, чем создание и калибровки дисплея. Я решил использовать pdcurses и научился создавать собственные меню - позволяя обратные вызовы, легко расширенную очередь сообщений на экране, использование строкового класса C++ и другие подобные функции.

Дальнейшее обновление: Библиотеки меню Curses написаны на C и поэтому работают в терминах последовательностей char *. Я отказался от попыток использовать их и вместо этого написал свои собственные меню, используя низкоуровневые функции curses для отображения экрана.

+1

Мой экран обычно 90x35. Могу ли я не играть в вашу игру? Но чтобы ответить на ваш вопрос, попробуйте 'ncurses'. –

+0

Я уверен, что вы могли бы получить некоторую карму StackOverflow от публикации ниже; но спасибо. Вы не можете играть в игру, потому что она еще не существует :), но я предполагаю, что ncurses будет более прощать с терминальными размерами, чем Microsoft, поэтому этот ответ может измениться. – ExOttoyuhr

+0

@ Robᵩ: Спасибо. – ExOttoyuhr

ответ

1

Просьба ncurses, она находится на Лицензия MIT, которая является гораздо более разрешительной, чем GPL. Он очень прост в использовании: меню, диалоговые окна, флажки - все это есть. Он управляется событиями, как большинство библиотек графического интерфейса.

2

Вы хотите ncurses. Он обычно устанавливается вместе с вашим распределением.

Это может быть боль, но это лучший метод, который я знаю, чтобы получить достойную «gui» в командной строке, которая не просто вводит символы + вводит.

+0

Вот ответ на ваш вопрос с окнами: http://stackoverflow.com/questions/138153/is-ncurses-available-for-windows. –

+0

И да, вы [можете] (http://stackoverflow.com/questions/706799/meaning-of-mit-license) продать его. –

1

Вы также можете проверить CDK, что требует ncurses и предоставляет такие окна, как виджеты.

Смежные вопросы