Как мне использовать graphics.h в Ubuntu?

19

Есть ли компилятор на основе Linux, который поддерживает graphics.hбиблиотеку? Я хочу реализовать графические программы, поэтому, пожалуйста, дайте мне знать, если есть такое программное обеспечение.

Если нет, то как я могу это использовать?

Атул Сингх
источник
Что именно вам нужно знать? Предполагается, что компиляторы найдут все заголовки, если вы добавите в исходный файл правильных ... ммм ... слушателей.
Брайам
@Braiam Компилятор волшебным образом не найдет заголовочный файл только потому, что вы его включили. Во-первых, ясно, что файл должен быть установлен в вашей системе (обычно заголовочные файлы поставляются с *-devпакетами в дистрибутивах Linux) - компилятор не будет загружать его для вас. Во-вторых, этот заголовочный файл должен находиться либо в каком-то стандартном месте, где его будет искать компилятор (например, /usr/include), либо это местоположение должно быть указано -Iв командной строке (для gccили g++). Кроме того, вам обычно нужны
исполняющие библиотеки
@MalteSkoruppa хорошо, но что вам нужно для его использования? Поместите это в свои заголовки, нет?
Брайам
@Braiam Err ... что ты спрашиваешь? Послушайте, вопрос ОП заключается в следующем: что мне нужно сделать, чтобы иметь возможность использовать graphic.hбиблиотеку в Ubuntu? Это совершенно ясно. Соответствующий ответ объяснит, какие пакеты необходимы и как их установить (как это делает существующий ответ), и, возможно, какие параметры необходимы в командной строке во время компиляции.
Malte Skoruppa
@MalteSkoruppa ты читаешь тело?
Брайам

Ответы:

31

Есть несколько опций, доступных для графического программирования с использованием Ubuntu.

Использование SDL

Если вы хотите использовать graphics.hна платформе Ubuntu, вам нужно скомпилировать и установить libgraph. Это реализация графического API Turbo C в Linux с использованием SDL.

Он не очень мощный и подходит для качественного применения, но он прост и удобен в обучении.

Вы можете скачать его здесь .

  1. Сначала добавьте репозиторий Universe (поскольку некоторые необходимые пакеты недоступны в основном репозитории):

    sudo add-apt-repository universe
    sudo apt-get update
  2. Вторая установка build-essential и некоторые дополнительные пакеты:

    • Для версий до 18.04:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-1.8 \
      guile-1.8-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev build-essential
    • Для 18.04 : Из Ubuntu 18.04 guile-2.0работает и libesd0-devустарела. Для этого вам нужно добавить репозитории xenialв sources.list.

      sudo nano /etc/apt/sources.list

      Добавьте эти строки:

      deb http://us.archive.ubuntu.com/ubuntu/ xenial main universe
      deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main universe

      Беги sudo apt-get update. Затем установите пакеты, используя:

      sudo apt-get install libsdl-image1.2 libsdl-image1.2-dev guile-2.0 \
      guile-2.0-dev libsdl1.2debian libart-2.0-dev libaudiofile-dev \
      libesd0-dev libdirectfb-dev libdirectfb-extra libfreetype6-dev \
      libxext-dev x11proto-xext-dev libfreetype6 libaa1 libaa1-dev \
      libslang2-dev libasound2 libasound2-dev
  3. Теперь распакуйте загруженный libgraph-1.0.2.tar.gzфайл.

  4. Перейдите в извлеченную папку и выполните следующую команду:

    ./configure
    make
    sudo make install
    sudo cp /usr/local/lib/libgraph.* /usr/lib
  5. Теперь вы можете использовать #include<graphics.h>в Ubuntu и следующую строку в вашей программе:

    int gd=DETECT,gm; 
    initgraph(&gd,&gm,NULL);

Вот пример программы, использующей graphics.h:

/*  demo.c */
#include <graphics.h>

int main()
{
   int gd = DETECT,gm,left=100,top=100,right=200,bottom=200,x= 300,y=150,radius=50;
   initgraph(&gd,&gm,NULL);
   rectangle(left, top, right, bottom);
   circle(x, y, radius);
   bar(left + 300, top, right + 300, bottom);
   line(left - 10, top + 150, left + 410, top + 150);
   ellipse(x, y + 200, 0, 360, 100, 50);
   outtextxy(left + 100, top + 325, "C Graphics Program");

   delay(5000);
   closegraph();
   return 0;
}
  • Для компиляции используйте

    gcc demo.c -o demo -lgraph
  • Для запуска типа

    ./demo

Выход демо 1

Использование OpenGL (через GLUT)

Хотя OpenGL в основном предназначен для 3D-программирования, рисование 2D-форм дает базовую схему и введение в OpenGL и дает представление о том, как начать рисовать объекты в OpenGL.

  • Чтобы установить GLUT, откройте терминал и наберите sudo apt-get install freeglut3-dev .
  • Вот простая графическая программа, использующая GLUT
/*  demo.c */
#include <GL/gl.h>
#include <GL/glut.h>
#include <GL/glu.h>

void setup() {   glClearColor(1.0f, 1.0f, 1.0f, 1.0f); }

void display()
   {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
      glColor3f(0.0f, 0.0f, 0.0f);
      glRectf(-0.75f,0.75f, 0.75f, -0.75f);
      glutSwapBuffers();
   }

int main(int argc, char *argv[])
  {
     glutInit(&argc, argv);
     glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
     glutInitWindowSize(800,600);
     glutCreateWindow("Hello World");

     setup();
     glutDisplayFunc(display);
     glutMainLoop();
     return 0;
  }
  • Скомпилируйте это, используя

    gcc demo.c -o demo -lglut -lGL

  • Запустите его, используя

    ./demo

Выход демо 2

G_p
источник
1
Я использую SDL, но я выполнил все действия, как было сказано, также запустил libgraph, но после запуска программы он внезапно останавливается и завершается с ошибкой [xcb] Неизвестный порядковый номер при обработке очереди
Luzan Baral
какую версию Ubuntu вы используете?
g_p
Я использую Ubuntu 14.04
Luzan Baral
@LuzanBaral, кажется, проблема с GTK, но вы все равно можете запустить программу.
g_p
1
За ошибками, возникающими при установке libgraph с использованием SDL, обращайтесь по адресу askubuntu.com/a/995265/719469 и askubuntu.com/a/717262/719469 (сэкономите много времени, сказав это на личном опыте: P)
Kewal Shah
2

Если вы хотите использовать graphics.h в Ubuntu или любом другом дистрибутиве Linux, тогда я предпочитаю libxbgi. Он может делать почти все, что вы ожидаете от graphics.h для Windows. Вы можете скачать его здесь: http://libxbgi.sourceforge.net/

В противном случае, если вы хотите создать высококлассную графику, вы можете использовать SDL (который в основном предназначен для программирования видеоигр) и OpenGL (который предназначен для 3D-графики). Вы также можете использовать смесь из двух. Одним из примеров является игра briquolo (написание может быть неправильным).

ПРОГРАММИРОВАНИЕ СЧАСТЛИВЫХ ГРАФИКИ !!

Gprogrammer
источник