#c #iostream #cout
#c #iostream #cout
Вопрос:
Я пытаюсь внести последние штрихи в программу maze, которую я писал. Я использовал Unicode для разграничения стен и путей, однако из-за (горизонтального) межстрочного интервала я не могу заставить его выглядеть достаточно компактным. Я приложил два скриншота. Я просто избегаю новой строки » n», чтобы напечатать каждую строку. Можно ли отрегулировать расстояние между строками или я застрял с этим «неровным» представлением?
Мой вывод:
Что я пытаюсь точно представить:
Комментарии:
1. Вы хотите, чтобы мы помогли вам, и вы даже не показываете нам свой код (?!).
2. Ваш терминал и его выбор шрифта влияют на высоту строки. Скорее всего, вы не можете управлять этим из своей программы.
Ответ №1:
Предполагая, что вы не печатаете двойные новые строки, это выходит за рамки стандартного C , он не предоставляет средств для управления терминалом стандартным способом.
Решения:
- Вы могли бы предоставить скрипт запуска, который открывает новое окно терминала с определенным шрифтом и запускает в нем ваше приложение.
- Вы могли бы использовать какой-либо специфичный для платформы метод для изменения цвета фона (коды ANSI работают в терминалах unixy или использовать Win32 API для терминала Windows, библиотеку ncurses в Unix-подобных средах) и печатать только пробелы разными цветами.
- Используйте библиотеку / фреймворк графического интерфейса, чтобы получить полный контроль над тем, что рисуется (я бы использовал Qt для приложения с графическим интерфейсом C ).
Ответ №2:
TBH если вам нужен рендеринг с точностью до пикселя, используйте соответствующий API рендеринга, такой как OpenGL.
С точки зрения рендеринга текста вы не говорите, для чего вы рендерите. Предполагая что-то вроде консоли терминала или окна командной строки, тогда макет за пределами символов и новых строк не имеет ничего общего с вашей программой; визуальное представление полностью определяется оболочкой, в которой вы выполняете рендеринг.
Комментарии:
1. Это не ответ, а комментарий. (Еще не проголосовал против).
Ответ №3:
Во-первых, убедитесь, что вы действительно печатаете строку для каждой строки сканирования лабиринта, а не чередуете с ложными символами новой строки. Предполагая, что это исключено, проблема в том, что символ Юникода не является полным блоком. Итак, вы должны каким-то образом установить шрифт или выбрать другой глиф, который является полным блоком.
Обычно окна консоли имеют ширину 80 символов и высоту 22 или 24 символа, а символы имеют ширину 8 пикселей и высоту 19 пикселей. Таким образом, это очень далеко от квадратной сетки, и вы можете захотеть сместить лабиринт, чтобы отразить это и обеспечить лучший внешний вид (например, сделать вертикальные коридоры шириной в 2 пикселя намного более распространенными, чем горизонтальные коридоры шириной в 2 пьеса).
Проверьте шрифты библиотеки двоичных изображений, они могут оказаться полезными.