50
CLG 2:GRAPHICS PAPER
60
200,200,3
DRAW
70
MOVE 2,0:FILL
3
80
ORIGIN
440,0,440,640,0,400
90
GRAPHICS PEN ,1:MASK
100
FOR
y=60
TO
318
110
GOSUB
220
120
FRAME:FRAME
130
GOSUB
220
140
NEXT
150
TAG
160
FOR
y=60
TO
318
170
MOVE 96,y:PRINT
180
FRAME:FRAME
190
MOVE 96,y:PRINT
200
NEXT
210
END
220
MOVE
90,y,1
230
DRAWR
20,0,,1
240
DRAWR
0,20
250
DRAWR
-20,0
260
DRAWR
0,-20
270
RETURN
run
Animación
Se puede dar ilusión de movimiento cambiando adecuadamente los colores asignados a las tintas.
Aunque el contenido de la memoria de la pantalla no se modifica, los dibujos parecen moverse.
Se da un ejemplo de este método en el programa de demostración que se suministra con el
disco maestro del sistema (RUN"disc"). Sin embargo, el simple cambio de colores de ese
ejemplo no es suficiente cuando las formas móviles tienen que solaparse. En el siguiente ejemplo
recurrimos al modo OR para escribir los números 1 al 4 en la pantalla. (La forma se determina
examinando el carácter que está en el extremo inferior izquierdo de la pantalla y ampliando lo
que allí se encuentra.) Los números se escriben sucesivamente con las tintas 1, 2, 4 y 8 y con el
modo OR activado (en este caso mediante una sucesión de códigos de control, línea 50).
El bucle que empieza en la línea 160 realiza una rotación de los colores de la paleta mediante
una fórmula matemática que hace que se ilumine un número cada vez. Las tintas se establecen
inspeccionándolas sucesivamente y determinando si contienen el componente binario que
estamos buscando. Por ejemplo, el 3 fue dibujado con tinta 4; por lo tanto, para visualizar el
número 3 debemos dar un color visible a todas las tintas cuyo número contenga un 4 binario.
Esas tintas son:
4(0100), 5(0101), 6(0110), 7(0111), 12(1100), 13(1101), 14(1110), 15(1111)
En una aplicación práctica se calcularía qué tintas se deberían cambiar en cada etapa, y las líneas
180 a 200 se sustituirían por una rutina más rápida.
10
REM animacion con tintas
20
ON BREAK GOSUB
30
FOR
i=1
TO 15:INK i,26:NEXT
40 m(1)=1:m(2)=2:m(3)=4:m(4)=8
50
MODE 0:PRINT CHR$(23);CHR$(3);:TAG
60
FOR
p=1
TO
4
0
,0
STEP
2
STEP
2
CHR$(224);
CHR$(224);
220
Manual de Amstrad CPC 6128 (revisión 2008) - Página 362