Las «turtle graphics» es un método para programar gráficas vectoriales, las cuales tienen dirección y magnitud. Para ello se usa un cursor que es como una pequeña tortuga ideal, la cual se mueve en una matriz cuadrada de puntos y puede pintar puntos, líneas y/o moverse a través de la malla cuadriculada.
La tortuga tiene los siguientes atributos:
- Una posición
- Una orientación
- Una pluma, que a su vez tiene atributos como color, ancho, arriba y abajo
La tortuga se mueve en la pantalla con comandos como «avanza 10», «gira a la izquierda 90», etcétera. Este lenguaje se inició realmente en el lenguaje de programación para niños llamado «Logo», creación de Seymour Papert, creado a finales de los años 1960s. La idea de la tortuga fue en realidad un pequeño robot que en su caparazón tenía toda la electrónica y se programaba a través de los comandos mencionados. El dispositivo entonces pintaba en un papel -con un plumón- lo que se le pedía de acuerdo a la programación.
Logo permitía enseñar a los niños los conceptos fundamentales de programación y los introducía a temas avanzados como por ejemplo, la recursión. La idea de un lenguaje gráfico para expresar ideas en programación tuvo un éxito notable y se crearon bibliotecas que permitían hacer gráficas como en Logo a través de lo que se denominó finalmente «turtle graphics». Hasta la hija de Papert, Artemis, ha usado las gráficas de la tortuga para explorar la relación entre el arte y los algoritmos.
Hay varios programas que implementan las gráficas de la tortuga, por ejemplo, KTurtle, es un sistema de esta naturaleza en Linux e incluso en iPhone hay una app llamada «Move the Turtle«. Las instrucciones implementar son:
- Back
- ClearScreen
- Forward
- HideTurtle
- Home
- NoWrap
- PenDown
- PenUp
- SetPenColor
- Set Position
- ShowTurtle
- TurnLeft
- TurnRight
- TurtleDelay
- Wrap
- Xcor
- Ycor
Para entender lo que hace cada una de estas instrucciones (sacadas del Manual de Turbo Pascal 3.0), pueden descargar éste de este enlace.
Así entonces, el lector que quiera concursar debe escribir un mini-intérprete de las instrucciones definidas por Turtle Graphics de Turbo Pascal 3.0 (ver arriba).
El código debe ser una serie de funciones o procedimientos que puedan incluirse al programa en el lenguaje que se esté usando, es decir, no hay que implementar (como en Logo), las estructuras de control como FOR, WHILE o REPEAT. Estas deben poderse usar desde el lenguaje de aplicación. Dicho de otra manera, el software que debe escribir el concursante se refiere a programar cada una de las instrucciones mencionadas más arriba.
Un programa que debe correr la biblioteca de TurtleGraphics del concursante debe ser al menos la que se muestra en la siguiente figura:
El ganador (si es de la Ciudad de México), le daré una taza con el logotipo de la Morsa. Si es de otro país o de provincia, le mandaré un USB de al menos 8 GB.
Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto.
En este caso no hay restricción en qué lenguaje usar. El concursante tiene que mandar su código fuente, el ejecutable (si aplica) y el reto tendrá una vigencia de unas tres semanas. Manden sus respuestas a morsa@la-morsa.com