Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/131: Рейтинг темы: голосов - 131, средняя оценка - 4.76
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566

Графика в консоли C++

31.07.2011, 16:16. Показов 28142. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Изучаю C++ уже около 3-х месяцев, но нигде не могу найти аналог виндовой библиотеки для рисования прямоугольников, кругов и линий в консоли под Linux. Ncurses тоже не объявляется, всё, что находил - или только для Windows, или только для C.
ANSI псевдографика не пойдёт. Заранее спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.07.2011, 16:16
Ответы с готовыми решениями:

Графика в консоли
Изучаю с++ написал калькулятор для консоли, хочу переписать его в графическую версию для консоли. Не могу приручить ...

Графика в консоли
Доброго времени суток. Мне нужно нарисовать прямоугольник по координатам. Вопрос: я ввожу координаты, прямоугольник рисуется, но как...

Графика в консоли
Здравствуйте, подскажите пожалуйста, можно ли в консоли с++ устроить графический интерфейс небольшой, например, расстоновка знаков в...

47
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 00:39  [ТС]
Студворк — интернет-сервис помощи студентам
Bash
1
-rw-r--r-- 1 root root 17935 2011-04-22 21:08 /usr/include/vga.h
Да, пробил через dir - vga.h там есть.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2011, 00:40
Ну так в чём проблема? Все заголовки из этого каталога без проблем подключаются в программах C/C++. При попытке компиляции ругается на этот заголовок?
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 00:43  [ТС]
Подключаю <stdio.h> - тоже говорит, что такого нет.

При сборке: "sd.cxx.text+0x16): undefined reference to `vga_setmode'" - и так на каждую функцию в vga.h.

Но при компиляции на vga.h уже не ругается - только при сборке такая ключква.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2011, 00:46
Это уже ошибки компоновщика, так как не указана библиотека, с которой надо линковать программу. Надо в строку вызова компилятора добавить в конец нужную библиотеку. Не знаю точно какую, но скорее всего так:
-lvga
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 00:50  [ТС]
Собирается верно, но вылетает ошибка - уже на нескольких примерах:
C++
1
svgalib: Cannot get I/O permissions.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2011, 00:54
При запуске что ли? Так никто не обещал, что оно под иксами будет работать. Сам же без иксов просил

Добавлено через 2 минуты
Ну и потом, там конфигурационный файл есть. Настраивать надо библиотеку на конкретный видеоадаптер.
1
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 01:12  [ТС]
grizlik78, ну ё-моё...

Добавлено через 41 секунду
Пошёл я в Паскаль) Спасибо за помощь)

Добавлено через 17 минут
Теперь при запуске любой программы выскакивает:
svgalib: Cannot get I/O permissions.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2011, 01:14
-lvga убрать надо, раз не используется.
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 01:24  [ТС]
Убрал сразу. Не помогло.

Добавлено через 49 секунд
Даже в Лазарусе приложения также виснут.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2011, 02:46
Хочу видеть
Code
1
ldd файл_бинарника_скомпилированной_программы
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
01.08.2011, 06:42
Цитата Сообщение от Zoominger Посмотреть сообщение
аналог виндовой библиотеки для рисования прямоугольников, кругов и линий в консоли под Linux.
А самому повозиться и написать функции интересно? Если да,то могу дать материал для ознакомления. Я имею ввиду,что есть библиотека,в которой работа с графикой на довольно низком уровне абстракции (взять пиксель,закрасить,отобразить на экране и т.д.) а уже линии и прямоугольники рисуешь сам.
1
 Аватар для dr.curse
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
01.08.2011, 14:14
Цитата Сообщение от #pragma Посмотреть сообщение
А самому повозиться и написать функции интересно? Если да,то могу дать материал для ознакомления. Я имею ввиду,что есть библиотека,в которой работа с графикой на довольно низком уровне абстракции (взять пиксель,закрасить,отобразить на экране и т.д.) а уже линии и прямоугольники рисуешь сам.
#pragma, мне можешь дать? Меня очень интерресует низкоуровневое программирование.
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 15:48  [ТС]
grizlik78, а что это?)

#pragma, я только учусь программиовать на C++, но не отказался бы. Особенно, если инструкция на русском языке.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2011, 16:09
Цитата Сообщение от Zoominger Посмотреть сообщение
grizlik78, а что это?)
Консольная программа, которая показывает прилинкованные библиотеки
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
01.08.2011, 18:38
aram_gyumri, Zoominger
Во первых,если на Убунту или Дебиан-системе, запусти
Code
1
2
3
sudo apt-get install libsdl-dev
или
 sudo apt-get install libsdl1.2-dev
