Как рисовать линии в консоли C++? В Windows. Весь интернет перерыл, не нашел 🙁
Прозвучал вопрос: «В текстовом режиме? »
Я так и думал, что он будет, но я также думал, что народ догадается.. . Не все догадались.. .
Значит, поле в консоли 80xскоко-там. 80 изменить НЕВОЗМОЖНО. Экран консоли будет коородинатной плоскостью, каждая точка которой = 1 знакоместо. X — знакоместа по горизнтали, Y — знакоместа по вертикали. Мне надо рисовать горизонтальные и вертикальные линии. Вообще, цель работы — нарисовать квдраты внутри консоли и все.
#include . Я уже читал этот самый текст. И пробовал. Не пашет. В Visual Studio 2008 нет такой библиотеки. А мне надо функцию/класс, которую/ый можно будет впоследсвии вставить в программу или решение через стандартные библиотеки.
Лучший ответ
Для работы в графическом режиме файл graphics.h должен быть подключен с
помощью директивы #include препроцессора языка Cи ко всем модулям, ис-
пользующим графические подпрограммы
#include
Прежде чем использовать графические функции, необходимо переклю-
чить видеоадаптер в графический режим (по умолчанию он находится в тексто-
вом режиме) . Для инициализации графики предназначена функция initgraph().
Ее прототип –
void initgraph(int *driver, int *mode, char *path);
где int *driver – тип подключаемого драйвера, int *mode – режим работы под-
ключенного драйвера, char *path – местоположение драйвера.
Функция initgraph() считывает в память указанный драйвер, устанавлива-
ет видеорежим, соответствующий аргументу mode, и определяет маршрут к
директории, в которой находится файл *.bgi (драйвер) . Если маршрут не указан,
то предполагается, что этот файл расположен в текущей директории.
При использовании initgraph() можно указать или конкретный драйвер
(например, egavga.bgi), или задать автоматическое определение (детектирование)
типа видеоадаптера и выбора соответствующего драйвера уже во время выполнения программы (макрос DETECT). Это позволяет без изменения переносить
программы на компьютеры с другими видеоадаптерами. Например,
int grdrv=DETECT, grmod;
initgraph(&grdrv,&grmod,” ”);
В приведенном примере подразумевается, что файл драйвера (например,
egavga.bgi) расположен в текущей директории. Эта функция очищает экран
монитора и переводит его в графический режим
640 * 480 * 16 (разрешение монитора 640 * 480, 16 цветов) .
Чтобы выйти из графического режима и перейти обратно в текстовый ре-
жим, необходимо использовать функцию
void closegraph(void);
Функция closegraph() освобождает память, используемую графическими
функциями, и устанавливает текстовый режим, который был до вызова функ-
ции initgraph(), при этом происходит очистка экрана.
Источник: Методические указания к лабораторным работам
Остальные ответы
Что за линии? Если в текстовом режиме — смотри кодировку досовскую там куча всяких символов для рамок. Если графический режим в досе то, сначала инициализируй графику (bgi модуль)
unixforum.org
Зашел разговор о плагине для зарисовки блок схем под вим здесь drawIt . И я вспомнила как недавно помогала индусу отрисовывать на консоль что то подобное. Кстати, скрипт тогда я тоже назвала drawit. Хочу поделится и может кто заинтересуется. Индус понимал по английски лучше меня но вместе у нас получилась примерно как здесь Камеди-На американском радио. Ему я это в конечном счете тоже показала но так до конца и не поняла всю глубину логики которую влаживал в вопрос оппонент и вот то что я легенькое накидала.
#!/bin/bash frame() < echo "+-$-+" echo "| $2 |" | column -to' |--> | ' -s$'\r' echo "+-$-+" > IFS=$'\r'; frame "$" "$*"
Запускаем как-то так:
Можно переадресовать в файл. Вообщем. Можно прикинутся индусом и напридумывать сложных фирулей если кто скучает.
Да. Если нужны пробелы в словах блока необходимо заключать их в кавычки или экранировать сам пробел
Последний раз редактировалось olecya 02.09.2020 09:55, всего редактировалось 3 раза.
Спасибо сказали:
SerW Сообщения: 402 ОС: macOS& Fedora Workstation Latest Контактная информация:
Re: Рисуем блок схемы в консоли
Сообщение SerW » 22.12.2020 23:19
Сергей Ш. » DragonSerW.RU
Спасибо сказали:
gabix Сообщения: 352 ОС: openSUSE Leap 15.4
Re: Рисуем блок схемы в консоли
Сообщение gabix » 23.12.2020 09:58
Как для меня — вообще круть запредельная 🙂
Спасибо сказали:
devilr Сообщения: 3651 ОС: Mandriva => Gentoo (~amd64) Контактная информация:
Re: Рисуем блок схемы в консоли
Сообщение devilr » 23.12.2020 10:10
Кстати, всегда интересовало, а почему в таких поделках рисуют всякими плюсами/минусами, а не символами псевдографики? Они ведь в той же таблице находятся.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
olecya Сообщения: 894 ОС: debian, fedora (i3-wm)
Re: Рисуем блок схемы в консоли
Сообщение olecya » 23.12.2020 10:52
22.12.2020 23:19
Очень информативно, не боитесь, что могут расценить такое как спам?
23.12.2020 10:10
почему в таких поделках рисуют всякими плюсами/минусами
Так плюс это идеальный элемент сопряжения.
23.12.2020 10:10
Они ведь в той же таблице находятся.
А что за таблица? Есть продвинутые диграфы :dig
Чуть не написала глифы.
Бывает пользую когда нужно в латинице ударение поставить
Спасибо сказали:
devilr Сообщения: 3651 ОС: Mandriva => Gentoo (~amd64) Контактная информация:
Re: Рисуем блок схемы в консоли
Сообщение devilr » 23.12.2020 11:03
23.12.2020 10:52
А что за таблица?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
olecya Сообщения: 894 ОС: debian, fedora (i3-wm)
Re: Рисуем блок схемы в консоли
Сообщение olecya » 23.12.2020 11:12
@devilr. Вижу в таблице первые три символа по которым уже есть соображения. Спасибо, отлучусь не на долго
Спасибо сказали:
devilr Сообщения: 3651 ОС: Mandriva => Gentoo (~amd64) Контактная информация:
Re: Рисуем блок схемы в консоли
Сообщение devilr » 23.12.2020 11:28
Просто, я уже много раз видел подобные «рисунки» в официальной документации всяких контор. И они все упорно не хотят применять псевдографику, хотя она совершенно прекрасно отображается хоть на древних терминалах, хоть на печати. Непонятно, почему.
P.S. «ненадолго» в этом контексте пишется слитно. Ваш граммар-наци.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
gabix Сообщения: 352 ОС: openSUSE Leap 15.4
Re: Рисуем блок схемы в консоли
Сообщение gabix » 23.12.2020 12:25
23.12.2020 11:28
Просто, я уже много раз видел подобные «рисунки» в официальной документации всяких контор.
…
Ваш граммар-наци.
Запятая в первом предложении лишняя. Да и нормальные кавычки типа «» нелишне поставить бы.
Дружеский привет от Komma Klan.
Спасибо сказали:
Bizdelnick Модератор Сообщения: 20642 Статус: nulla salus bello ОС: Debian GNU/Linux
Re: Рисуем блок схемы в консоли
Сообщение Bizdelnick » 23.12.2020 12:32
23.12.2020 10:10
Кстати, всегда интересовало, а почему в таких поделках рисуют всякими плюсами/минусами, а не символами псевдографики? Они ведь в той же таблице находятся.
В таблице ASCII их нет, всё остальное может быть недоступно в зависимости от локали.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще |
в течение (часа) новичок нюанс по умолчанию |
приемлемо проблема пробовать трафик |
Спасибо сказали:
gabix Сообщения: 352 ОС: openSUSE Leap 15.4
Re: Рисуем блок схемы в консоли
Сообщение gabix » 23.12.2020 12:36
Так локали теперь всё больше на UTF-8 основываются, а значит псевдографика должна быть доступна почти всем.
Спасибо сказали:
devilr Сообщения: 3651 ОС: Mandriva => Gentoo (~amd64) Контактная информация:
Re: Рисуем блок схемы в консоли
Сообщение devilr » 23.12.2020 12:37
23.12.2020 12:32
В таблице ASCII их нет
А про какую именно таблицу вы говорите? Вроде, во второй половине, они всегда были. в Extended ASCII
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Bizdelnick Модератор Сообщения: 20642 Статус: nulla salus bello ОС: Debian GNU/Linux
Re: Рисуем блок схемы в консоли
Сообщение Bizdelnick » 23.12.2020 12:43
23.12.2020 12:37
А про какую именно таблицу вы говорите? Вроде, во второй половине, они всегда были. в Extended ASCII
В какой именно из Extended ASCII? Вторая половина в них всех разная.
export LC_ALL=ru_RU.KOI8-R
Удачи в выводе псевдографики. ☺
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще |
в течение (часа) новичок нюанс по умолчанию |
приемлемо проблема пробовать трафик |
Спасибо сказали:
devilr Сообщения: 3651 ОС: Mandriva => Gentoo (~amd64) Контактная информация:
Re: Рисуем блок схемы в консоли
Сообщение devilr » 23.12.2020 12:48
23.12.2020 12:43
Удачи в выводе псевдографики.
Если выбрать иврит, то наверняка не будет. Впрочем, может и так, что не у всех эти символы есть. я с этими таблицами больше на микроконтроллерах и китайских LCD — дисплеях встречался.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Bizdelnick Модератор Сообщения: 20642 Статус: nulla salus bello ОС: Debian GNU/Linux
Re: Рисуем блок схемы в консоли
Сообщение Bizdelnick » 23.12.2020 13:09
Хотя я ошибся, в KOI8-R как раз есть псевдографика. Но даже в KOI8-U она частично выброшена. А в Latin-1, например, её нет.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще |
в течение (часа) новичок нюанс по умолчанию |
приемлемо проблема пробовать трафик |
Спасибо сказали:
Hephaestus Сообщения: 3729 Статус: Многоуважаемый джинн. ОС: Slackware64-14.1/14.2 Контактная информация:
Re: Рисуем блок схемы в консоли
Сообщение Hephaestus » 23.12.2020 14:09
23.12.2020 11:28
И они все упорно не хотят применять псевдографику, хотя она совершенно прекрасно отображается хоть на древних терминалах, хоть на печати.
Псевдографика в момент заменяется на «плюсы», «минусы», буквы «T» и «L», стоит только открыть исходник без без явного указания кодировки. Например, набросали рамочки в каком-нибудь встроенном редакторе NortonCommander — всё красиво.
А потом открыли, например, в vim. Всё — псевдографика вся разлетелась — заменилась на плюсы, минусы и пр.
Причем, заменяется автоматом, без всякого спроса.
За все редакторы не скажу, но с vim это было точно.
Чтобы этого не случилось, нужно либо псевдографику указывать кодами символов (что неудобно), либо файл не открывать в сторонних редакторах без указания кодировки.
Так эти люди, которые «не хотят использовать псевдографику» — они просто предпочитают plain text, что вполне оправдано.
Это я про исходники программ, которые рамочки выводят на экран.
А что касается документации — тем более: рисовать рамочки — это ж надо редактор, который такое умеет, плюс сам составитель документации должен это уметь. Это надо разбираться с режимом рисования, выбрать какой-то удобный способ быстрой вставки этих символов. короче, это целая история. А плюсы-минусы — вот они — на клавишах, никуда лезть не надо. И не случится с ними ничего — открывай файл, чем хочешь.
Как рисовать в консоли c
Доброго времени суток
Имею такое задание:
написать работающую в консоли программу, которая позволяет рисовать предметы быта.
Программа должна содержать несколько определений классов (позволяющих рисовать три элемента) с как минимум тремя атрибутами различных типов и методов (как минимум 2 метода на класс).
Примерно такие рисунки:
Изображения
| Screenshot_1.jpg (21.5 Кб, 35 просмотров) | |
| Screenshot_2.jpg (16.2 Кб, 31 просмотров) | |
| Screenshot_3.jpg (8.8 Кб, 32 просмотров) |
| Programist_r |
| Посмотреть профиль |
| Найти ещё сообщения от Programist_r |
рисовать в консоли
Чисто в учебных целях появилась необходимость рисовать в консоли графические объекты (круги , линии , квадраты и т.д.) c++.
Желательно реализовать самому с помощью ASCII знаков .
Заморачиваться на изучение ncurses и т.п. не входит в мои цели.
Какие средства представляет консоль для этого ? В поиске не нашёл ничего полезного.

kitov ★★★
20.11.05 22:04:36 MSK