Ответ 1
ОЧЕНЬ БЫСТРЫЙ ответ
Вы можете использовать библиотеку JavaCurses, чтобы делать забавные вещи на консоли. Читайте ниже там.
Прежде чем вы это сделаете, позвольте ответить на весь ваш вопрос в каком-то контексте
Это вопрос новичков:), но это правильный вопрос. Итак, некоторые подсказки для вас:
Первый вопрос: насколько обширен терминал? (он подсчитывается по количеству символов) старые терминалы имели фиксированные размеры 80 символов и 25 строк;
Итак, в качестве первого шага начинаем с предположения, что он имеет ширину 80 символов.
Как бы вы центрировали строку на экране терминала шириной 80 символов?
Вам нужно беспокоиться о длине строки? Как вы позиционируете что-то горизонтально? Вы добавляете пробелы? Есть ли строка формата, с которой вы можете столкнуться?
Как только вы написали программу, чтобы вы могли дать ей любую строку, которая будет корректно отображаться в этих предположениях (этот терминал имеет ширину 80 символов), теперь вы можете начать беспокоиться о том, что произойдет, если вы подключены к терминалу, который более или менее 80 символов? Или вы даже подключены к терминалу. Например, если у вас нет, то имеет смысл "превзойти" ваш код? вероятно, нет.
Итак, вопрос в том, как вы получаете всю эту информацию?
То, о чем вы просите, - это возможность рассматривать консоль как интеллектуальный терминал teltype (tty) с возможностями управления на основе символов. Телетерминалы старого могут делать массу забавных вещей.
Некоторая история
Терминалы Teletype были сложными вещами и исходили из наследия, что было много производителей терминалов (IBM, DEC и т.д.)... Эти терминалы телетайпа были разработаны для решения множества проблем, таких как возможность отображения контента удаленно с мейнфреймов и миникомпьютеров.
Существовали кучу терминальных стандартов vt100, vt200, vt220, ansi, которые возникали в разных точках истории развития терминала и сотен проприетарных на этом пути.
Эти терминалы могут делать позиционирование курсоров, окон и цветов, выделять текст, подчеркивать и т.д., но не все могут делать все. Однако это было сделано с использованием "контрольных" символов. ctrl-l - это четкий экран на терминалах ansi и vt, но это может быть передача страницы на что-то другое.
Если вы написали программу, специфичную для нее, это не имело бы смысла в другом месте. Поэтому необходимость сделать это просто вызвала пару библиотек абстракции, которые скрывали бы отвратительность.
Первая из них называется библиотекой termcap (terminal-capability), около 1978 года, которая предоставила общий способ работы с терминалами в системах UNIX. Он мог бы указать запущенную программу доступных возможностей терминала (например, возможность изменять цвет текста) или позиционировать курсор в месте или очистить себя и т.д., И тогда программа изменит свое поведение.
Вторая библиотека называется curses, около 1985 (??) она была разработана как часть системы BSD и использовалась для написания игр... Одной из самых популярных версий этой библиотеки является библиотека GNU curses (ранее известный как ncurses).
В VMS я считаю, что библиотека называется SMG $(библиотека управления экраном).
Вкл. с ответом
Любые способы, поэтому вы можете использовать одну из этих библиотек в java, чтобы определить, работаете ли вы на правильном терминале. В исходной кузнице есть библиотека под названием JavaCurses, которая предоставляет эту возможность java-программам. Это будет упражнение в обучении использованию новой библиотеки в ваших программах и должно быть захватывающим.
JavaCurses предоставляет возможности терминального программирования как в среде Unix, так и в Windows. Это будет забавное упражнение для вас, чтобы увидеть, можете ли вы использовать его для игры.
расширенное упражнение
Другим упражнением будет использование этой же библиотеки, чтобы увидеть, можно ли создать программу, которая хорошо отображается на терминале, а также записывать в текстовый файл без кодов терминалов;
Если у вас есть какие-либо проблемы, отправьте сообщение, я помогу, когда вы пойдете вперед.