AnteriorPosterior

13. Más control de la pantalla en modo texto

Por: Nacho Cabanes
Actualizado: 19-04-2019 22:39
Tiempo de lectura estimado: 7 min.

 

BASIC

13. Más control de la pantalla en modo texto

En la gran mayoría de las versiones de lenguaje BASIC, podremos borrar la pantalla y escribir texto en distintas posiciones de la pantalla y en distintos colores. Vamos a ver las formas más habituales para conseguirlo...

La orden para borrar la pantalla es CLS, y se trata de una orden que casi todas las versiones de BASIC incorporan:

CLS

(Nota: esta orden no existe en el BASIC de los Commodore 64, pero se puede sustituir por "PRINT CHR$(147)").

La orden para escribir en una cierta posición de la pantalla (en "modo texto") no es estándar: cada versión de BASIC tiene la suya propia. Por ejemplo en QBasic se emplea la orden LOCATE fila, columna, así:

10 LOCATE 10, 20 
20 PRINT "hola"

(Fuente "1301.bas". Probado en GwBasic 2.02, QBasic 1.1, Locomotive Basic de Amstrad CPC, Msx Basic 2.1)

En el BASIC de los Amstrad CPC y en el de los MSX, el programa anterior es perfectamente válido, pero el primer parámetro indicar la columna y el segundo la fila, al contrario que en GwBasic y QBasic.

Otros intérpretes de BASIC pueden emplear otras órdenes, como PRINT AT, PRINT CSR, PRINT @, etc., o puede que escriban la columna antes de la fila.

En el caso de QBasic, además tenemos dos funciones que nos dicen en qué fila de la pantalla está el cursor (CSRLIN) y en que columna (POS(0)), así:

1 REM Pantalla de texto con GwBasic y QBasic
5 CLS
10 LOCATE 10, 30
20 PRINT "hola";
30 fila = CSRLIN
40 columna = POS(0)
50 LOCATE 12, 1
60 PRINT "El cursor estaba en "; fila; ","; columna

(Fuente "1302.bas". Probado en GwBasic 2.02, QBasic 1.1, Msx Basic 2.1)

Locate, QBasic

El resultado de este programa, en QBasic, sería:

Locate, QBasic (resultado)

(Nota: Entre el paréntesis que sigue a POS se podría incluir cualquier expresión, que se va a ignorar, pero por simplicidad era frecuente escribir un cero, como en este ejemplo).

La orden para cambiar el color de texto en QBasic es COLOR pluma, fondo. A partir de esta orden, se comenzará a escribir en los colores que hayamos indicado, y seguirá así hasta que usemos otra orden COLOR distinta. Para escribir la palabra Hola en letras amarillas y con fondo azul, usaríamos:

10 COLOR 14,1 
20 PRINT "hola"

(Fuente "1303.bas". Probado en GwBasic 2.02, QBasic 1.1, Msx Basic 2.1)

Los colores de texto ("pluma") en QBasic y GwBasic trabajando con un ordenador PC serían los siguientes:

0 Negro  
1 Azul  
2 Verde  
3 Azul-verdoso  
4 Rojo  
5 Magenta  
6 Marrón  
7 Blanco (gris claro)

8 Gris (oscuro)  
9 Azul claro  
10 Verde claro  
11 Azul-verdoso claro  
12 Rojo claro  
13 Magenta claro  
14 Amarillo  
15 Blanco de alta intensidad

De modo que podríamos probar estos colores, si los recorremos con un "for":

1 REM Colores con GwBasic y QBasic
10 CLS
20 FOR i = 1 TO 15
30   COLOR i
40   LOCATE i, 10
50   PRINT "hola";
60 NEXT

(Fuente "1304.bas". Probado en GwBasic 2.02, QBasic 1.1)

Colores, QBasic

En "condiciones normales" (se puede evitar, pero no entraremos en tanto detalle), en un ordenador PC con pantalla a color, los colores 0 a 7 son los que se pueden utilizar como fondo. Si escribimos un color de fondo con un valor entre 8 y 15, se usará el correspondiente entre 0 y 7. Por ejemplo:

10 COLOR 9,14 
20 PRINT "hola"

(Fuente "1305.bas". Probado en GwBasic 2.02, QBasic 1.1)

Será equivalente a escribir COLOR 9, 6, es decir, que el color de primer plano sí que será azul claro, pero el fondo no será amarillo, sino marrón.

En cada versión de BASIC cambiarán los detalles concretos de cómo cambiar posiciones y colores en pantalla. Por ejemplo, los ordenadores Amstrad CPC permiten 2 colores en el modo de pantalla de 80 columnas ("mode 2"), 4 colores en el modo de 40 columnas ("mode 1") o 16 colores en el modo de 20 columnas ("mode 0"). Permiten colocarnos en cualquier posición de pantalla con LOCATE (pero se indica en primer lugar la columna y después la fila, al contrario que en QBasic), cambiar el color de escritura con

PEN

y el de fondo con PAPER, así como la asignación de colores (de entra una paleta de 27 colores posibles con INK):

1 REM Colores con Amstrad CPC
10 MODE 0
20 FOR i = 1 TO 15
30   PEN i
40   LOCATE 10, i
50   PRINT "hola";
60 NEXT

(Fuente "1306.bas". Probado en Locomotive Basic de Amstrad CPC)

Colores en BASIC de CPC

Algunos BASIC modernos se centran en el modo gráfico y no tienen órdenes avanzadas para trabajar en modo texto. Es el caso de Basic256, por ejemplo, que incorpora CLS y PRINT, pero no permite escribir en distintas coordenadas de la pantalla de texto ni con distintos colores.

Ejercicio propuesto 13.1: Escribe el texto "Hola" en el centro de la pantalla, en color amarillo.

Ejercicio propuesto 13.2: Borra la pantalla con color rojo (oscuro) y escribe "Prueba" con letras blancas al principio de la línea 20 de pantalla.

6980 visitas desde el 19-04-2019

AnteriorPosterior