005:trucos

Microhobby 5. Año I, del 04 al 10 de diciembre de 1984

trucos.jpg

Cada vez que decidimos adornar uno de nuestros programas con textos explicativos o instrucciones de uso, nos encontramos con el mismo problema: resulta excesivamente escueto y no aclara nada o es tan largo que su presentación en pantalla nos estropea parte de la zona que habíamos destinado a los gráficos, etc.

Además de todo esto, cada vez que se imprime un texto, es obligado borrarlo una vez transcurrido un tiempo prudencial para su lectura.

La solución adoptada en este caso es bastante simple y mejora notablemente la estética del rótulo. Consiste en una presentación en «ventana». Es decir, no muestra todo el texto a la vez, sino sucesivamente.

Se trata de unas cuantas instrucciones que han sido pensadas para incorporarse como subrutina dentro de su propio programa, en cuyo caso es necesario hacer un simple cambio: sustituir 'A$' por el texto adecuado en cada caso, y añadir al final un 'RETURN'.

Todas las variables de la línea 20 pueden ser modificadas para adaptarse a sus propias necesidades. La «x» y la «y» indican las coordenadas del inicio del texto, mientras que la «z» marca la longitud de la «ventana» de presentación del mismo.

Por último, la 'PAUSE' de la línea 90 puede ser modificada para acelerar o retardar el efecto.

0 LET A$="Prueba para ver como funciona esta rutina"
20 LET X=12: LET Y=8: LET Z=12
30 DIM B$ (25)
40 LET A$=B$+A$
50 FOR N=1 TO LEN A$
60 LET A$=A$ (2 TO ) + CHR$ 32
70 PRINT AT X,Y; INK 7; PAPER 3; A$ (z TO 22)
80 BEEP .01,20
90 PAUSE 5
100 NEXT N

Bastante similar al truco anterior, éste nos permite imprimir textos verticales en cualquier posición de la pantalla, con la única limitación de no tener más de 20 caracteres de longitud (de lo contrario, aparecería el mensaje «out of screen»).

También puede usarse como subrutina añadiendo un 'RETURN' al final y sustituyendo 'A$' por el texto pertinente. Las variables «x» y «y» marcan las coordenadas de origen.

Se ha previsto también una pequeña rutina de borrado a la que se tiene acceso pulsando cualquier tecla, una vez impreso el texto. Si se incorpora como subrutina, ha de sustituirse la línea 120 por un 'PAUSE' que marque el intervalo entre la impresión del texto y su correspondiente borrado.

10 LET A$="* Scroll * Vertical *"
20 LET X=0: LET y=0
30 FOR N=1 TO LEN A$
40 BEEP .01,20
50 PAUSE 5
60 FOR N=1 TO 21
70 PRINT AT X+N, Y; INK 7; PAPER 3; A$(N)
80 BEEP .01, N*2
90 PAUSE 5
100 NEXT N
120 PRINT #1;" PULSE CUALQUIER TECLA": PAUSE 0
130 FOR N=1 TO 21
140 PRINT AT X+N, Y; PAPER 7; CHR$ 32
150 BEEP .01, 40-N*2
160 NEXT N

Es muy corriente que en un programa de los denominados interactivos, sea necesario mantener un diálogo con el usuario y controlar la validez de su respuesta.

Una vez más, existen muchos métodos de llevar esto a cabo y muchos tipos de «respuestas». Nosotros nos centraremos en el caso en el que se exija que la letra o letras de la respuesta sea mayúscula o minúscula.

Existe una variable del sistema que controla el modo del cursor, situada en la dirección 23658 decimal.

Esta posición de memoria almacena 0 para cursor en modo «L» (minúsculas) y 8 en modo «C» (mayúsculas); así que bastará colocar en el lugar adecuado 'POKE 23658, 0' o 'POKE 23658, 8' para ahorrarnos sentencias del tipo: 'IF INKEY$ = “N” OR INKEY$ = “n” THEN…'

Cuando tenemos que teclear un programa muy largo, o introducir una enorme y tediosa serie de 'DATAS', o borrar largas líneas, puede resultarnos de utilidad controlar la velocidad de autorrepetición de las teclas.

Para ello (¡cómo no!), existen dos variables del sistema, 'REPDEL' y 'REPPER', que gobiernan el tiempo que debe transcurrir para que la tecla se repita y el intervalo entre sucesivas repeticiones respectivamente.

Los valores iniciales son 'REPDEL' 35, 'REPPER' 5.

Estas variables se encuentran localizadas en las posiciones 23651 y 23652. Con 'POKE 23651 (2), valor' puede controlarse perfectamente la velocidad de las teclas, por ejemplo: 'POKE 23652,255' lo hará lentísimo.

  • 005/trucos.txt
  • Última modificación: d/m/Y H:i
  • por 127.0.0.1