Comment utiliser graphics.h dans Ubuntu?


19

Existe-t-il un compilateur basé sur Linux qui prend en charge la graphics.hbibliothèque? Je souhaite implémenter des programmes graphiques, veuillez donc me faire savoir s'il existe un tel logiciel.

Sinon, comment puis-je l'utiliser?


Que devez-vous savoir exactement? Les compilateurs sont censés trouver tous les en-têtes si vous mettez les bons écouteurs .. umm ... dans votre fichier source.
Braiam

@Braiam Le compilateur ne trouvera pas comme par magie un fichier d'en-tête simplement parce que vous l'incluez. Tout d'abord, il est clair que ce fichier doit être installé sur votre système (généralement les fichiers d'en-tête sont fournis avec des *-devpackages sur les distributions Linux) - le compilateur ne le téléchargera pas pour vous. Deuxièmement, ce fichier d'en-tête doit être soit dans un emplacement standard où un compilateur le recherchera (comme /usr/include), soit cet emplacement doit être spécifié avec -Isur la ligne de commande (pour gccou g++). De plus, vous avez généralement besoin des bibliothèques d'exécution pour l'étape de liaison (à l'exception des
bibliothèques

@MalteSkoruppa bien, mais de quoi avez-vous besoin pour l'utiliser? Mettez-le dans vos en-têtes, non?
Braiam

@Braiam Err ... que demandez-vous? Écoutez, la question de l'OP est juste la suivante: de quoi ai-je besoin pour pouvoir utiliser la graphic.hbibliothèque sur Ubuntu? C'est parfaitement clair. Une réponse appropriée expliquera quels packages sont nécessaires et comment les installer (comme le fait la réponse existante), et éventuellement les paramètres nécessaires sur la ligne de commande au moment de la compilation.
Malte Skoruppa

@MalteSkoruppa lisez-vous le corps?
Braiam

Réponses:


31

Il existe plusieurs options disponibles pour faire de la programmation graphique à l'aide d'Ubuntu.

Utilisation de SDL

Si vous souhaitez utiliser graphics.hsur la plate-forme Ubuntu, vous devez compiler et installer libgraph. Il s'agit de l'implémentation de l'API graphique turbo c sur Linux en utilisant SDL.

Il n'est pas très puissant et adapté à une application de qualité de production, mais il est simple et facile à utiliser à des fins d'apprentissage.

Vous pouvez le télécharger ici .

  1. Ajoutez d'abord le référentiel Universe (car certains packages requis ne sont pas disponibles dans le référentiel principal):

    sudo add-apt-repository universe
    sudo apt-get update
  2. Deuxième installation de build-essential et quelques packages supplémentaires:

    • Pour les versions antérieures au 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
    • Pour 18.04 : à partir d'Ubuntu 18.04 guile-2.0fonctionne et libesd0-devest déconseillé. Pour cela, vous devez ajouter des référentiels de xenialin sources.list.

      sudo nano /etc/apt/sources.list

      Ajoutez ces lignes:

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

      Courez sudo apt-get update. Installez ensuite les packages en utilisant:

      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. Extrayez maintenant le libgraph-1.0.2.tar.gzfichier téléchargé .

  4. Accédez au dossier extrait et exécutez la commande suivante:

    ./configure
    make
    sudo make install
    sudo cp /usr/local/lib/libgraph.* /usr/lib
  5. Vous pouvez maintenant utiliser #include<graphics.h>sur Ubuntu et la ligne suivante dans votre programme:

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

Voici un exemple de programme utilisant 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;
}
  • Pour le compiler, utilisez

    gcc demo.c -o demo -lgraph
  • Pour exécuter le type

    ./demo

Sortie de la démo 1

Utiliser OpenGL (via GLUT)

Bien qu'OpenGL soit essentiellement conçu pour la programmation 3D, le dessin de formes 2D donne le contour de base et l'introduction à OpenGL et donne une idée de la façon de commencer à dessiner des objets dans OpenGL.

  • Pour installer GLUT, ouvrez le terminal et tapez sudo apt-get install freeglut3-dev.
  • Voici un programme graphique simple utilisant 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;
  }
  • Compilez-le en utilisant

    gcc demo.c -o demo -lglut -lGL

  • Exécutez-le en utilisant

    ./demo

Sortie de la démo 2


1
J'utilise SDL, mais j'ai fait tous les trucs comme dit, intall libgraph aussi, mais après l'exécution du programme, il s'arrête et se termine soudainement avec une erreur [xcb] Numéro de séquence inconnu lors du traitement de la file d'attente
Luzan Baral

quelle version d'Ubuntu utilisez-vous?
g_p


@LuzanBaral, Il semble que GTK pose problème, mais vous pouvez toujours exécuter le programme.
g_p

1
Pour les erreurs rencontrées lors de l'installation de libgraph à l'aide de SDL, consultez askubuntu.com/a/995265/719469 et askubuntu.com/a/717262/719469 (cela vous fera gagner beaucoup de temps, en disant cela par expérience personnelle: P)
Kewal Shah

2

Si vous souhaitez utiliser graphics.h dans ubuntu ou toute autre distribution Linux, je préfère libxbgi. Il peut faire presque tout ce que vous attendez de graphics.h pour Windows. Vous pouvez le télécharger ici: http://libxbgi.sourceforge.net/

Sinon, si vous voulez faire des graphiques haut de gamme, vous êtes là pour SDL (qui est principalement destiné à la programmation de jeux vidéo) et OpenGL (qui est destiné aux graphiques 3D). Vous pouvez également utiliser un mélange des deux. Un exemple est le jeu briquolo (l'orthographe peut être erronée).

PROGRAMMATION GRAPHIQUES HEUREUX !!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.