lunes, 30 de diciembre de 2013

Imprimir matrices y formas en C/C++ con Dev-C++ y WinBGIm

Primero debes configurar Dev-C++ para trabjar con WinBGIm. Para ello debes

1 - Descargar graphics.h y pegarlo en el directorio "include" de Dev-C++.
     Por defecto es C:\Dev-Cpp\include




2- Descargar libbgia y pegarlo en el directorio "lib" 
Por defecto es C:\Dev-Cpp\lib


3- Entrar en Herramientas / Opciones del Compilador

4- En el text area del linker copiar lo siguiente:
-lbgi
-lgdi32
-lcomdlg32
-luuid
-loleaut32
-lole32



Aceptas y ya debe estar configurado.

Ahora un pequeño ejemplo de impresión una matriz columna por columna. Cosa que no se puede hacer con printf que imprime fila por fila


#include <graphics.h>

int main( )
{
    // Inicia un cuadro de 400x300 caracteres
    initwindow(400, 400, "Ejemplo Matriz");
    
    int n=10; // Cantidad de columnas de la matriz
    int m=10; // Cantidad de filas de la matriz
    char matriz[n][m];    
    memset((void*)matriz,48,sizeof(char)*m*n); // Limpa la zona de memoria 
    char  caracter_puntual[2]={0,'\n'}; // Caracter específico de la matriz
        
    for (int x=0; x < n ; ++x )
    {       
            // Imprime la columna
            for (int y=0; y < m ; ++y )
            {
                caracter_puntual[0]=matriz[x][y];
                // Imprime el valor x,y de la matriz
                outtextxy(x*20,y*20,caracter_puntual);
            }            
            delay(200);
            
    }    
    getchar();    
    return 0;
}



Otro ejemplo. Impirmiendo un circulo:

#include <graphics.h>

int main( ){    initwindow(400, 300, "First Sample");    circle(100, 50, 40);    while (!kbhit( ))    {        delay(200);    }    return 0;}




Otro Ejemplo: Imprimiendo letras con colores:

#include <winbgim.h>

void waitForLeftMouseClick();

int main()
{
    initwindow(700,300); 
    settextstyle(0,0,2);
    setcolor(RED);
    outtextxy(100,100,"WELCOME TO CÓDIGO INFORMÁTICO");
    setcolor(GREEN);
    outtextxy(280,130,"INFO - UNT");

    // while(!kbhit()); // wait for user to press a key
    waitForLeftMouseClick(); 

    closegraph();        //close graphics window
    return 0;
}

void waitForLeftMouseClick()
{
    clearmouseclick(WM_LBUTTONDOWN);
    const int DELAY = 50; 
    int x, y;
    while (!ismouseclick(WM_LBUTTONDOWN))
        delay(DELAY);
    getmouseclick(WM_LBUTTONDOWN, x, y);
}

La documentación oficial está en esta pagina:

http://www.cs.colorado.edu/~main/bgi/