Queremos diseñar un programa que emule el
funcionamiento de un telesketch, de tal manera que podamos dibujar rayas hacia
arriba, abajo, izquierda y derecha con el teclado pulsando las teclas i,
k,
j
y l
respectivamente, de tal manera que podamos realizar un dibujo en la pantalla en
función de las teclas que pulsemos.
Veamos el siguiente código de este sencillo
telesketch:
clearscreen
hideturtle
to tele
make "tecla rc
if tecla = "i [fd 5]
if tecla = "k [back 5]
if tecla = "j [lt 90 fd 5 rt 90]
if tecla = "l [rt 90 fd 5 lt 90]
if tecla = "s [savepict "dibujo]
if tecla = "c [loadpict "dibujo]
tele
end
hideturtle
to tele
make "tecla rc
if tecla = "i [fd 5]
if tecla = "k [back 5]
if tecla = "j [lt 90 fd 5 rt 90]
if tecla = "l [rt 90 fd 5 lt 90]
if tecla = "s [savepict "dibujo]
if tecla = "c [loadpict "dibujo]
tele
end
El código creado se ha hecho usando un procedimiento, en este caso el procedimiento tele. Un procedimiento, a efectos
prácticos, viene a ser como definir un nuevo comando que a partir de ahora el
compilador va a saber ejecutar. Para ejecutarlo no tenemos más que escribir
su nombre y pulsar intro: tele.
las
dos primeras líneas (clearscreen y hideturtle) sencillamente borran la
pantalla y ocultan la tortuga respectivamente. La línea tercera (to tele) y última (end), delimitan y definen el procedimiento tele. La penúltima línea
(tele) aporta recursividad, es
decir, como llama al procedimiento tele
desde el propio procedimiento tele,
garantiza que el programa se ejecute indefinidamente.
La
lectura del teclado la da la línea make
“tecla rc que significa que va a esperar hasta que haya una tecla pulsada y
que la variable tecla va a tener el
valor de la tecla pulsada (rc
significa read character, es decir,
leer carácter). (NOTA: en LOGO no hace falta declarar previamente la variable).
En
resumen, lo que tenemos es un programa que se ejecuta de manera continua, que
lee una tecla cuando se pulsa y que guarda el valor de la tecla pulsada en una
variable que se llama tecla.
Una
cuestión importante para este y para el resto de programas, es el tema de la orientación de la tortuga: inicialmente
mira hacia arriba y así debemos dejarla siempre, mirando hacia arriba
después de cada interacción, pues así garantizaremos la integridad del
funcionamiento del videojuego, lo veremos en breve con este ejemplo.
El
resto de las líneas sencillamente indica qué es lo que se espera que el
programa haga en función de las teclas pulsadas, así:
·
Si pulsamos la
tecla i, la tortuga avanza 5
unidades, es decir, dibuja una línea desde donde está hacia arriba de 5
unidades. Esto se consigue con la sentencia if
tecla = “i [fd 5], pues la primera parte es un condicional (si la variable tecla vale “i…) y la segunda lo que debe hacer en este supuesto [fd 5] que significa que avance 5
unidades. Y, además, como hemos dicho, lo hará hacia arriba. ¿Por qué? Porque
inicialmente la tortuga mira hacia arriba y vamos a garantizar (ya veremos
cómo) que después de cada pulsación así quede siempre.
·
Si pulsamos la
tecla k, la tortuga retrocede 5
unidades, lo que se traduce en que dibuja una línea desde donde está hacia
abajo 5 unidades. Esto se consigue porque al escribir [back 5], la tortuga, como está mirando hacia arriba, ir hacia
atrás es dibujar una línea hacia abajo (y como no cambiamos la dirección de la
tortuga, esta sigue mirando hacia arriba).
·
Si pulsamos la
tecla j ejecutamos 3 instrucciones:
las dos primeras son para hacer lo que queremos que haga, es decir, dibujar una
línea hacia la izquierda, y la última, la hacemos para preservar la orientación
de la tortuga inicial, es decir, que mire de nuevo hacia arriba. Esto se
traduce en el siguiente código: lt 90
(hace que la tortuga gire 90 grados a la izquierda), fd 5 (avanzamos 5 en la dirección en la que la tortuga mira, es
decir, a la izquierda) y finalmente rt 90
(para que la tortuga vuelva a mirar hacia arriba y así garantizar una
orientación correcta de la tortuga).
·
Si pulsamos la
tecla l hacemos lo mismo que con la
tecla j pero dibuja 5 unidades hacia
la derecha en lugar de hacia a la izquierda.
Una
captura con la imagen del juego: