003:iniciacion

Microhobby 3. Año I, del 26 de noviembre al 03 de diciembre de 1984

Continuando con la serie de artículos dedicados al color en el Spectrum, aprenderemos en esta ocasión, entre otras cosas a dibujar en color, a usar otros comandos y a utilizar nuevos códigos que afectan igualmente al color.

En el artículo anterior decíamos que el Spectrum utiliza ocho códigos de color, que están comprendidos entre el 0 y el 7. Pues nuestro ordenador es tan peculiar en este sentido que también permite usar las teclas en las que se encuentran los números 8 y 9.

El número 8 puede utilizarse a pesar de no ser un código de color. Acompañando a 'INK' y 'PAPER' tiene un significado de transparencia, ya que hace que el anterior atributo se transparente. Puede utilizarse también con 'BRIGHT' y 'FLASH'.

El número 9 es el más importante. Se utiliza con 'PAPER' e 'INK' y tiene la misión de contrastar de forma automática el papel y la tinta, de modo que, si introducimos un color de papel claro, nos dará uno de tinta oscuro, y viceversa si el papel es oscuro. Recordemos que los oscuros son el negro, azul, rojo y magenta, y los claros el verde, cyan, amarillo y blanco. Copie el siguiente programa y verá cómo actúa:

5 PAPER 0: CLS
10 INK 9: FOR I=0 TO 7: READ A$: PRINT PAPER I; A$: NEXT I
20 DATA "NEGRO", "AZUL", "ROJO", "MAGENTA", "VERDE", "CYAN", "AMARILLO", "BLANCO"

Si cambiamos en la línea 10 el 'INK 9' por 'PAPER 9' y 'PAPER 9' por 'INK 9', observaremos también el efecto. Este es un método muy interesante a la hora de diseñar nuestros propios programas, ya que nos ayuda siempre a elegir los colores correctos en cada caso.

Estos dos comandos afectan también al color, aunque de una forma diferente, ya que generalmente no se utilizan para cambiar el color, sino para modificar el estado del mismo. Este estado sólo puede tener dos posiciones: 0 cuando está desactivado, y 1 cuando está activado.

Para obtener el comando 'BRIGHT', tendremos que colocar el cursor en el 'modo E' y seguidamente presionar 'B' a la vez que el 'SYMBOL SHIFT'. Con este comando podemos hacer que un color tenga más brillo, si tecleamos '10 PRINT BRIGHT 1'; veremos cómo la palabra “Ejemplo” se encuentra enmarcada en una especie de rectángulo brillante de color blanco. Si a continuación introducimos la línea:

10 PRINT BRIGHT 1; PAPER 3; "Ejemplo"

y seguidamente

20 PRINT PAPER 3; "Ejemplo"

Podremos observar cómo la línea de arriba es más clara que la de abajo, ya que esta última no iba acompañada del comando 'BRIGHT', y por tanto conserva su color normal.

Podemos ampliar aún más esto si delante de la línea 10 introducimos '5 PAPER 3: CLS' y borramos la línea 20. Veremos cómo a pesar de ser toda la pantalla verde, el verde con brillo de la palabra “Ejemplo” sigue destacando del resto. Esto va a ser importante a la hora de programar porque nos va a permtir diferenciar zonas de pantalla del resto de la imagen, del mismo NODO que si utilizáramos uno de esos rotuladores que sirven para hacer destacar las zonas de texto que nos interesan.

El comando 'FLASH' se obtiene del mismo modo que 'BRIGHT', pulsando al final la tecla 'V'. Como en el caso anterior, también tiene que ir seguido de un 0 ó de un 1, según esté activada o no. Su efecto es el de un parpadeo constante, que cambia alternativamente el color de la tinta y del papel. Escriba a continuación:

10 PRINT PAPER 6; INK 2; FLASH 1; "Flash"

Este comando es utilizado normalmente en la mayoría de los juegos, sobre todo para destacar puntuaciones. También se usa muy a menudo en la confección de menús, para saber qué parte de éstos se encuentra activada. Veamos un ejemplo:

5 BORDER 1: PAPER 1: INK 7: CLS
10 LET X=1
20 FOR I=1 TO 3
30 READ A$: IF I=X THEN PRINT FLASH 1; A$: GO TO 50
40 PRINT A$
50 NEXT I
60 RESTORE: PRINT AT 12,0; "PULSE UNA OPCION"
70 INPUT X
80 DATA "1. PRIMERO", "2. SEGUNDO", "3. TERCERO"
90 CLS: GO TO 20

