Стереть несколько строк консоли с символами консоли

Итак, я в курсе, что с консольными символами вы можете вернуть курсор в начало текущей строки (\r) или просто на один символ (\b) для перезаписи. Я хотел бы знать, что я перезаписываю несколько строк управляющими символами.

У меня есть сетка точек, напечатанная на консоли:

. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

А потом вернуться к первому персонажу и перерисовать его

. . . . . . . .
. . . 0 . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .

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


person Luke Moll    schedule 14.07.2014    source источник
comment
Одним из вариантов является использование библиотеки curses, которая дает вам полноэкранные окна на терминале. Существуют версии библиотеки curses для C, Python, java и, вероятно, других языков.   -  person tdelaney    schedule 14.07.2014
comment
Глядя на список управляющих кодов ASCII, я не вижу ничего, что можно было бы использовать для перемещения курсора вверх по строке.   -  person Kevin    schedule 14.07.2014


Ответы (1)


(Все нижеприведенное применимо только в том случае, если вы сами не визуализируете вывод в Swing JPanel или аналогичном)

Обратите внимание, что уровень эмуляции, который вы можете ожидать от устройства вывода консоли, очень ограничен. Обычно вы можете ожидать, что Ctrl-H вернет пробел, а Ctrl-M вернет курсор в начало строки. Все, что выше этого, устанавливает дополнительные требования.

Исторически это делалось путем отправки управляющих последовательностей ANSI (близких родственников физического терминала VT100), которые затем интерпретировались для перемещения курсора, очистки частей монитора и переключения цветов. Вам понадобится что-то подобное, чтобы сделать это в устройстве вывода. Информацию о CMD.EXE в Windows см. в разделе Как заставить консоль win32 распознавать управляющие последовательности ANSI/VT100?. Эмуляторы терминалов Linux и OS X поддерживают это.

Затем вы можете либо сгенерировать escape-последовательности самостоятельно, что относительно просто для простых нужд, либо делегировать их библиотеке curses/ncurses для достижения того, что вам нужно.

person Thorbjørn Ravn Andersen    schedule 14.07.2014
comment
Хорошо, я пытался не использовать ругательства, это излишество для того, что я хочу, я просто использую одну строку - person Luke Moll; 14.07.2014