Q'AECHO ESTO?

Bien, hoy vamos a dedicar la sección a comentar algunos cambios que han sufrido unos cuantos condactos de la versión 1.3 a la versión 2.0.

Como ya sabréis la versión 2.0 es, por fin, una versión gráfica en la que los dibujos y las letras comparten sin problemas el espacio en la pantalla del ordenador. Esto ha provocado que aparecieran algunos condactos nuevos y que otros cambiaran un poco. Veamoslos:

  1. TINTA n (K): permite poner un color dado como color actual para la impresión. El parámetro 'n' será el color a usar; así que podrá valer de 0 a 15 si se está en modo de 16 colores o de 0 a 255 en un modo de 256 colores.
  2. PAPEL n (K): semejante al anterior pero con el color del fondo de las letras.
  3. SCR n (K): permite determinar la altura a partir de la cual no se hará un scroll de pantalla. Básicamente sirve para dejar que, bien un dibujo, bien un dibujo y la descripciones de las localidades, queden fijo mientras por debajo el texto correspondiente a las acciones que ocurren van haciendo scroll. El parámetro indica la línea a partir de la cual se realizará; '0' será la menor cantidad y la mayor dependerá de la resolución de modo de pantalla escogido.
  4. MODO n (K): permite escoger entre 4 modos de pantalla diferentes: 1 de 256 colores y 3 de 16 colores.
  5. COLOR n r v a (KKKK): permite variar los componentes de rojo, verde y azul del color 'n'. Esto permite hacer variaciones rápidas de color para: Todo ello sin tener que reimprimir nada. Todo esto tiene una aplicación mucho más espectacular en el caso del modo de 256 colores.
  6. LIMPANT n (K): la variación que ha sufrido este condacto es la adición de un parámetro que indica la línea desde que debe borrarse. O sea, se borrará desde la línea 'n' hacia abajo. El LIMPANT antiguo correspondería a un LIMPANT 0.
  7. DIBUJO n c x y (KKKK): A este condacto se le han añadido nuevos valores posibles para el código de control 'c' que proporcionan nuevas funciones de presentación de gráficos.
  8. MOVXY x y (KK): ahora pueden posicionar con mucha mayor precisión pues los parámetros ya podrán estar el pixels y no en columnas y filas.

Además aparecen nuevas funciones; por una parte se le han añadido características de sonido:

  1. MUSICA t m nv (KKK): toca una música escrita en notación inglesa en un mensaje un número de veces 'nv'. Si 'nv' es cero la música se repetirá indefinidamente. Permite poner un hilo musical simple en la aventura.
  2. NOMUS: detiene la música que se esté tocando.
  3. PITA f t (KK): Permite hacer efectos sonoros a medida. Simple y llanamente hace sonar una frecuencia dada una cantidad de tiempo dado. El tiempo (parámetro 't') está dado en 'ticks' del reloj del PC; que equivale a 0.055 segundos.

Además se le ha incluido capacidades para realizar cosas mediante interrupciones, mientras el jugador teclea otras cosas o espera a que algo sucede... Las cosas a hacer estará en un BLOQUE con un número especial, que se indicará como [*]. Para manejar las interrupciones se han incluido dos condactos nuevos:

  1. ACTI: activa las interrupciones y el BLOQUE [*] se activará cada poco. Exactamente se activará según el valor de la bandera cardinal 59. El valor de la bandera 59 está de nuevo en 'ticks' de reloj, o sea si queremos que el BLOQUE de interrupciones se ejecute cada 'n' segundos el valor a poner en la bandera 59 sería:
                        n x 18.2
    		    
  2. DACTI: desactiva la ejecución del BLOQUE [*].

El CAECHO? al comenzar a ejecutar tiene las interrupciones desactivadas.

Otros cambios del nuevo sistema son:

  1. Se han incluido dos secciones nuevas '\GRA' y '\CAR' que son casi identicas en su función a la antigua '\FIC'; excepto que se supondrá que lo que se encuentre en '\GRA' serán gráficos con extensión '.PCX' y lo que esté en '\CAR' serán fuentes de caracteres con extensión '.FNT' y el sistema hará lo posible por tenerlos en memoria de tal forma que se acelere al máximo la presentación en pantalla.
  2. Al no encontrarnos en pantalla de texto, ya el sistema no recurre al juego de caracteres de ROM como juego por defecto. Así que siempre se deberá cargar un juego de caracteres inicialmente, con un condacto 'CAR'. Así ahora 'CAR 0' no llevará a poner el juego estándar de su pantalla sino que cargará el juego de caracteres de '\CAR \0...'.

Vamos a aprovechar lo comentado y vamos a reescribir un viejo ejemplo en el formato de CAECHO? 2.0.

\VOC
    Rojo 5 Verbo;
    Verde 6 Verbo;
    Azul 7 Verbo;
    Marrón 8 Verbo;
    FIN 9 Verbo;
    y 5 conjuncion;