También se pueden conseguir efectos bastante curiosos que podremos incluir en algunos de nuestros programas, como en el caso de los que se muestra a continuación:

10 FLASH 1: PRINT AT 4,4; "--- HOLA ---": FLASH 0
20 FLASH 1: PRINT AT 8,8: "--- HOLA ---": FLASH 0
30 FLASH 1: PRINT AT 12,12; "--- HOLA ---": FLASH 0
40 FLASH 1: PRINT AT 16,16; "--- HOLA ---": FLASH 0

Las posibilidades en este sentido son innumerables. Basta con combinar diferentes modos gráficos, signos y cualquier otra cosa que encontremos en el teclado, siempre teniendo en cuenta que tenemos que combinarlos con los gráficos que incorpora el Spectrum (los situados en la primera fila del teclado).

Como su propio nombre indica, lo que vamos a conseguir con esta construcción es un modo inverso, es decir, nos va a invertir los atributos de color de la tinta y el papel. Se obtiene, igual que las anteriores, accionando al final la tecla 'M'. Para ver cómo actúa, escriba lo siguiente sin poner el número de línea:

INVERSE 1 : INK 7 : PAPER 0 : CLS

Si pulsa 'ENTER', verá cómo el rectángulo central se ha vuelto negro. Ahora introduzca esta línea:

10 PRINT "A"

y ejecute el programa.

La letra 'A' tendría que aparecer normalmente en blanco sobre fondo negro, sin embargo ocurre al contrario, ya que la instrucción 'INVERSE' ha invertido los colores de la tinta y el papel. También habrá observado que ocurría lo mismo al introducir la línea 10, la cual aparecía en la línea superior con los colores cambiados. Pruebe con otros colores y verá los efectos que causa en cada caso. El cambio también puede realizarse localmente, es decir, dentro de una línea de programa.

10 PRINT INVERSE 1; INK 1; PAPER 6; "Inverse"

Como imagino, ya todos saben que con nuestro Spectrum podemos colocar un punto de alta resolución (256 x 176) en la pantalla mediante la sentencia 'PLOT'. Y como es lógico, algunos habrán pensado que con la misma facilidad pueden colorear dicho punto mediante la sentencia 'INK'. Veámoslo.

20 FOR I=0 TO 256 STEP 2
30 FOR S=0 TO 175
40 LET X=RND*7
50 PLOT INK X; I,S
60 NEXT S
70 NEXT I
80 GO TO 10

Con un poco de paciencia, observamos cómo poco a poco la pantalla se va llenando de puntos (pixels) coloreados. Esto nos demuestra que nuestro ordenador es capaz de trazar puntos colorados con 'PLOT' y, cómo no, líneas, utilizando 'DRAW':

10 FOR I=1 TO 100
20 LET X=RND*255: LET Y=RND*175
25 LET B=RND*7
30 DRAW INK B; X, Y
35 PLOT 0,0
40 NEXT I

Sin embargo, ocurriría algo muy diferente si lo que tratáramos de pintar fuera el papel sobre el que se traza la línea:

10 DRAW PAPER 2; 100, 100

Podemos ver cómo, si bien antes las líneas se dibujaban en alta resolución, en esta ocasión el color del papel no llena un pixel, como podíamos esperar, sino todo un cuadrado correspondiente a un carácter (recordemos que el Spectrum tiene 22 x 32 caracteres). Por tanto, nuestro ordenador no está preparado para alta resolución en color. Si en el ejemplo anterior sustituyéramos en la línea 30 el comando 'INK' por 'PAPER', apreciaríamos mucho mejor lo que estamos diciendo.

Resumiendo, en este segundo capítulo, dedicado al color en el Spectrum, hemos adquirido todos aquellos conocimientos elementales para aprender a utilizarlo. Conocemos hasta el momento todas las instrucciones que afectan a éste y sabemos de qué forma y en qué momento tenemos que utilizarlas. También hemos visto algunos ejemplos que, aunque bastante simples, son suficientemente explicativos de cada tema, si bien, como es lógico, en un futuro trataremos de ampliar mucho más éstos.

En el próximo capítulo hablaremos de cómo utilizar los caracteres de control mediante 'CHR$'. Hablaremos también de la función 'SCREEN$', del fichero de atributos, del modo de cambiar el color directamente mediante 'POKE', y de algunas cosas más.

Gabriel Nieto

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