(точно не помню,нужно ли указывать 1.2)
Значит вот,даю исходники, разобраться,думаю,не сложно (хоть и комментариев нет,и код корявый, так сказать "от новичка к новичку" ). По крайней мере там кода не много,и это простой пример. Алгоритмы аппроксимации линий были слизаны с Википедии,так что сами алгоритмы,думаю, нормальные.
graphics_lib.h
http://basin.svn.sourceforge.net/viewvc/basin/Interpreter/runtime/graphics/graphics_lib.h?revision=81&view=markup

graphics.h
http://basin.svn.sourceforge.net/viewvc/basin/Interpreter/runtime/graphics/graphics.h?revision=81&view=markup

graphics.cpp
http://basin.svn.sourceforge.net/viewvc/basin/Interpreter/runtime/graphics/graphics.cpp?revision=85&view=markup

Основной интерес может представлять функция void graphics_SCREEN в файле graphics.cpp (там происходит инициализация видеокарты, устанавливается нужный видеорежим (советую поиграться разными,это влияет на скорость) ), а также функции с алгоритмами в файле graphics_lib.h. Функции
C++
1
2
3
4
void graphics_SCREEN (val_Arr_t *params);
void graphics_PRESET (val_Arr_t *params);
void graphics_LINE   (val_Arr_t *params);
void graphics_CIRCLE (val_Arr_t *params);
Принимают параметр val_Arr_t,который является вектором, а используются только целые значения величин,заключённых в него, так что если захочется,можно просто немного переделать, чтобы принимались массивы обычных чисел. Основные функции с алгоритмами в файле graphics_lib.h (функции putpixel,putline,putcircle). Ещё обрати внимание,как идёт работа с функцией SDL_UpdateRect в putline - обновляется только та часть экрана, которая была прорисована - это очень влияет на скорость графики. Решение,само собой, деревянное,но работает. По уму надо делать таймер обновления экрана или что-то более умное.
В-общем,смотри,разбирайся,будут конкретные вопросы - отвечу. Документацию по SDL можешь найти тут http://www.libsdl.org/docs.php
К сожалению, на русском там только введение в библиотеку, основная документация на английском. Но смею тебя заверить - если решил стать программистом,тебе придётся выучить английский хотя бы до уровня языка проф. литературы,так как большинство документации (не только SDL) на английском.

P.S. Линковать программу, использующую библиотеку SDL следует с ключом для линкера -lSDL
0
10 / 10 / 0
Регистрация: 14.12.2008
Сообщений: 59
01.08.2011, 19:09
Не легче 1 раз освоить Gtk или Qt? ncurses - это псевдографика.
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 19:56  [ТС]
grizlik78

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
a52dec        _G_config.h         math.h        sched.h
aalib.h       gconv.h         mcheck.h      scsi
aio.h         gcrypt.h        memory.h      search.h
aliases.h     gcrypt-module.h     menu.h        semaphore.h
alloca.h      gdkmm-2.4       midori-0.3    setjmp.h
a.out.h       gdk-pixbuf-2.0      mit-krb5      sgtty.h
argp.h        geany           mm        shadow.h
argz.h        getopt.h        mntent.h      sigc++-2.0
ar.h          gettext-po.h        monetary.h    signal.h
arpa          ggi             mqueue.h      slang.h
asm-generic   giomm-2.4       mtd       slcurses.h
assert.h      gio-unix-2.0        nautilus-actions  sound
atk-1.0       GL              nautilus-sendto   spawn.h
atkmm-1.6     glib-2.0        nc_tparm.h    stab.h
audio         glibmm-2.4          ncurses_dll.h stdint.h
autosprintf.h     glob.h          ncurses.h     stdio_ext.h
bits          gnome-paint         net       stdio.h
byteswap.h    gnu             netash        stdlib.h
c++       gnutls          netatalk      string.h
cairo         gnu-versions.h      netax25       strings.h
cairomm-1.0   gpg-error.h         netdb.h       stropts.h
caml          grp.h           neteconet     sys
Cg        gshadow.h       netinet       syscall.h
com_err.h     gssapi          netipx        sysexits.h
compiz        gssapi.h        netiucv       syslog.h
complex.h     gssrpc          netpacket     tar.h
cpio.h        gtk-2.0         netrom        termcap.h
crypt.h       gtkmm-2.4       netrose       term_entry.h
ctype.h       gtk-unix-print-2.0  NetworkManager    term.h
CUnit         i386-linux-gnu      nfs       termio.h
cups          icc34.h         nl_types.h    termios.h
cursesapp.h   iconv.h         nouveau       tgmath.h
cursesf.h     ieee754.h       nss.h     thread_db.h
curses.h      ifaddrs.h       numpy     tic.h
cursesm.h     inttypes.h          NVCtrl        time.h
cursesp.h     jconfig.h       obstack.h     ttyent.h
cursesw.h     jerror.h        ogg       ucontext.h
cursslk.h     jmorecfg.h          opagent.h     ulimit.h
dbus-1.0      jpegint.h       openssl       unctrl.h
dca.h         jpeglib.h       openvpn       unistd.h
dirent.h      kadm5           oss-redir.h   ustat.h
dlfcn.h       kdb.h           panel.h       utime.h
drm       krb5            pango-1.0     utmp.h
dts.h         krb5.h          pangomm-1.4   utmpx.h
elf.h         langinfo.h          paths.h       values.h
endian.h      lastlog.h       pciaccess.h   vgagl.h
envz.h        lcms.h          php5      vga.h
err.h         libdjvu         pixman-1      vgajoystick.h
errno.h       libdrm          pngconf.h     vgakeyboard.h
error.h       libgen.h        png.h     vgamouse.h
et        libglade-2.0        poll.h        video
eti.h         libglademm-2.4      printf.h      vorbis
etip.h        libintl.h       profile.h     wait.h
execinfo.h    libio.h         protocols     wchar.h
expat_config.h    libkms          pthread.h     wctype.h
expat_external.h  libltdl         pty.h     webcam.h
expat.h       libmng_conf.h       pwd.h     wordexp.h
fcntl.h       libmng.h        python2.6     X11
features.h    libmng_types.h      python2.6_d   xcb
fenv.h        libmodplug          python2.7     xchat
FlexLexer.h   libpng          python2.7_d   xen
fmtmsg.h      libpng12        qt3       xf86drm.h
fnmatch.h     libtasn1.h          qutim     xf86drmMode.h
fontconfig    libxml2         rdma      xlocale.h
form.h        limits.h        realtimebattle    xorg
fpu_control.h     link.h          re_comp.h     zconf.h
freetype2     linux           regex.h       zlibdefs.h
fstab.h       locale.h        regexp.h      zlib.h
ft2build.h    ltdl.h          resolv.h
fts.h         mad.h           rpc
ftw.h         malloc.h        rpcsvc
#pragma, а как именно она работает? Понять-то понимаю ход работы, а вот алгоритм было бы неплохо узнать) ps: установил.