\MEN 0
    \0 ""\zrRojo.\zl""
    \1 ""\zvVerde.\zl""
    \2 ""\zzAzul.\zl""
    \3 ""\zmMarrón.\zl""
    \4 ""\zfbr\zblNO TE ENTIENDO.\zfn\zl""
    \5 ""\zlTeclea: \zrRojo\zl,\zvVerde\zl,\zzAzul\zl,\zmMarrón\zl o FIN:\n >>""

\BLO
    BLOQUE [0] Colores()
    {
    CAR 0;
    COPI 0 47;      /: Tabla donde está el Prompt :/
    COPI 5 48;      /: Mensaje del Prompt :/
    MIENTRAS (IGQ 0 [0])    /: Un bucle infinito :/
        {
        PREG 0;
        ANALIZA 0 1;
        HAZ [10]        /: Toma el verbo de la frase tecleada :/
            {
            Rojo:{MENSAJE 0 0;}
            Verde:{MENSAJE 0 1;}
            Azul:{MENSAJE 0 2;}
            Marrón:{MENSAJE 0 3;}
            FIN:{FIN;}
            SINO {MENSAJE 0 4;}
            }
        ALEAT 4 1;
        CAR [1];
        }
    }


\CAR
    \0 ""gruesa""
    \1 ""apache""
    \2 ""spacial1""
    \3 ""doble""
    

Córrelo y mete una entrada larga del estilo a:

            Verde y rojo. Rojo y verde, azul y marron, verde...
	    

¿Qué ocurre? En este ejemplo vemos la posibilidad de introducir más de un tipo de letra diferente en la misma pantalla. Esto puede permitir poner gráficos mediante letras y trucos semajantes.

Veamos otro viejo ejemplo reconstruido para mostrar el poder de las interrupciones. Cogeremos el ejemplo 'CALIENTE' y le meteremos corazones de color rojo que aparezcan por ahí mientras tecleas. Además lo haremos en versión de 256 colores, de tal forma que el color rojo del corazón 'palpite'.

\MEN 1
    \0 ""Hace mucho, mucho tiempo ""
    \1 "" y ""
    \2 "" no se conocían. Pero un día, cuando el sol estaba oculto tras el
horizonte, ""
    \3 "" se vieron, y sin perder tiempo se quitaron las \zbrCENSURED\zl y
hicieron el \zbrCENSURED\zl más de 5 veces.\n""
    \4 ""Tu nombre: ""
    \5 ""Otro nombre: ""

\BLO
    BLOQUE [0] Caliente()
    {
    /: Iniciamos de forma diferente :/
    CAR 0;              /: Carga el juego de caracteres :/
    MODO 1;             /: 256 colores :/
    COPI 1 59;          /: 20 corazones por segundo. 1/0.055=20 :/
    COLOR 100 60 0 0;   /: Hacemos el color 100 un rojo intenso :/
    COPI 60 1;          /: Guardamos el nivel en la bandera 1 :/
    S 200;              /: 'TRUE'-> Decreciente; 'FALSE'-> Creciente :/
    ACTI;               /: Activa interrupciones :/
    TINTA 15;

    /: Antiguo código :/
    COPI 1 47;        
    COPI 4 48;        
    PREG 0;        
    COPI 5 48;        
    PREG 1;        
    MEN 1 0;        
    ESCBUF 0;        
    MEN 1 1;        
    ESCBUF 1;        
    MEN 1 2;        
    ESCBUF 0;        
    MEN 1 1;        
    ESCBUF 1;        
    MEN 1 3;    

    TECLA 1 2;      /: Espera a que pulse una tecla :/
    }

    BLOQUE [*] Corazon()
    {
    PUSH 3;        
    PUSH 4;        
    PUSH 5;        
    PUSH 6;        
    RECXY 5 6;      /: Guardo la posición anterior :/
    ALEAT 300 3;    /: Un valor cualquiera de 'x' :/
    ALEAT 150 4;    /: Idem para 'y' :/
    MOVXY [3] [4];  /: Lo ponemos ahí :/
    TINTA 100;      /: Color rojo :/
    ESCCAR 3;       /: Ponemos un corazón :/

    /: Variamos el color :/
    COLOR 100 [1] 0 0;
    (V 200)
        { /: Decrecienta :/
        DEC 10 1;
        (IGQ 1 0) {/: Cambia el sentido :/ R 200;}
        }
    SINO
        { /: Incrementa :/
        INC 10 1;
        (IGQ 1 60) {/: Cambia el sentido :/ S 200;}
        }

    MOVXY [5] [6];  /: Recuperar la posición anterior :/
    TINTA 15;       /: Color blanco :/

    POP 6;
    POP 5;
    POP 4;
    POP 3;
    }

\CAR
    \0 ""gruesa""
    

Bueno, nada más por ahora. Hasta la próxima sección.

Melitón Rodríguez, el de la 117