30 años después…
Corría el año 1987 y en el colegio donde estaba daban clases de LOGO, un lenguaje de programación script, bastante fácil de aprender por niños de cualquier edad. Yo estaba en primer grado, y al ver lo que se podía hacer quedé asombrado…
Practicaba en mi casa con el mismo modelo de computadora que había en el colegio, una super poderosa Apple II/c con un monitor que daba los 16 colores en todos los tonos de verde que una tarjeta de 4 bits podía dar. (https://en.wikipedia.org/wiki/Apple_IIc#Specifications)
Luego de una tarde frente a aquel monitor, podía dolerte la cabeza por semanas, y yo pasé muchas tardes y mañanas… y noches…
Hice todo lo que se podía hacer en el LOGO que soportaba la Apple. Hacía competencias con los compañeros de clase a ver quién hacía el código que llenara la pantalla más rápido.
Ah si… LOGO como iba diciendo era un lenguaje de programación, con manejo de cadenas de caracteres y gráficos de tortuga. Desde los 6 años, preferí la parte gráfica de un computador, cadenas de ¿qué?… ¿A quién le importaba hacer una computadora que te responda y hable contigo?… Los gráficos eran geniales, unas verdaderas obras de arte y se podía hacer hasta interactivo… ¡¡¡wooow!!!
Pasó el tiempo, y aprendí a programar en LOGO, BASIC, PASCAL, C, C++, Visual Basic, C#, JavaScript, HTML, PHP, JAVA, muchas cadenas, muchos arreglos, base de datos, páginas web… ¡Detengan el mundo! De vuelta a los gráficos, aprendí Corel Draw, el script de POVRay, 3D Studio de DOS, 3DS Max, Maya, algo de AutoCAD y de Rhino también, etc etc… si… el mundo gráfico por computadora es mucho más entretenido.
Y así luego de mucho tiempo queriendo hacer algo propio, con muchos fracasos, luego de 1 empresa propia, dos sociedades que se acabaron por muchas razones, y seguir con muchas ideas, con muchos logros y avances pequeños… al fin, el tiempo y las estrellas se han alineado, y estoy sacando mis propios proyectos.
Los 3 juegos que conforman el primer tomo de Gate of Infinyx se verán conectados en un universo mágico, y el jugador será el único capaz de conectarlos. Los 3 juegos comienzan siendo un homenaje a algunos géneros clásicos, un shooter espacial, una aventura gráfica de plataformas, y un beat ‘em up callejero…
El universo donde esto podría funcionar necesitaba un elemento de conexión, un gráfico, un logo, un algo. Busqué en San Google “concentric squares rotated” … fueron segundos en los que mi cerebro hizo click… casi se me sale una lágrima… esas cosas se podían hacer en LOGO.
Y así busque algún intérprete de LOGO actual, creyendo que no habría muchos, y que equivocado estaba.
Escogí FMS Logo por no dejar (http://fmslogo.sourceforge.net/) y la portada trajo a mi mente una imagen de justo lo que quería.
Así que… manos a las obras.
LOGO era y sigue siendo un lenguaje fácil, pero ni de broma mi cerebro se acordaba de todo.
Tuve que reaprender todo lo que necesitaba, en casi dos horas. Algunas cosas de este script estoy casi seguro de que no corrían en mi Apple, no estoy seguro y no busqué, la verdad, como comprobarlo.
El siguiente es el código, si quieres hacer la prueba estás invitado:
TO SQUARE :SIDE :REP SETPEN :REP REPEAT 4 [ FORWARD :SIDE RIGHT 90 ] WAIT 20 ; move into the square PENUP RIGHT 45 FORWARD 4 ; fill the square with red SETPEN :REP FILL ; move back BACK 4 LEFT 45 PENDOWN END TO SETPEN :BRIGHTNESS SETPENCOLOR ( LIST 0 ; red 30 ; green :BRIGHTNESS * 10 ; blue ) SETFLOODCOLOR ( LIST 0 ; red 30 ; green :BRIGHTNESS * 10 ; blue ) END TO SQUAREFLOWER :SIDE :ANGLE :REP IF :SIDE < 40 [STOP] SQUARE (:SIDE) :REP FD (:SIDE - (:SIDE / (1+(TAN :ANGLE)))) RIGHT :ANGLE SQUAREFLOWER (:SIDE / (1+(TAN :ANGLE))) :ANGLE (:REP + 1) END
El siguiente es el código para hacerlo correr y que quede como el mío.
CS PENUP LT 90 FD 100 RT 90 RT 38 PENDOWN SQUAREFLOWER 400 10 5
¡Ah, si! Al final coloca un HT para esconder la Tortuga y voila…
Esto tiene un pequeño fallo, no está todo lo centrado que lo necesitaba, algo está fallando en la fórmula para encontrar el tamaño de un lado de cada cuadrado.
a + b = side tan(angle) = a/b
Pero así quedará por ahora. Así parece justo lo que quiero…
Jumm… ¡no! me sigue molestando, ese error, creo que en el libro Aprendiendo con Apple LOGO salía como arreglarlo… pero ese libro solo existe ahora en mis recuerdos…
Nada, me tocará improvisar… ya no tengo 6 años…
Ejem…
Creo que lo tengo… aunque esto solo funciona con cualquier tamaño, pero a 10 grados nada más.
Aquí tienen el código nuevo.
TO SETPEN :BRIGHTNESS make "m (MODULO :BRIGHTNESS 2) (IFELSE :m = 0 [ SETPENCOLOR ( LIST 0 ; red 30 ; green :BRIGHTNESS * 7 ; blue ) SETFLOODCOLOR ( LIST 0 ; red 30 ; green :BRIGHTNESS * 7 ; blue ) ] [ SETPENCOLOR ( LIST 255 ; red 255 ; green 255 ; blue ) SETFLOODCOLOR ( LIST 255 ; red 255 ; green 255 ; blue ) ]) END TO SQUARE :SIDE :REP SETPEN :REP REPEAT 4 [FD :SIDE rt 90] WAIT 20 ; move into the square PENUP RIGHT 45 FORWARD 4 ; fill the square with red SETPEN :REP FILL ; move back BACK 4 LEFT 45 PENDOWN END TO SQUAREFLOWER :SIDE :ANGLE :REP IF :SIDE < 30 [STOP] SQUARE (:SIDE) :REP FD (:SIDE - (:SIDE / (1+ (TAN :ANGLE)))) RIGHT :ANGLE SQUAREFLOWER ((:SIDE + ((1.25 * :SIDE ) / 100))/ (1+ (TAN :ANGLE))) :ANGLE (:REP + 1) END TO SQUAREFLOWERCENTER :SIDE :ANGLE :REP CS PU LT 90 FD :SIDE / 2 LT 90 FD :SIDE / 2 RT 180 PD SQUAREFLOWER :SIDE :ANGLE :REP END
SQUAREFLOWERCENTER 490 10 14
Y hace esta belleza…
LOGO ES DEMASIADO! (aunque debería tener antialiasing)
Ahora, esto no funciona con ángulos distintos de 10… no sé por qué, se los dejo de tarea… y si tienen la respuesta de por qué y cómo solucionarlo se ganan un premio… y no lo digo en broma…
A partir de este trabajo, comienzo el logo de los juegos y esta nueva gran aventura.