Es posible que algunos conozcáis el lenguaje de programación LOGO, puesto que se enseña/enseñó en algunas escuelas para empezar a aprender programación. Consiste en un lenguaje de programación donde básicamente mueves una tortuga con un lápiz en un entorno gráfico, con comandos como hacer avanzar la tortuga (fd) o hacer girar la tortuga (rt, lt). Esto esta muy bien, pero tiene un inconveniente: una vez dominas el lenguaje, no te va a servir para nada más aparte de mover la tortuga.
Aparte de esto, la mayoría de los interpretes de LOGO son antiguos, no tienen antialising en el dibujado, e incluso algunos ni siquiera son compatibles con los procesadores de 64 bit actuales.
Pues aprovechando estas vacaciones de navidad, he creado una librería para C muy fácil de utilizar que os permitirá hacer dibujicos de la misma manera que se hace en LOGO en el lenguaje de programación C.
Esta librería consta únicamente de 2 archivos turtle.c y turtle.h aparte de la librería SDL, y tiene una implementación propia de antialising (En la cual dediqué gran parte del tiempo) y es compatible con Windows, Linux (Incluyendo Raspberry Pi), e imagino que en Mac también.
Ej:
El programa de la imagen sería el siguiente:
| #include <stdio.h> | |
| #include "turtle.h" | |
| void fern(int size, int sign); | |
| void fern(int size, int sign) | |
| { | |
| if (size<1) return; | |
| t_penSize(size/4); | |
| t_forward(size); | |
| t_turnRight(70*sign); | |
| fern(size/2,sign*-1); | |
| t_penSize(size/4); | |
| t_turnLeft(70*sign); | |
| t_forward(size); | |
| t_turnLeft(70*sign); | |
| fern(size/2,sign); | |
| t_penSize(size/4); | |
| t_turnRight(77*sign); | |
| fern(size-1,sign); | |
| t_turnRight(173*sign); | |
| t_penUp(); | |
| t_forward(size*2); | |
| t_penDown(); | |
| t_turnLeft(180); | |
| } | |
| int main(int argc, char ** argv) | |
| { | |
| if (t_init(640,480,window)!=0) puts("Init error"); | |
| else { | |
| t_autoframeOff(); | |
| t_moveSpeed(200); | |
| t_turnSpeed(0); | |
| t_penUp(); | |
| t_goTo(192,450); | |
| t_setAngle(0); | |
| t_penDown(); | |
| t_turColor(0,60,0); | |
| fern(25,1); | |
| t_frame(); | |
| t_saveBMP("fern.bmp"); | |
| t_idle(); | |
| } | |
| } |
Aparte de las instrucciones básicas como t_forward y t_turnRight también tenemos otras instrucciones opcionales como t_autoframeOff, t_moveSpeed y t_turnSpeed relacionadas con la animación, y otras instrucciones de utilidad interesantes como t_saveBMP que guarda en un archivo BMP el contenido de la pantalla.
La librería esta totalmente documentada en cualquier caso. Si aun así tenéis dudas o sugerencias, me las podéis comentar por aquí.

No hay comentarios:
Publicar un comentario