Inicio > C/C++, General, Linux > Colores y posicionamiento en terminales Linux (como conio.h en DOS)

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

Viernes, 29 de Mayo de 2009 blakeyed Dejar un comentario Ir a comentarios

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í.

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)

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());

}

votar
  1. Miércoles, 9 de Junio de 2010 a las 20:09 | #1

    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

  2. Jueves, 10 de Junio de 2010 a las 01:21 | #2

    @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

  1. Viernes, 29 de Mayo de 2009 a las 21:08 | #1
  2. Miércoles, 30 de Junio de 2010 a las 11:29 | #2
  3. Viernes, 13 de Agosto de 2010 a las 11:15 | #3
  4. Lunes, 11 de Octubre de 2010 a las 21:39 | #4

Visita otras webs de la red