Я хотел бы написать консольное приложение с текстовым интерфейсом на D. Я посмотрел curses, но, похоже, оно работает только на unix. Есть ли кросс-платформенные альтернативы?
TUI (текстовый пользовательский интерфейс) для D?
Ответы (2)
Мой terminal.d можно использовать в качестве основы для библиотеки TUI.
https://github.com/adamdruppe/arsd/blob/master/terminal.d
У него нет обязательных зависимостей, поэтому вы можете просто скачать этот файл и начать сборку с dmd yourfile.d terminal.d
. Вот пример программы, получающей ввод: http://arsdnet.net/dcode/book/chapter_12/07/input.d
Вы также можете использовать terminal.moveTo(x, y); terminal.color(Color.green, Color.black); terminal.writef("something"); terminal.flush();
и тому подобное для перемещения и рисования.
Ищите version(Demo)
в самом терминале.d для main
, который обрабатывает все виды событий ввода, включая события мыши.
В то время как terminal.d в основном предлагает функции более низкого уровня (его основная функция высокого уровня — terminal.getline
, отлично подходит для линейных приложений, но не для TUI), он должен дать всю основу, необходимую для написания небольшой библиотеки текстовых виджетов.
и я думаю, что кто-то мог сделать это однажды, но я не помню, где.
terminal.d работает в системах Windows и Posix для наиболее распространенных терминалов, таких как xterm. ncurses является более всеобъемлющим и, вероятно, содержит меньше ошибок для более неясных целей, но terminal.d, будучи одним файлом, легче построить.
Это было правдой давно. Однако известно, что ncurses
прекрасно работает и в Windows. Самый простой способ создать его в Windows — внутри оболочки MSYS2. Другой кроссплатформенной альтернативы Curses действительно нет (узнайте, почему они назвали проект curses, и вы поймете, почему нет хорошей альтернативы).