LINUX.ORG.RU

Подобие тайлов на ncurses


0

1

И снова здравствуйте. Начал в своем морском бое делать визуальный интерфейс, есть один маленький вопрос: как можно одновременно/последовательно выводить текст в различных областях экрана без передвижения курсора? Нечто похожее есть в aptitude и mc, там экран поделен на отдельные части и вывод текста не перемещает курсор. Это для меня критично, поскольку курсором управляет человек для расстановки кораблей, постоянно двигать его по всему экрану не есть хорошо.



Последнее исправление: ms-dos32 (всего исправлений: 1)

А при чём здесь тайлы?

Никак.

Курсор в mc и aptitude - виртуален и к курсору терминала отношения не имеет.

постоянно двигать его по всему экрану не есть хорошо.

Привязываться к курсору терминала не есть хорошо. Заведи пару координат под курсор и выводи его вручную, скажем, другим цветом фона или инверсией. Тогда вывод текста не будет трогать твой игровой курсор.

schizoid ★★★
()
Ответ на: А при чём здесь тайлы? от schizoid

Честно говоря, я не видел функций, которые позволяют вывести текст в определенной позиции курсора без его перемещения (не move или mvaddch). Если я что-то пропустил - поправьте, пожалуйста.

ms-dos32
() автор топика
Ответ на: комментарий от ms-dos32

Ты ничего не понял

Я не о курсоре терминала (таком мигающем квадратике) говорил. Заведи себе свой, искусственный, как в mc.

int cursorx = 0, cursory = 0;
...
if(move_up) cursory--;
if(move_right) cursorx++;
// Check boundaries.
...
mvaddch(cursory, cursorx, your_game_map[cursorx][cursory] | A_REVERSE);

Ну, эмуляция курсора. Что ты так привязался к терминальному?

Честно говоря, я не видел функций, которые позволяют вывести текст в определенной позиции курсора без его перемещения (не move или mvaddch).

А таких функций нет. Как можно переместить курсор, не перемещая курсор?

schizoid ★★★
()
Ответ на: Ты ничего не понял от schizoid

Как можно переместить курсор, не перемещая курсор?

Ну, насколько я понял, разрешение консоли определяется максимальным количеством символов по горизонтали и вертикали, так что для каждой возможной позиции курсора есть своя координата.

А разве mvaddch не перемещает настоящий курсор? Или я действительно не понимаю, как она работает?

ms-dos32
() автор топика
Ответ на: комментарий от ms-dos32

А разве mvaddch не перемещает настоящий курсор?

Любой вывод в консоль перемещает курсор, даже printw.

schizoid ★★★
()

Я не знаю как. Может быть, тебе помогут исходники dvtm.

anonymous
()
Ответ на: KO note от theNamelessOne

То есть более верного, правильного варианта нет в принципе?

ms-dos32
() автор топика

Ну, можно гасить курсор на время прочего вывода, потом возвращять на место и зажигать. Проще некуда.

slapin ★★★★★
()
Ответ на: комментарий от ms-dos32

хмммм...

Я имел в виду curs_set(0); ... рисуем... curs_set(1); ждем ввода...

man 3NCURSES curs_set

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