|
|
|||||||||
| El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España para ofrecer los artículos de la revista Amiga World España. |
| ANIMACION DEL PUNTERO | ![]() |
|
Este puntero animado habrá hecho pensar, probablemente a más de uno, que esto sólo se podría conseguir mediante un sofisticado programa. En este artículo se mostrará cómo conseguirlo en uno de los lenguajes más fáciles y populares: el AMIGABASIC. Seguramente ya sabrán que su principal función es la de "apuntar" a los diferentes iconos, Gadgets, elementos de trabajo, etc.; sin embargo mediante la animación se conseguirá un uso más elegante del mismo. Para empezar decir que dicho puntero no está limitado a tener siempre la misma imagen, pues con un programa PREFERENCES se pueden cambiar este y otros parámetros diferentes como pueden ser el modo gráfico, opciones para impresora, etc. Centrándonos en el Preferences y más concretamente en su opción EDIT POINTER, comprobarán que cambiar la imagen del puntero no es tan difícil, ya que sólo deberán limitarse a crear una nueva imagen con las diferentes ayudas del editor. Una vez se ha creado la nueva imagen, se dispone de tres opciones: Cancelar, Usar y por último Salvar. Si se elige esta última opción, los diferentes valores de la imagen creada, junto con otros parámetros serán grabados en el fichero SYSTEM-CONFIGURATION (del directorio DEVS). Pero... ¿por qué me cuenta todo esto? Muy sencillo: la base de cualquier animación, es en realidad el resultado de representar diversas imágenes en una determinada secuencia y a una determinada velocidad; con lo cual se conseguirá dar una cierta sensación de movimiento. Como les he explicado anteriormente habrán comprobado que es posible cambiar dicha imagen en un fichero. Así se deduce que es posible animar dicho objeto con la creación de diferentes secuencias.
|
||||||||||||||||||||||||||||||||
| Si se desea adquirir mayor velocidad de animación, se recomienda compilar el programa con cualquiera de los compiladores existentes. |
Una vez conocida la principal estructura del Puntero, es imprescindible conocer en qué porción de memoria se encuentran almacenados los datos del mismo; pues bien a continuación podrán encontrar dichos valores, los cuales dependen directamente de la memoria que posea su ordenador. A continuación podrán encontrar las direcciones de los principales modelos (o modelos con ampliaciones):
| Modelo |
Dir. inicial |
Dir. final |
|---|---|---|
Amiga 512k |
20212 |
20275 |
Amiga 1Mega |
3204 |
3267 |
Amiga 2Megas |
9956 |
10019 |
Conociendo dichos datos será posible cambiar la imagen del puntero fuera de cualquier editor. Pruebe a introducir la siguiente línea desde el AmigaBasic:
FOR T=DIR.INICIAL TO DIR.FINAL: POKE T,INT(RND(1)*255):NEXT
Podrá comprobar cómo la imagen del puntero cambia, de la que tenía a la resultante de 63 valores aleatorios. No es una imagen muy bonita, pero sí es el principio de la animación.
A continuación introduzca las siguientes líneas Basic:
Lazo: FOR T=DIR.INICIAL TO DIR.FINAL POKE T,INT (RND(1)*255: NEXT GOTO Lazo |
El resultado de este programa será su primera animación del puntero, aunque ésta se limite a una cantidad de puntos en movimiento. Habrán observado que sí es posible animar el puntero desde el Basic, pero se presentan unos cuantos inconvenientes:
Estos problemas, así como otros derivados de la animación, son resueltos con la utilización de los programas, escritos en AmigaBasic que se incluyen en este artículo:
HUNTPOINTER: "Caza" la imagen del puntero actual permitiendo su almacenamiento para un posterior uso.
PROGANIM: Completo programa de animación con el puntero.
| Para salir de la ventana de ERROR, en cualquiera de los programas, será necesario pulsar el botón izquierdo del ratón. |
Gracias a la posibilidad multitarea del Amiga, es posible tener en ejecución, al mismo tiempo, programas escritos en diferentes lenguajes. Este es el principal motivo por el que se escribió este programa, ya que uno de los "problemas" es conseguir imagenes para la animación.
La presentación del programa, así como la elección de las diferentes opciones, se realiza a través de una ventana situada en la parte superior izquierda de la pantalla WorkBench.
El posicionamiento de dicha ventana, así como su tamaño, permite manejar libremente el ratón a través de otros iconos o programas que se encuentran en la pantalla WorkBench (más adelante sabrán su utilidad).
Las diferentes opciones que presenta dichos programas son las siguientes:
- Elección de memoria con la que se va a trabajar.
- Salir del programa 'ESC'
- Cazar la imagen. 'F1'
Con la primera de las opciones se deberá introducir el valor correspondiente a la cantidad de memoria que posea su Amiga. A partir de este punto el programa se limitará a un bucle continuo en el que se representarán únicamente las dos opciones restantes.
La opción "Salir del programa" es evidente, pues al elegir ésta (presionando la tecla ESC) se cierra la ventana del programa; pudiendo ejecutarlo de nuevo con la opción Run de la Barra del menú.
Con la opción "Cazar imagen", el programa pedirá el nombre del fichero en el cual se almacenarán los datos (relativos a la imagen del mismo) que contiene en ese momento el puntero; a continuación se procederá a salvar los mismos.
Anteriormente se describía la posición que ocupa la ventana en la pantalla Workbench, pues bien se utilidad es la siguiente.
Para poder crear las imágenes (con EDITPOINTER), y posteriormente salvarlas, serán necesarios los siguientes pasos:
Este programa también resulta útil si se desea "cazar" la imagen de los punteros correspondientes a otros programas.
| Todos los ficheros, tanto de lectura como escritura, se leerán/escribirán desde el drive df0:. Sin embargo el cambio de DRIVE o directorio se podrá modificar fácilmente. |
ProgAnim es un completo programa para la animación del puntero cuyo manejo es muy sencillo. Todas las funciones así como mensajes al usuario se realizarán a través de la ventana principal, así como de la ventana de error.
Este programa mostrará las opciones en el siguiente orden:
Una vez se está produciendo la animación se tendrá acceso a dos opciones más:
En este apartado se describirán las opciones anteriormente señaladas.
5.I.b Esta opción sirve para salvar a disco una animación completa, para ello debe pulsarse la tecla 'F1'. Posteriormente se podrán diferenciar las secuencias de las animaciones debido a que estas últimas se les añade el sufijo ".ANIM".
I.b Si se desea salir de la animación se deberá pulsar la tecla 'ESC', recuperando el puntero la imagen inicial antes de ser animado (ésta se había salvado en una matriz;variable BUFFER). Asimismo se cerrará, por completo, la ventana del programa.
Para finalizar decirles que los programas presentados son de fácil acomodación para sus propias necesidades.
' ' ANIMACION DE PUNTERO ' ' (C) 1990 AMIGA WORLD ' ' POR: F. JAVIER RODRiGUEZ CLEAR 25000 WINDOW CLOSE 1 WINDOW 1,"ANIMACION PUNTERO",(0,0)-(360,80),28,-1 WINDOW OUTPUT 1 CHDIR "DF0:" MENU OFF ' ES ACONSEJABLE INTRODUCIR ' ESTA LiNEA EN LTIMO LUGAR ' ' BBASE(1)= 20212 BBASE(2)= 3204 BBASE(3)= 9956 DIM BYTESANIM (640) DIM BUFFER (64) DIM NOM$ (10) ON ERROR GOTO TRATERR MEMORIA: CLS :PRINT PRINT "CANTIDAD DE MEMORIA DE SU ORDENADOR" PRINT :PRINT "1- 512K" PRINT "2- 1 MEGA" PRINT "3- 2 MEGAS" :PRINT LINE INPUT "INTRODUZCA OPCIoN ";MEM$ IF VAL(MEM$) <1 OR VAL(MEM$)>3 THEN MEMORIA MEM = BBASE (VAL(MEM$)) ' ' AHORA SALVA EN BUFFER ACTUAL IMaGEN DEL PUNTERO ' FOR T=MEM TO MEM+64:BUFFER (T-MEM)=PEEK (T) NEXT T WINDOW 1,"PROGANIM",(0,0)-(360,40),0,-1 CLS:PRINT LINE INPUT"?ES UNA ANIMACIoN? (S/N) ";R$ IF R$="S" OR R$="s" THEN GOSUB CARGANIM:GOTO RETARDO NUMFICHE: CLS:PRINT LINE INPUT "CANTIDAD DE FICHEROS PARA ANIMACIoN ";FICHE$ IF VAL(FICHE$)<=0 THEN NUMFICHE IF VAL(FICHE$)>10 THEN PRINT:PRINT "MaXIMO DISPONIBLE 10 FICHEROS":GOSUB RATON:GOTO NUMFICHE FICHE= VAL (FICHE$) TOTALBYTES = FICHE*64 ' ' AHORA SALVA EN BUFFER ACTUAL IMaGEN DEL PUNTERO ' FOR T=MEM TO MEM+64:BUFFER (T-MEM)=PEEK (T) NEXT T ' ' ' AQUi SE INTRODUCE EL NOMBRE DE LOS FICHEROS ' FOR T=1 TO FICHE CLS PRINT:PRINT "NOMBRE FICHERO -";T NEXT LONJ=0 WHILE FICHE >0 OPEN NOM$(FICHE) FOR INPUT AS 1 FICHE=FICHE-1 FOR T=0 TO 63 BYTESAMO(LONJ)=ASC((INPUT$(1,#1))) LONJ=LONJ+1 NEXT CLOSE 1 WEND RETARDO: CLS ' ' AQUI PIDE RETARDO EN SEGUNDOS ' PRINT LINE INPUT "RETARDO DE LA ANIMACIoN EN SEGUNDOS ";S$ SEG=1500*VAL(S$) WINDOW 1,"PROGANIM",(0,0)-(120,0),0,-1 ANIM: FOR T=0 TO 63 POKE MEM+T,BYTESANIM(OFFSET+T) NEXT FOR T=0 TO SEG:NEXT OFFSET=OFFSET+64 IF OFFSET>=TOTALBYTES THEN OFFSET=0 A$=INKEY$ IF A$=CHR$(27) THEN SALANIM IF A$="ü" THEN GOSUB SALVANIM GOTO ANIM ' RUTINA PARA TRATAR ERRORES ' TRATERR: WINDOW 2,"ERROR!!!",(30,0)-(260,60),0 NERR= ERR PRINT:PRINT "SE HA PRODUCIDO UN ERROR DE" PRINT "CARGA, REVISE LOS DATOS" CLOSE 1 GOSUB RATON WINDOW CLOSE 2 RESUME NUMFICHE RATON: WHILE MOUSE(0)<>1 WEND RETURN SALANIM: FOR T=0 TO 63 POKE MEM+T,BUFFER(T) NEXT T WINDOW CLOSE 1 END SALVANIM: WINDOW 2,"SALVAR ANIMACION",(20,20)-(260,40),0,-1 PRINT:LINE INPUT "NOMBRE FICHERO ";NO$ NO$=NO$+".ANIM" OPEN NO$ FOR OUTPUT AS 1 FOR T=0 TO TOTALBYTES BYTE$=CHR$(BYTESANIM(T)) PRINT #1,BYTE$; NEXT CLOSE WINDOW CLOSE 2 RETURN CARGANIM: LONJ=0 WINDOW 2,"CARGAR ANIMACION",(20,20)-(300-40),0,-1 CLS: PRINT:LINE INPUT"NOMBRE DE LA ANIMACION ";NO$ NO$=NO$+".ANIM" OPEN NO$ FOR INPUT AS 1 WHILE NOT EOF(1) BYTEANIM(LONJ)=ASC(INPUT$(1,#1)) LONJ=LONJ+1 WEND CLOSE WINDOW CLOSE 2 TOTALBYTES=LONJ-64 RETURN Numero de lineas: 141 |
.273 .120 .273 .288 .273 .877 .443 .224 .108 .914 .601 .37 .277 .273 .273 .267 .144 .798 .205 .341 .583 .938 .220 .677 .978 .326 .918 .644 .477 .130 .114 .273 .841 .273 .61 .150 .745 .933 .341 .998 .301 .933 .50 .518 .244 .421 .196 .644 .273 .841 .273 .61 .150 .273 .273 .416 .273 .666 .313 .619 .61 .557 .740 .136 .200 .791 .65 .746 .61 .56 .89 .881 .313 .273 .107 .273 .463 .209 .42 .597 .261 .791 .237 .61 .983 .37 .648 .846 .467 .921 .143 .67 .273 .594 .110 .964 .148 .182 .56 .522 .231 .622 .665 .526 .89 .357 .854 .433 .988 .150 .224 .992 .358 .817 .819 .204 .354 .598 .956 .357 .61 .533 .231 .357 .45 .557 .400 .599 .312 .204 .293 .271 .164 .746 .89 .533 .231 .350 .357 |
' ' HUNTPOINTER ' ' (C) 1990 BY AMIGA WORLD ' ' POR F. JAVIER RODRiGUEZ ' CLEAR 25000 WINDOW CLOSE 1 WINDOW 1,"HUNTPOINTER",(0,0)-(160,60),0,-1 WINDOW OUTPUT 1 PUNTDIR(1)=20212 PUNTDIR(2)=3204 PUNTDIR(3)=9956 ELMEM: CLS PRINT "MEMORIA ORDENADOR" PRINT:PRINT"1- 512K" PRINT"2- 1 MEGA" PRINT"3- 2 MEGAS" :PRINT LINE INPUT "INTRODUZCA OPCIoN ";OP$ IF VAL(OP$)<1 OR VAL (OP$)>3 THEN ELMEM OP=VAL(OP$) WINDOW 1,"HUNTPOINTER",(0,0)-(185,40),16,-1 OPCION: CLS PRINT :PRINT "F1- CAZA PUNTERO":PRINT PRINT "ESC- ABANDONAR PROGRAMA" TECLA: A$=INKEY$ IF A$="ü" THEN CAZAIMAG IF A$=CHR$(27) THEN WINDOW CLOSE 1:END GOTO TECLA CAZAIMAG: WINDOW 2,"SALVAR DATOS",(0,0)-(200,40),0,-1 CLS PRINT:INPUT"NOMBRE FICHERO";NOM$ OPEN NOM$ FOR OUTPUT AS 1 FOR T=PUNTDIR(OP) TO PUNTDIR(OP)+63 PRINT #1,CHR$(PEEK(T)): NEXT CLOSE WINDOW CLOSE 2 GOTO OPCION Numero de lineas: 44 |
.273 .465 .273 .536 .273 .915 .273 .443 .224 .920 .914 .568 .982 .433 .453 .313 .806 .571 .918 .644 .542 .466 .147 .38 .364 .313 .195 .380 .968 .846 .994 .519 .370 .529 .372 .313 .747 .179 .290 .395 .61 .533 .231 .24 |
| Envía esta página web a un amigo: Esta opción está desactivada temporalmente, rogamos disculpen las molestias |
|