Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: HardForo en 22 Abril 2016, 22:29 pm



Título: Mini-lib para hacer graficos en consola (versiones en C y C++)
Publicado por: HardForo en 22 Abril 2016, 22:29 pm
Presento una mini-libreria para dibujar en modo texto en C / C++ de forma muy sencilla y es facil de extender.

(http://i.imgur.com/m9cNtuL.png) (http://hardforo.com/thread-179.html)


Funciones:

void setcursor(int x, int y);
void right(int inc);
void left(int inc);
void up(int inc);
void down(int inc);
void dot(int x, int y, char c);
void dotAt(char c);
void xblock(int x, int y, int len, char c);
void yblock(int x, int y, int len, char c);
void sline(int x1,int y1, int x2, int y2, char c);
void slineto(int x2, int y2, char c);
void line(int x1, int y1, int delta_x, int delta_y, int len, char c);
void lineto(int delta_x, int delta_y, int len, char c);
void diamond(int h, char c);
void rectangle(int h, int w, char c);
void rect(int x1, int y1, int x2, int y2, char c);
void triangle(int h, int angle, char c);

Hay una version en C y otra en C++ y las pueden ver aqui (http://goo.gl/9Nrdv3)


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: ivancea96 en 23 Abril 2016, 13:21 pm
Un detalle: Guarda la coherencia con las librerías: Si usas C++ y librerías de C++, utiliza todas las de C++ xD (cstdio, cstdlib y cmath)


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: HardForo en 23 Abril 2016, 14:45 pm
Se ha solventado ya el asunto del uso de librerias y se mantendrán (mientras esté en desarrollo) dos versiones distintas: C y C++  ;D


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: ivancea96 en 23 Abril 2016, 15:19 pm
iostream es de C++.
Los namespaces son de C++.


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: HardForo en 23 Abril 2016, 15:26 pm
 :P


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: MAFUS en 23 Abril 2016, 15:38 pm
Se refiere a las cabeceras stdio, math, stdlib, etc.
Mientras en C son stdio.h, math.h, stdlib.h, ...
En C++ son cstdio, cmath, cstdlib, ...


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: HardForo en 23 Abril 2016, 16:12 pm
Se refiere a las cabeceras stdio, math, stdlib, etc.
Mientras en C son stdio.h, math.h, stdlib.h, ...
En C++ son cstdio, cmath, cstdlib, ...

Es que uso solo cabeceras .h excepto para iostream que he leido que desde la estandarización de C no es más iostream.h (en compiladores modernos)

Entonces, salvo por el comentario de los namespace (corregido) no veo que estoy usando de C++ realmente.


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: ivancea96 en 23 Abril 2016, 16:15 pm
"cout" es un objeto de la clase "ostream". Tiene el "operador <<" para enviarle datos.
En C ni hay clases, ni sobrecargas de operadores.

Si quieres usar C y no C++, en primer lugar, compila con un compilador de C y no de C++ xD
Luego, quita iostream y pon "stdio.h". Ahí tienes printf y scanf, entre otras.


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: HardForo en 23 Abril 2016, 17:06 pm
Respecto de cout tienes "razón" (no discuto), al agregar la opcion -lstdc++ sin embargo GCC lo compila sin problemas.

---
EDIT: gracias Ivan, arreglado (no mas cout) ya que por suerte (diseño) solo tenia que tocar render() y eran 2 lineas de codigo :)


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: MAFUS en 23 Abril 2016, 18:18 pm
A ver, esto es porqué no me gusta lo de C/C++, la gente tiende a mezclarlos.
C estándar, sin extensiones de compiladores ni otras historias, no tiene sobrecargas; sus archivos de cabecera son los terminados en .h; no necesita castings en los punteros a void. Mientras C++ es todo lo contrario en estos puntos.


Título: Re: Dibuje una pirámide, rombo,.... pacman xD
Publicado por: HardForo en 23 Abril 2016, 21:02 pm
Ciertamente @MAFUS, de hecho voy a hacer dos versiones diferentes para C y C++ desde ahora.

(de momento uso malloc() y free() en C++ pero el programa no tiene bugs conocidos y funciona bien)