Publi

Colores y posicionamiento en terminales Linux (como conio.h en DOS)

A veces, es un poco difícil que alguien que sólo conoce conio.h se pase a Linux, más que nada, porque se puede utilizar ncurses, pero hay que cambiar un poco de mentalidad para poder trabajar con la nueva biblioteca.

Por eso, hace unos meses creé unas cuantas funciones que se podían utilizar para ir reemplazándolas poco a poco. Funcionan de forma muy parecida a conio.h (en los colores). Se basan en códigos ANSI, y las podemos utilizar para cualquier programa rápido en que necesitemos utilizar colores en terminal. ncurses es muy potente y si vamos a complicarnos un poco más la vida, mejor utilizar esta segunda.

Cuando estuve implementando estas funciones, tuve un problema, a la hora de leer información del terminal sin mostrarla por pantalla, me basé en: wsize.c de Stephen J. Friedl. También podéis encontrar información sobre los códigos ANSI aquí [la página desapareció :(].

He incluído la opción subrayado (UNDERLINE) y un par de funciones que nos calculan las dimensiones de la pantalla (ya que los terminales pueden ser redimensionados y ser enormes).

Descargar stermp – Simple Terminal Play (stermp.c, stermp.h)

Nota: El código fuente actualizado de este proyecto, lo tengo en Github.

Os pongo aquí el código del ejemplo (conio.c)

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
#include <stdio.h>
#include "stermp.h"

int main()
{
    int pp, fn;
    clrscr();
    for (pp=BLACK; pp<=WHITE; pp++)
        {
            gotoxy(5, 20+pp);
            for (fn=BLACK; fn<DARKGRAY; fn++)
                {
                    textcolor(pp);
                    textbackground(fn);
                    printf("COLOR\t");
                }
        }
    restore_color();
    textcolor(RED+UNDERLINE);
    gotoxy(51, 5);
    printf("Posición X: %d\n", wherex());
    printf("Posición Y: %d\n", wherey());
    printf("Pantalla %dx%d", screenwidth(), screenheight());

}

También podría interesarte...

There are 6 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Sofía /
    Usando Mozilla Firefox Mozilla Firefox 3.0.19 en Ubuntu Linux Ubuntu Linux

    hola, muy bueno tu aporte, pero no sé como usarlo, es decir, qué hago con el archivo descargado?, saludos, así actualizo mi post en mi blog, nos vemos

  3. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.6 en Linux Linux

    @Sofía
    Podemos hacer lo siguiente, un programa de ejemplo (test.c):

    #include
    #include “stermp.h” // Esta biblioteca

    int main(int argc, char *argv[])
    {
    clrscr(); // Borrar pantalla
    textcolor(RED); // Color de texto en rojo
    gotoxy(20,20); // Nos posicionamos en la pantalla
    printf(“Hola mundo, en rojo y cambiado de sitio\n”);

    return 0;
    }

    Luego tienes que hacer lo siguiente:

    $ gcc -c stermp.c
    Esta línea sólo una vez, es para compilar el archivo stermp.c y crear un stermp.o

    Tras eso, cuando compilemos nuestro programa haremos:
    gcc -o test test.c stermp.o

    Al compilar, igual que siempre, pero al final añadimos el fichero .o que hemos creado antes, que es donde están todas las funciones nuevas.

    Saludos

  4. Pingback: Poesía binaria » Actualizado stermp.h (getch(), getche() y kbhit() en Linux) /

  5. Pingback: Poesía binaria » Colores para stdin y stderr /

  6. Pingback: Duda C++ – Foro Teleco /

Leave a Reply