Добавлено через 1 минуту
dasalam, пытался - там Си. Кстати, есть маны о Qt/Gtk на русском для C++? (наверно бред написал )
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
01.08.2011, 20:08
Цитата Сообщение от Zoominger Посмотреть сообщение
#pragma, а как именно она работает? Понять-то понимаю ход работы, а вот алгоритм было бы неплохо узнать) ps: установил.
Она - в смысле библиотека? Или какая-то конкретная функция? Насчёт библиотеки не знаю, может работает как-то напрямую с железом через ядро,может там есть ещё прослойка каких-то вспомогателных кодов (так как SDL - кроссплатформенная библиотека).
А если про функцию - алгоритм как работает я представляю очень смутно,я взял его и Википедии,там помню была фишка в том,что избегалась работа с числами с плавающей точкой за счёт сдвигов,и поэтому был выигрыш в скорости. Глубже на уровне байтов и битов я не залазил, это надо отдельно посвятить этому время, делать упражнения, читать про представления чисел в компьютере.
0
Эксперт С++
 Аватар для grizlik78
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2011, 20:11
Zoominger, это что, вывод ldd? По-моему это листинг каталога /usr/include
Обычно вывод ldd выглядит примерно так:
Code
1
2
3
4
5
6
7
$ ldd a.out        
        linux-vdso.so.1 =>  (0x00007ffff298c000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fdae93dd000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fdae91c7000)
        libc.so.6 => /lib64/libc.so.6 (0x00007fdae8e5d000)
        libm.so.6 => /lib64/libm.so.6 (0x00007fdae8bdb000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fdae970c000)
0
368 / 256 / 65
Регистрация: 22.06.2010
Сообщений: 1,566
01.08.2011, 20:27  [ТС]
grizlik78, виноват) Какая именно команда?

#pragma

Программы запускаются, спасибо.

А насчёт манов Гугл потереблю)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.08.2011, 20:27
Помогаю со студенческими работами здесь

Графика в консоли
Существует ли возможность реализовать графику в консольных приложениях С++ с использованием стандартных библиотек. (без создния собственных...

Графика в консоли
Помогите разобраться с графикой в консоле. компилирую код в Dev C++ #include &lt;iostream&gt; #include &lt;windows.h&gt; int main(){ ...

Черепашья графика в консоли на C
Привет. Для меня сложная задача. Бьюсь над ней долго. Условие задачи: Есть поле 50х50 заполненное нулями, если черепаха...

Графика в консоли (Dev C++)
помогите разобраться. примерно такая программа выдает вот такую ошибку,хотя на борланде запускалась. #include &lt;graphics.h&gt; ...

Построение графика функции в консоли
Привет всем Задание такое - построить график функции |y| = |sin(x)| + cos(x) Вся сложность заключается в том что график должен быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru