Come posso usare graphics.h in Ubuntu?


19

Esiste un compilatore basato su Linux che supporti la graphics.hlibreria? Voglio implementare programmi grafici, quindi per favore fatemi sapere se esiste un software simile.

In caso contrario, come posso usarlo?


Cosa devi sapere esattamente? I compilatori dovrebbero trovare tutte le intestazioni se inserisci i corretti ... umm ... ascoltatori nel tuo file sorgente.
Braiam,

@Braiam Il compilatore non troverà magicamente un file di intestazione solo perché lo includi. In primo luogo, chiaramente quel file deve essere installato sul tuo sistema (in genere i file di intestazione vengono forniti con *-devpacchetti su distribuzioni Linux) - il compilatore non lo scaricherà per te. In secondo luogo, quel file di intestazione deve trovarsi in una posizione standard in cui un compilatore lo cercherà (come /usr/include), oppure tale posizione deve essere specificata -Isulla riga di comando (per gcco g++). Inoltre, in genere sono necessarie le librerie di runtime per la fase di collegamento (ad eccezione delle librerie solo intestazione) ...
Malte Skoruppa,

@MalteSkoruppa bene, ma di cosa hai bisogno per usarlo? Mettilo nelle tue intestazioni, no?
Braiam,

@Braiam Err ... cosa stai chiedendo? Guarda, la domanda dell'OP è proprio questa: cosa devo fare per poter usare la graphic.hlibreria su Ubuntu? È perfettamente chiaro. Una risposta appropriata spiegherà quali pacchetti sono necessari e come installarli (come fa la risposta esistente) e, eventualmente, quali parametri sono necessari sulla riga di comando al momento della compilazione.
Malte Skoruppa,

@MalteSkoruppa stai leggendo il corpo?
Braiam,

Risposte:


31

Sono disponibili diverse opzioni per eseguire la programmazione grafica tramite Ubuntu.

Utilizzando SDL

Se si desidera utilizzare graphics.hsulla piattaforma Ubuntu è necessario compilare e installare libgraph. È l'implementazione dell'API grafica turbo c su Linux usando SDL.

Non è molto potente e adatto per applicazioni di qualità di produzione, ma è semplice e facile da usare a scopo di apprendimento.

Puoi scaricarlo da qui .

  1. Per prima cosa aggiungi il repository Universe (poiché alcuni pacchetti richiesti non sono disponibili nel repository principale):

    sudo add-apt-repository universe
    sudo apt-get update
  2. Seconda installazione build-essential e alcuni pacchetti aggiuntivi:

    • Per versioni precedenti alla 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
    • Per 18.04 : da Ubuntu 18.04 guile-2.0funziona ed libesd0-devè obsoleto. Per questo è necessario aggiungere repository di xenialin sources.list.

      sudo nano /etc/apt/sources.list

      Aggiungi queste righe:

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

      Corri sudo apt-get update. Quindi installare i pacchetti utilizzando:

      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. Ora estrai il libgraph-1.0.2.tar.gzfile scaricato .

  4. Vai alla cartella estratta ed esegui il seguente comando:

    ./configure
    make
    sudo make install
    sudo cp /usr/local/lib/libgraph.* /usr/lib
  5. Ora puoi usare #include<graphics.h>su Ubuntu e la seguente riga nel tuo programma:

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

Ecco un programma di esempio che utilizza 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;
}
  • Per compilarlo usa

    gcc demo.c -o demo -lgraph
  • Per eseguire digitare

    ./demo

Uscita della demo 1

Uso di OpenGL (tramite GLUT)

Sebbene OpenGL sia essenzialmente concepito per la programmazione 3D, il disegno di forme 2D fornisce lo schema di base e l'introduzione a OpenGL e dà l'idea di come iniziare a disegnare oggetti in OpenGL.

  • Per installare GLUT, aprire il terminale e digitare sudo apt-get install freeglut3-dev.
  • Ecco un semplice programma di grafica che utilizza 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;
  }
  • Compilalo usando

    gcc demo.c -o demo -lglut -lGL

  • Eseguilo usando

    ./demo

Uscita della demo 2


1
Sto usando SDL, ma ho fatto tutto come detto, anche con libgraph, ma dopo l'esecuzione del programma, si interrompe e termina improvvisamente con un errore [xcb] Numero di sequenza sconosciuto durante l'elaborazione della coda
Luzan Baral

quale versione di Ubuntu stai usando?
g_p,

sto usando Ubuntu 14.04
Luzan Baral il

@LuzanBaral, Sembra un problema con GTK, ma puoi comunque eseguire il programma.
g_p,

1
Per errori riscontrati durante l'installazione di libgraph utilizzando SDL, consultare askubuntu.com/a/995265/719469 e askubuntu.com/a/717262/719469 (risparmierete molto del vostro tempo, dicendo questo per esperienza personale: P)
Kewal Shah,

2

Se vuoi usare graphics.h in ubuntu o qualsiasi altra distribuzione Linux, preferisco libxbgi. Può fare quasi tutte le cose che ti aspetti dalla grafica.h per Windows. Puoi scaricarlo da qui: http://libxbgi.sourceforge.net/

Altrimenti se vuoi fare un po 'di grafica di fascia alta, allora sei lì per SDL (che è principalmente per la programmazione di videogiochi) e OpenGL (che è per la grafica 3D). Puoi anche usare una miscela dei due. Un esempio è il gioco briquolo (l'ortografia potrebbe essere errata).

FELICE PROGRAMMAZIONE GRAFICA !!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.