| Volver menú revistas | Volver página anterior |
|
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. |
| N°
7- Febrero 1990 |
|
PUNTERO MAKER |
|
Por José Dos Santos
Nada más cargar el puntero se borrará la pantalla, y sobre ésta aparecerá una cuadricula de 16x16 cuadrados, los cuales representaran al puntero. Debajo de la cuadrícula habrá cuatro cuadrados que contendrán los respectivos colores del puntero, aunque en esta ocasión los colores que contiene son los de la pantalla. A la derecha de la cuadrícula habrá dos cuadrados, uno de ellos informará al usuario del color que en esos momentos está en uso, y el cuadrado interior contendrá la imagen del puntero tal como quedará a escala real. Para definir el puntero basta con llevar, con el ratón, el puntero hasta la cuadrícula, colocándolo sobre el pixel que se quiera dibujar para a continuación pulsar el botón izquierdo del ratón y dibujar sobre la cuadrícula un cuadrado con el color que en ese momento se haya elegido. Para elegir el color hay que realizar el mismo proceso pero con la cuadrícula de los colores. El conjunto de todos los cuadrados de la cuadrícula que haya coloreados en lo que va a definir la forma del puntero. Además el usuario dispone de otras ayudas que se encuentran en la barra de menús, a la cual se accede dejando pulsado el botón derecho del ratón. La barra de menús está compuesta por tres menús: el menú sistema, menú edición y menú definir.
|
|
- Restaurar: si después de definir el puntero, no se ha quedado satisfecho con el nuevo aspecto que adquiere éste, eligiendo esta opción el ordenador restablece la forma original del puntero que tenía antes de haber cargado el programa. - Rotar Vert: sirve para girar verticalmente la figura que esté en la cuadrícula 180 grados. - Rotar Horiz: realiza la misma función que la opción anterior, sólo que en sentido horizontal. |
Este último menú sólo está constituido por dos opciones:
- Puntero: transfiere el dibujo de la cuadrícula al puntero. Cuando se ha elegido esta opción, es recomendable no mover el ratón mientras se está definiendo.
- Cursor: sirve para definir el bit de elección del puntero. Una vez se haya accedido a esta opcioón, el siguiente bit que se marque en la cuadrícula será el bit de elección. Este estará representado por una "X" en el color escogido.
Cuando se elige en el menú de sistema alguna opción se grabación, lo que se graba no es el dibujo que esté en esos momentos en la cuadrícula, sino los datos que contiene el puntero.
Después de cargar el programa de demostración, éste cargará a su vez cuatro ficheros de datos que han sido creados con el PUNTERO-MAKER. Estos ficheros son el dibujo de la flecha, apuntando a cada una de las cuatro direcciones.
Cuando ya esté en marcha el programa, el usuario puede mover el puntero con toda facilidad, pero cada vez que pulse el botón izquierdo del ratón, éste cambiará de forma apuntando la flecha al cuadrante en el que se encuentre.
Sirva también como ejemplo de los curiosos efectos de animación con el puntero, el programa puntero que acompaña a los discos de AMIGA WORLD.
DIM COL(16,16):COLO=1:DIM A1$(8):DIM A2$(8):DIM INV(16,16) DIM INIT(63):GOSUB CUADRICULA:PX=255:PY=0:DIM FIL$(232): DIM VA(64) FOR N=0 TO 63:INIT(N)=PEEK(3204+N):NEXT N GOSUB OPCIONES: ON MOUSE GOSUB PINTA:MOUSE ON:MENU ON ON ERROR GOTO FALLO MAIN: GOTO MAIN FALLO: WINDOW 2,"ERROR",(30,30)-(260,60),15 GOSUB PAUSA1 WINDOW CLOSE 2 MENU ON:MOUSE ON RESUME MAIN CUADRICULA: LINE(0,0-(400-0):LINE (400,0)-(400,160):LINE(400,160)-(0, 160 ) LINE(0,160)-(0,0) FOR N=1 TO 16:LINE(N*25,0)-(N*25,160):NEXT N FOR N=1 TO 16:LINE(0,N*10)-(400,N*10):NEXT N LINE(0,170)-(400,170):LINE(400,170)-(400,180):LINE(400,180 )-(0,180) LINE(0,180)-(0,170):FOR N=1 TO 4:LINE(N*100,170)-(N*100,18 0 ) PAINT (N*100-20,175),N-1,1:NEXT N LINE(440,15)-(500,15):LINE(500,15)-(500,45):LINE(500,45)-( 440 ,45) LINE(440,45)-(440,15):LOCATE 1,56:PRINT"COLOR":LINE (450,2 0 )-(490,40),,BF LINE(440,55)-(500,55):LINE (500,55)-(500,85):LINE(500,85)- (440,85) LINE(440.85)-(440,55):LOCATE 13,56:PRINT "PUNTERO" RETURN: PINTA: IF MOUSE(0)>=0 THEN PINTA X=MOUSE(1):Y=MOUSE(2) IF Y>159 THEN ELIGECOL IF X>399 THEN MOUSE ON:RETURN Y=INT(Y/10):X=INT(X/25) LINE(X*25,Y*10)-(X*25+25,Y*10+10),COLO,BF LINE(X*25,Y*10)-(X*25+25,Y*10):LINE(X*25+25,Y*10)-(X*25+25 ,Y*10+10) LINE(X*25+25,Y*10+10)-(X*25,Y*10+10):LINE(X*25,Y*10+10)-(X *25,Y*10) PSET (460+(X*2),60+Y),COLO:PSET (461+(X*2),60+Y),COLO COL(Y,X)=COLO MOUSE ON:RETURN ELIGECOL: IF Y<171 OR Y>179 THEN MOUSE ON:RETURN IF X>399 THEN MOUSE ON:RETURN COLO=INT(X/100):LINE(450,20)-(490,40),COLO,BF MOUSE ON:RETURN PUNTERO: PO=0:FOR N=0 TO 31:FOR F=1 TO 8:AL=INT(N/2) IF COL(AL,((N-AL*2)*8)+F-1)=0 THEN A1$(F)="0":A2$(F)="0" IF COL(AL,((N-AL*2)*8)+F-1)=1 THEN A1$(F)="1":A2$(F)="0" IF COL(AL,((N-AL*2)*8)+F-1)=2 THEN A1$(F)="0":A2$(F)="1" IF COL(AL,((N-AL*2)*8)+F-1)=3 THEN A1$(F)="1":A2$(F)="1" NEXT F:GOSUB PEE1:POKE 3204+AL*4+(N-AL*2),POK:GOSUB PEE2:P OKE 3206+AL*4+(N-AL*2),POK PO=PO+1 NEXT N PX=255-PX:PY=256-PY:IF PY=256 THEN PY=0 POKE 12598650&,PK:POKE 12598651&,PY RETURN PRUBA: FOR N=0 TO 15:FOR F=0 TO 15 PRINT COL(N,F):NEXT F:PRINT:NEXT M RETURN PEE1: POK=0:BYTE=128:FOR Z=1 TO 8:IF A1$(Z)="1" THEN POK=POK+BYTE BYTE=BYTE/2:NEXT Z RETURN PEE2: POK=0:BYTE=128:FOR Z=1 TO 8:IF A2$(Z)="1" THEN POK=POK+BYTE BYTE=BYTE/2;NEXT Z RETURN INVERSION: FOR I=0 TO 15:FOR IN=0 TO 15:INV(I,IN)=COL(15-IN,I):NEXT I N:NEXT I FOR I=0 TO 15:FOR IN=0 TO 15:LINE(I*25,IN*10)-(I*25+25,IN* 10 +10),INV(I,IN),BF PSET (460+I*2,60+IN),INV(I,IN):PSET (461+I*2,60+IN),INV(I, IN) NEXT IN:NEXT I:GOSUB CUADRICULA FOR I=0 TO 15:FOR IN=0 TO 15:COL(I,IN)=INV(IN,I):NEXT IN: NEXT I RETURN LOD: FOR I=0 TO 15:FOR IN=0 TO 1:FOR IL=0 TO 7:ELE(IL)=COL(I,IN *8+IL): COL(I,IN*8+IL)=COL(I,IL):COL(I,IL)=ELE(IL) NEXT IL:NEXT IN:NEXT I:FOR IL=0 TO 7:ELE(IL)=COL(0,8+IL): NEXT IL FOR I=1 TO 15:FOR IN=0 TO 7:COL(I-1,8+IN)=COL(I,8+IN): NEXT IN:NEXT I FOR I=0 TO 15:FOR IN=0 TO 15:INV(I,IN)=COL(IN,I):NEXT IN: NEXT I FOR I=0 TO 15:FOR IN=0 TO 15:LINE(I*25,IN*10)-(I*25+25,IN* 10 +10),INV(I,IN),BF PSET (460+I*2,60+IN),INV(I,IN):PSET (461+I*2,60+IN),INV(I, IN) NEXT IN:NEXT I:GOSUB CUADRICULA RETURN INVER: FOR I=0 TO 15:FOR IN=0 TO 15:INV(I,IN)=COL(IN,15-I): NEXT IN:NEXT I FOR I=0 TO 15:FOR IN=0 TO15:LINE(I*25,IN*10)-(I*25+25,IN* 10 +10),INV(I,IN),BF PSET (460+I*2,60+IN),INV(I,IN):PSET (461+I*2,60+IN),INV(I, IN) NEXT IN:NEXT I:GOSUB CUADRICULA FOR I=0 TO 15:FOR IN=0 TO 15:COL(I,IN)=INV(IN,I):NEXT IN: NEXT I RETURN RESTAURA: FOR RES=0 TO 63:POKE(3204+RES),INIT(RES):NEXT RES:RETURN PUNTO: MOUSE OFF IF MOUSE(1)>=0 THEN PUNTO X=MOUSE(1):Y=MOUSE(2) IF Y>159 THEN PUNTO IF X>399 THEN PUNTO Y=INT(Y/10):X=INT(X/25) LINE(X*25,Y*10)-(X*25+25,Y*10+10),COLO LINE(X*25+25,Y*10)-(X*25,Y*10+10),COLO LINE(X*25+25,Y*10)-(X*25+25,Y*10):LINE(X*25+25,Y*10)-(X*25+25 ,Y*10+10) LINE(X*25+25,Y*10+10)-(X*25,Y*10+10):LINE(X*25,Y*10+10)-(X *25,Y*10) PSET (460+(X*2),60+Y),COLO:PSET (461+(X*2),60+Y),COLO PY=Y:PX=X MOUSE ON:RETURN CARGA: OPEN "DF0:DEVS/SYSTEM-CONFIGURATION" FOR INPUT AS 1:LONJ=0 WHILE NOT EOF(1) FIL$(LONJ)=(INPUT$(1,1)) LONJ=LONJ+1 WEND CLOSE RETURN SAVFILE: OPEN A$ FOR OUTPUT AS 1 FOR GRA=0 TO 63 PRINT #1,CHR$(PEEK(3204+GRA));:NEXT GRA CLOSE RETURN LOAFILE: OPEN A$ FOR INPUT AS 1 FOR LONJ=0 TO 63:FIL$(31+LONJ)=(INPUT$(1,1)) NEXT LONJ CLOSE GOSUB INICIALIZA RETURN GRABA: OPEN "DF0:DEVS/SYSTEM-CONFIGURATION" FOR OUTPUT AS 1 FOR GRA=0 TO 63:FIL$(32+GRA)=CHR$(PEEK(3204+GRA)):NEXT GRA FIL$(100)=CHR$(PX) FIL$(101)=CHR$(PY) FOR FINAL=0 TO LONJ-1:PRINT #1,FIL$(FINAL);:NEXT FINAL CLOSE RETURN OPCIONES: MENU 1,0,1,"SISTEMA" MENU 1,1,1,"GRABAR DATOS" MENU 1,2,1,"CARGAR DATOS" MENU 1,3,1,"GRABAR SYSTEM" MENU 1,4,1,"CARGAR SYSTEM" MENU 1,5,1,"SALIR " MENU 2,0,1,"EDICION" MENU 2,1,1,"BORRAR" MENU 2,2,1,"RESTAURAR" MENU 2,3,1,"ROTAR VERT" MENU 2,4,1,"ROTAR HORIZ" MENU 3,1,1,"DEFINIR" MENU 3,2,1,"PUNTERO" MENU 3,3,1,"CURSOR" MENU 4,0,1,"" ON MENU GOSUB ELECCION RETURN SISTEMA: ON MENY GOSUB GFILE,LFILE,GSYSTEM,LSYSTEM,SALIR RETURN SALIR: SYSTEM GFILE: P$="GRABAR DATOS" FAENA$="PREGUNTA" GOSUB VENTANA GOSUB LOAFILE RETURN GSYSTEM: P$="GRABAR SYSTEM-CONFIGURATION" FAENA$="PAUSA" GOSUB VENTANA GOSUB CARGA GOSUB GRABA RETURN LSYSTEM: P$="CARGAR SYSTEM-CONFIGURATION" FAENA$="PAUSA" GOSUB VENTANA GOSUB CARGA GOSUB INICIALIZA RETURN VENTANA: WINDOW 2,P$,(30,30)-(400,60),15 WINDOW OUTPUT 2 IF FAENA$="PAUSA" THEN GOSUB PAUSA IF FAENA$="PREGUNTA" THEN GOSUB PREGUNTA WINDOW CLOSE 2 RETURN PAUSA: PRINT "INTRODUCE EL DISCO DESTINO Y PULSA UNA TECLA" PAUSA1:A$="" WHILE A$="":A$=INKEY$:WEND RETURN PREGUNTA: INPUT "NOMBRE DEL FICHERO";A$ RETURN ELECCION MENU OFF:MOUSE OFF MENX=MENU(0):MENY=MENU(1) ON MENX GOSUB SISTEMA,EDICION,DEFINIR MENU ON:MOUSE ON:RETURN EDICION: ON MENY GOSUB BORRA,RESTAURA,INVERSION,INVER RETURN BORRA: CLS:GOSUB CUADRICULA FOR I=0 TO 15:FOR IN=0 TO 15:COL(IN,I)=0:NEXT IN:NEXT I: RETURN DEFINIR: ON MENY GOSUB PUNTERO,PUNTO RETURN DECIFRA: PO=0:FOR N=0 TO 31:GOSUB PEE3:FOR F=1 TO 8:AL=INT(N/2): IF A1$(F)="0" AND A2$(F)="1" THEN COL(AL,((N-AL*2)*8)+F-1) =0 IF A1$(F)="1" AND A2$(F)="1" THEN COL(AL,((N-AL*2)*8)+F-1) =2 IF A1$(F)="1" AND A2$(F)="0" THEN COL(AL,((N-AL*2)*8)+F-1) =1 IF A1$(F)="1" AND A2$(F)="1" THEN COL(AL,((N-AL*2)*8)+F-1) =3 NEXT F: NEXT N RETURN PEE3: PAT=128:FOR F=1 TO 8:A1$(F)="0":A2$(F)="0" IF VA(AL*4+(N-AL*2))>=PAT THEN VA(AL*4+(N-AL*2))=VA(AL*4+( N-AL*2))-PAT : A1$(F)="1" IF VA(2+AL*4+(N-AL*2))>=PAT THEN VA(2+AL*4+(N-AL*2))=VA(2+ AL*4+(N-AL*2))-PAT:A2$(F)="1" PAT=PAT/2:NEXT F:RETURN INICIALIZA: WINDOW 2,"ESPERA UN MOMENTO",(30,30)-(400,60),15 FOR N=0 TO 63:VA(N)=ASC(FIL$(N+31)):NEXT N GOSUB DESCIFRA WINDOW CLOSE 2 GOSUB LOD RETURN Numero de lineas: 269 |
.186 .292 .321 .13 .758 .293 .702 .951 .527 .256 .902 .606 .231 .37 .235 .86 .77 .488 .148 .213 .138 .401 .145 .370 .337 .452 .893 .482 .165 .250 .866 .245 .210 .907 .381 .529 .27 .922 .99 .590 .305 .935 .270 .195 .557 .94 .850 .844 .896 .518 .99 .933 .844 .231 .226 .46 .456 .109 .519 .978 .495 .66 .108 .569 .324 .357 .439 .726 .316 .357 .241 .547 .865 .357 .290 .119 .865 .357 .150 .160 .962 .264 .709 .686 .177 .472 .899 .73 .357 .524 .303 .752 .805 .757 .44 .417 .687 .548 .73 .264 .709 .686 .177 .472 .357 .44 .222 .687 .264 .709 .686 .177 .472 .899 .73 .357 .7 .550 .953 .899 .468 .27 .934 .828 .590 .380 .965 .935 .270 .195 .557 .94 .478 .844 .972 .746 .271 .682 .746 .89 .533 .357 .262 .223 .43 .503 .533 .357 .302 .417 .163 .742 .533 .597 .357 .470 .786 .282 .706 .804 .901 .533 .357 .108 .513 .531 .513 .381 .317 .268 .706 .728 .541 .575 .312 .65 .713 .74 .924 .669 .357 .967 .666 .357 .341 .209 .441 .877 .361 .32 .345 .357 .452 .326 .356 .32 .994 .66 .357 .310 .834 .356 .32 .994 .597 .357 .109 .315 .921 .309 .34 .231 .357 .271 .831 .880 .307 .357 .663 .814 .357 .231 .350 .980 .347 .257 .394 .820 .357 .516 .704 .837 .357 .985 .325 .357 .497 .817 .826 .328 .650 .342 .875 .335 .699 .349 .770 .108 .357 .339 .787 .175 .260 .805 .716 .751 .707 .384 .745 .534 .231 .618 .357 |
DIM CURSOR(3,63):VALOR)=1:VA=1 GOSUB CARGA ON MOUSE GOSUB MUEVE:MOUSE ON MAIN: GOTO MAIN CARGA: FOR L=0 TO 3:NOMBRE$="CURSOR"+STR$(L+1) OPEN NOMBRE$ FOR INPUT AS 1 FOR F=0 TO 63 CURSOR (L,F)=ASC(INPUT$(1,1)) NEXT F:CLOSE:NEXT L MUEVE: MOUSE OFF VALOR=1 IF MOUSE(0)>=0 THEN MUEVE X=MOUSE(1):Y=MOUSE(2) IF X>320 THEN VALOR=VALOR+1 IF Y>120 THEN VALOR=VALOR+2 IF VA<>VALOR THEN VA=VALOR:FOR N=0 TO 63:POKE 3204+N, CURSOR(VA-1,N):NEXT N MOUSE ON RETURN Numero de lineas: 22 |
.87 .994 .349 .951 .527 .972 .196 .638 .777 .984 .582 .219 .899 .402 .934 .27 .225 .192 .891 .939 .828 .357 |
| Volver menú revistas | Volver página anterior |