LINUX.ORG.RU

Нужность/аналоги ncurses/slang


0

3

Захотел я написал что-то типа рогалика.

Поигрался с ncurses и libslang, написал пару тестовых приложений, ужаснулся интерфейсу этих библиотек и точно понял что использовать их я не хочу.

Вопрос: а нужны ли они? Чем я рискую, если буду просто выводить ANSI последовательности для перемещения курсора и установки цвета и собственно символы для рисования того что нужно? Плюс ioctl(TIOCGSIZE) и ловля SIGWINCH для контроля размера терминала, и плюс свой движок который умеет обновлять только изменившиеся части сцены.

★★★★★

а нужны ли они? Чем я рискую

1 - рискуешь совместимостью/портабельностью (ncurses внезапно работает не только с ANSII и даже вовсе без терминала); ncurses и slang есть во всех дистрибутивах, твой библиотеки там гарантированно нет

2 - придётся делать и поддерживать не только рогалик, но и свою замечательную библиотеку. Призрачный шанс сделать полноценный рогалик устремляется к 0

зы - чтоб не ужасаться интерфейсу, сделай поверх него удобный для тебя интерфейс.

MKuznetsov ★★★★★ ()
Последнее исправление: MKuznetsov (всего исправлений: 1)

Ну, если только для себя и localhost — то кто ж тебя держит. Если нет, то ждёт тебя участь похуже поццеринга. Плюшки ncurses совсем не только в цветах. В частности оно следит ещё за тем, какие регионы обновлять, а какие нет и куча других вещей.

beastie ★★★★★ ()

Тоже юзал libncurses в своей утилите WHDD, воспоминания неприятные. Что делать - софт NN-летней давности в основе своей. Сейчас, конечно, можно было бы более удобное и элегантное API сделать, но кто ж этим заниматься будет, сейчас никто не занимается консольным графическим интерфейсом для чего-либо серьёзного.

Чем я рискую, если буду просто...

Рискуете написать свой libncurses. Плохо это или хорошо - зависит от ваших стараний. Я бы рассмотрел вариант разбирательства с ncurses с целью допилить более удобное API, возможно, с выпиливанием старых потрохов (думаю, там туча кода для поддержки нестандартных терминалов и другого древнего хлама). В одиночку это, имхо, дело не стоящее. Я бы с интересом рассмотрел участие в разработке подобной библиотеки _общего назначения_. А заодно и диалоговой библиотеки, типа libdialog, libnewt - они тоже отстой по сегодняшним меркам.

Krieger_Od ★★ ()

Кстати, насчет проклятий

mc использует библиотеку проклятий? Если да, то никакой замены ей и не нужно!

Anon ()
Ответ на: комментарий от anonymous

А давно оно научилось в консоли работать?

anonymous ()

Попробуй. Под вендой можно потыкать в cygwin.

buddhist ★★★★★ ()

Открой для себя SDL и OpenGameArt.Org. Для фентезийного рогалика, на последнем, спрайтов и тайлов более чем достаточно.

cPunk ★★ ()
Последнее исправление: cPunk (всего исправлений: 1)

ужаснулся интерфейсу этих библиотек

Ты про какой интерфейс? API или UI?

hobbit ★★★★★ ()
Ответ на: комментарий от no-such-file

Не совсем, до сих пор можно собрать с ncurses, хотя slang предпочитается.

ABW ★★★★ ()
Ответ на: комментарий от cPunk

вах, у ысдыля есть номандная CLI-гуевина? Не видел.

Anon ()
Ответ на: комментарий от Anon

Нет... ну если автор конечно зациклился на CLI, а не на игровой идее.

cPunk ★★ ()
Ответ на: комментарий от MKuznetsov

1 - рискуешь совместимостью/портабельностью (ncurses внезапно работает не только с ANSII и даже вовсе без терминала)

Совместимостью/портабельностью с чем? ANSI - это стандарт, не поддерживая его совместимостью рискуют авторы терминалов. В каких real-world терминалах он не поддерживается?

ncurses и slang есть во всех дистрибутивах, твой библиотеки там гарантированно нет

Вообще-то это аргумент не делать библиотеки.

На самом деле я словом не обмолвился что оно будет отдельной библиотекой, хотя даже если бы и было - какая разница?

2 - придётся делать и поддерживать не только рогалик, но и свою замечательную библиотеку. Призрачный шанс сделать полноценный рогалик устремляется к 0

Гадание по фотографии. «Библиотека» уже написана, там 5 килобайт кода. На вменяемую обёртку для curses понадобилось бы по меньшей мере раз в 10 больше.

slovazap ★★★★★ ()
Ответ на: комментарий от beastie

Плюшки ncurses совсем не только в цветах.

Плюшек в цветах у curses нет :) Там вообще нужно каждый цвет специально объявлять.

В частности оно следит ещё за тем, какие регионы обновлять, а какие нет и куча других вещей

Это я уже умею - я же написал, от curses мне потенциально нужна только совместимость. Так с чем несовместим ANSI?

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

vt220 например — всё ещё терминал по-умолчанию во многих юниксах.

beastie ★★★★★ ()
Ответ на: комментарий от slovazap

Плюшек в цветах у curses нет :) Там вообще нужно каждый цвет специально объявлять.

И, что самое обидное, какая-нибудь библиотека, типа libdialog, может запросто «угнать» забинденную на числовой идентификатор пару цвет/фон, поменяв цвета!

Krieger_Od ★★ ()
Ответ на: комментарий от beastie

То есть цветной prompt в баше у меня на нём, оказывается, не работает?

slovazap ★★★★★ ()
Ответ на: комментарий от slovazap

То, что ты наблюдаешь — это линуксизм и совсем не vt220. Обычно нет, не работает.

beastie ★★★★★ ()
Ответ на: комментарий от beastie

Так «обычно» - это таки где? На железном DEC VT220? Непременно нужна совместимость с ним, чо.

slovazap ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.