Revistas en papel
 Commodore Amiga World Nº4 - Noviembre 1989
Anterior
Menú
Logotipo

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.

SOLITARIO
El compañero de juegos
Amiga World

Resulta mucho más sencillo sacar una baraja de cartas que ponerse
a jugar con este programa, pero el camino más largo a veces tiene
ventajas: tal vez aprenda algunas técnicas de programación.

Por Juan Carlos Marcos

Hay muchos programas para Amiga que no aprovechan en absoluto sus capacidades. No ya su poder gráfico o velocidad (esto último es mucho más fácil de explotar), sino su manera de entender el manejo de un ordenador.

Existen programas que deben ser manejados desde un principio con secuencias de teclado, o teclas de función que nunca se recuerdan. Es cierto que cuando se lleva mucho tiempo utilizando el mismo programa, se olvida uno del ratón y se hace todo con las abreviaturas (shortcuts) del teclado, como es en el caso de Deluxe Paint. Pero lo mejor es respetar la filosofía de un entendimiento gráfico con el usuario; así, además de ser todo más sencillo, el manejo y apariencia de los programas se estandariza y todo el mundo puede "saber por dónde van los tiros", sin plantillas de teclado ni cursillos.

Para el programador que proviene de máquinas "normales", si es que algún ordenador de Commodore lo ha sido alguna vez, resulta difícil acostumbrarse a una manera de programar que siempre ayuda al usuario. Así, es chocante crear gadgets en pantalla para funciones que se pueden acceder a golpe de tecla y cosas por el estilo. No digamos ya lo de "encajar" un programa en una ventana cuando lo más probable es que nunca se utilice en multitarea, ni se pretenda cambiar el tamaño de la imagen. Pero son filosofías inherentes al Amiga, y si queremos que nuestro ordenador sea EL MEJOR, con los programas más bonitos y fáciles de utilizar, hay que amoldarse a las circunstancias: hay que amoldarse a la filosofía de un ordenador que ya nació con ratón y ventanas.

Para irme entrenando decidí crear un programa sencillo, un juego, pero al que pondría todas las características del ordenador para el que fue escrito, no como otros programas, creadas para máquinas inferiores y que hacen aparecer a la nuestra inferior a lo que puede ser.

Así que pensé en una distribución por la pantalla de los datos en la cantidad y función de los gadgets o botones de manejo y el uso enteramente por ratón de todo el proceso. Así se podría escribir una base de datos, o una hoja de cálculo, pero para empezar hice algo más sencillo.


Un solitario

Desde luego, casi todos los juegos para ordenador son solitarios, pero éste pretende sustituir a la baraja de cartas por un 68000 a 8 Mhz. La verdad es que como programa no tiene mucha utilidad práctica, pero al ser un concepto tan sencillo permite llenarlo de características propias del Amiga. Todo esto a un precio, vaya. Para lo poco que hace, el listado es muy largo, todo ello debido a que la presentación está muy cuidada y que hasta incluye una pantalla de ayuda para enseñar a jugar a quien no sabe.

Así deben ser los programas para este ordenador; nada más ejecutarlos, la intuición nos enseña a manejarlos, o por lo menos a buscar las ayudas que incluye el programa. Si todos tienen un interface de usuario parecido, entonces todo el mundo sabrá manejar todos los programas del Amiga, porque las funciones comunes a todos ellos (New, Open, Save, Delete, About...) se utilizan de manera semejante.

De manera que este programa con el ratón, no se toca el teclado y no necesita manual porque está incluido (esto último sólo es posible porque es muy sencillo, claro). Es el típico programa de Amiga.

Bueno, bueno, después de dar este discurso sobre "cómo debe usted programar porque si no está fuera de la onda" (luego que cada cual se aplique el cuento como quiera) vamos a ver un poco del aspecto ´técnico, que para eso se escribe en una revista de computadoras.


Instrucciones del solitario

El juego consiste en eliminar parejas o tríos de cartas hasta que se acabe la baraja de cuarenta cartas. En pantalla se muestra ocho cartas, y el jugador debe buscar una pareja de ellas que sumen ocho, como un as y un siete, dos cuatros, etc. El palo de cada una de las cartas de la pareja es indiferente, claro.

En el caso de encontrar entre las ocho cartas las tres figuras del mismo palo (sota, reina y rey, o J, Q y K) también se pueden eliminar. Así, encontrando parejas que sumen ocho y eliminando tríos se debe terminar la baraja... y el solitario.

Esta trama tan sencilla esconde una gran dificultad, pero avisado queda el jugador. El juego suele terminarse una vez de cada veinte o treinta. Por cierto, para jugar olvidese de todo y simplemente tenga la mano sobre el ratón y el dedo sobre el botón izquierdo (no se utilizan menús pull down, esto es sólo un jueguecito).

Para ponerse a jugar no hay más que, una vez terminado el listado en el AmigaBasic, ejecutarlo. No hay cargas de disco, ni librerías, ni historias de este tipo. La verdad es que se trata de un simple programa en el lenguaje de siempre. Lo que más salta a la vista es que los colores cambian, y al no abrirse otro SCREEN propio para el programa (es innecesario) la paleta del Workbench se altera también. Además, desaparece la ventana del Basic propiamente dicha porque se la cambia de tamaño y gadgets para este programa. Esto es por una buena razón. To, personalmente, prefiero utilizar sólo la pantalla que necesito, y este programa sólo requiere algo así como un tercio de ella. De manera que se redimensiona la ventana (pasa a ser de 623 por 139, contando con el dragbar) para que todo esté más proporcionado y se vea el Workbench por detrás, cosa que yo juzgo como positiva. Después la ventana presenta cuatro botones para empezar la partida, terminarla (sí, en este juego el usuario se da cuenta dé que no puede continuar y debe empezar de nuevo), listar las instrucciones y salir del programa. Para este último caso hay que hacer un doble click sobre él.


Listos para jugar

Primero, si quiere, liste las instrucciones. Apriete el botón "?" de la ventana y aparecerá un recuadro con parte de ellas. Su intuición le dirá que las flechas al lado del recuadro son para hacer scroll por el texto. Se incluye, además, el número de la línea en que se está exclusivamente para hacer bonito, vaya.

Cuando haya leído las instrucciones y lo entienda todo, cierre el recuadro con el botón de cierre que está arriba a la derecha. Mientras hace todo esto, se utiliza una parte del programa ajena al juego en sí, claro. Por esta razón no se puede llamar a las instrucciones mientras se juega, sólo entre partidas. No es muy difícil de hacer esto, pero lo consideré innecesario. Cuando se está leyendo las instrucciones, éstas son lo único que funciona, u al salir de ellas se puede empezar a jugar con el botón al efecto.

Entonces aparecen ocho cartas y se empieza a eliminarlas. Se señala la primera carta de la pareja, luego el botón CON (abajo a la izquierda) y luego la otra carta. Si suman ocho entre las dos, se sustituyen por otras dos del mazo de cartas. En cualquier paso de la selección (son sólo tres clicks de ratón) se puede pulsar el botón REP para empezar con otra pareja.

Si ve en pantalla un trío de figuras del mismo palo, pulse el botón "Sota, Reina y Rey", y debajo de éste el palo que proceda. Entonces se eliminarán las tres cartas de pantalla.

¡Ojo!, el programa no se deja engañar. Si finalmente consigue descartar toda la baraja, enhorabuena. Lo que le va a pasar es que llegará un momento en que no haya ni cartas que sumen ocho, ni tríos de figuras. Entonces le toca pulsar el botón "acabar" para empezar de nuevo.

Todo el

programa se

controla con

una mano y un

dedo sobre el

botón izquierdo

del ratón...

Si, la verdad es que el programa (y el juego) es así de sencillo, y se juega casi sin pensar, como un acto reflejo. De hecho, es muy fácil programar un modo de juego automático para ver cómo el ordenador también le cuesta horrores terminar una partida. Bien, ahora vamos a comentar el listado y algunas rutinas y procedimientos interesantes que contiene.


El programa

Utilizar subprogramas es algo grande. Permite definir nuevos comandos para el Basic, con sus propios parámetros, para que los listados sean claros y explícitos. Una costumbre que creo necesaria es la de escribir todos los subprogramas al principio del listado (algunos compiladores lo exigen), con lo que se sabe desde el principio todo lo nuevo que se va a utilizar.

Debido a lo cuidado de la presentación —por lo menos a mi me lo parece, que me costó horrores que todo quedase bonito— hay muchas rutinas "inútiles". Me explico: todo lo que es dibujar los botones en pantalla y dar color y cosas de éstas no influyen en el juego en sí, pero son necesarios. Así hay varios subprogramas sin parámetros que lo único que hacen es dibujar gráficos (decorativos o no) en la ventana del juego.

SUBrutinas como DrawBottons, DrawMazo (Cantidad de hispánico, ¿eh?), EraseLine, etc., simplemente cuidan el aspecto gráfico. De hecho, todo esto es porque el AmigaBasic no incluye rutinas especiales para el control de botones, como las que tiene para los menús. Así, por ejemplo, todas las rutinas que empiezan por la palabra "Invert" (InvertSRR, InvertCON, InvertOF2) no sirven hada más que para marcar gráficamente el botón que se haya pulsado..., una rutina para cada uno. Eso no es lo peor. También durante el programa hay que saber dónde ha pulsado el usuario con una serie de condiciones IF con coordenadas de pantalla, para saber qué botón se ha tocado, etc.

El dibujo de

los palos de la

baraja se

realiza de

forma

vectorial.

Si el AmigaBasic tuviese procedimientos para botones (como el Macintosh), el listado sería más lógico, legible y corto. Pero, de momento, con un poco de ganas de trabajar, lo que hay funciona, así que bienvenido sea.

También hay rutinas muy importantes, como la DrawCard, que es llamada por PopCard. La primera simplemente hace un dibujo de una carta (bastante sencillo, por cierto) en pantalla. Se la separó de la segunda, que incluye algo de control lógico, por motivos de claridad y sencillez de modificación. PopCard es bastante más complicada en el sentido de que tiene en cuenta los palos y asigna valores reales para el programa (como el 11 para la reina por ejemplo), además de que descuenta automáticamente las cartas de la baraja. Pero eso sí, una vez es necesario dibujar una carta, se llama a DrawCard desde PopCard sin preocuparse por nada más. Esto de tener el aspecto gráfico separado del lógico es muy útil para hacer pruebas y para modificar uno de los dos sin liarse la cabeza.

Hay otra rutina curiosa y que tiene su historia. Se trata de EraseCard, que lo único que tiene que hacer es lo contrario de las anteriores: borrar una de las ocho posiciones de carta de la pantalla. En un principio hice un sistema de borrado por barrido, luego otro diagonal. No quería librarme del primero porque me gustaba y al final lo dejé incluido... junto con otros tres.

De modo que hay cinco formas de borrar una carta que se eligen al azar. Quien quiera poner más, adelante. Esto le da variedad al programa. Aquí, además, se echa en falta un comando (ver listado) que sirve para salir de un subprograma desde cualquiera de sus líneas, no necesariamente llegando al END SUB, que debe estar en la última línea, cerrando su definición.

La solución que hay es ponerle una etiqueta a ese único END SUB y saltar a él con un GOTO desde varios sitios (para horror de los Pascal-adictos y goce de los CBM-Basic-V2-adictos que hacia la tira que no veían un GOTO...). Esto se ve bien en el listado en varias ocasiones. En el fondo no es tan chapucero y sí muy lógico, sobre todo necesario.

El programa no incluye demasiadas curiosidades científicas, y el juego es tan sencillo de desarrollo que muchos dirán que aquí la programación fue lo de menos. Pues no voy a decir que no...

La

programación

está

estructurada

en forma de

subrutinas

(SUBs) de fácil

seguimiento.


Los datos

Donde sí que hay algo interesante en el programa es en los datos que maneja. Los más sencillos son los de las cuarenta cartas, que pueden verse en las líneas DATA que aparecen justo antes de empezar el setup del juego (cuando el intérprete, tras cientos de SUBs y algunos DATAs, encuentra algo ejecutable). Si se fija verá que la codificación es muy sencilla, y que cada carta tiene un "nombre" bien sencillo compuesto por su palo (del 1 al 4) y su valor (del 1 al 7, J, Q, K). Más abajo se ven los nombres en castellano de las cartas y los palos, y se carga cada cosa en una variable dimensionada al efecto.

Antes de todo esto hay una serie de datos inexplicables. Bien, vamos a desvelar el asunto. En el Basic del Amiga es dificilísimo (sobre todo en comparación con todo lo demás) crear un gráfico. Si, sí, un gráfico con forma de los rombos, o los corazones. No estaba por la labor de crear ficheros extra con BOBs, sprites, ni nada parecido, así que tomé un camino nuevo: la codificación vectorial. El que se haya asustado, que siga.

Bien, en esas DATAs se dan las coordenadas de los puntos que, al unirse por líneas, forman el contorno de la figura. Si quiere ver cómo, tome un papel cuadriculado y haga un inicio de coordenadas (0,0) en la esquina superior izquierda. Luego vaya dibujando puntos según los pares de coordenadas que vienen en las líneas DATA (el primer número no, que es el número de puntos o pares de coordenadas que viene después). Así, al unir los puntos por ese orden se forma la figura del palo en cuestión. La más sencilla es la tercera línea. la figura del rombo.

De esta forma el Basic va haciendo lo mismo que usted va tomando puntos, y con la sentencia AREA va definiendo un contorno (una lástima que el límite de puntos de AREA sean sólo veinte), que luego rellena con AREAFILL dibujando la figura.

¿Pero por qué todo tan complicado? Bien, la técnica vectorial tiene muchas ventajas. Imagine que en vez de papel cuadriculado, lo hace con papel milimetrado, o con cuadros más grandes de lo común. Entonces la figura sale más pequeña o mas grande. Y si los cuadros son más altos que anchos, más estirada.

Y no hablemos ya de rotarla, etc. Es la mejor manera de dibujar. Cualquier CONTORNO (lo que se define con vectores) llena infinitos detalles, y puede hacerse tan grande o pequeño —siempre que se tenga resolución en pantalla para que sea legible— como se quiera. Funciona en cualquier resolución o máquina. Y si lo que se ahce en vez de dar dos puntos para definir una línea es dar tres para definir un arco, se puede ya crear una silueta que al agrandarla siga siendo redonda en vez de con tramos rectos simulando curvas. ¿Le parece poco? ¿En qué cree que consiste la impresión láser? Así se definen las letras de un font PostScript, por ejemplo. No se pierde calidad al agrandar y si la impresora permite más resolución, ésta siempre se aprovecha.

Vaya, esto era un juego de solitario, ¿verdad? Sacando una vieja baraja del armario todo sería más sencillo, pero un sencillo programa en AmigaBasic puede enseñarle muchas cosas inesperadas.

'Solitario                                                                                                   .749
'(C)1989 Juan Carlos Marcos                                                                                  .310
'        & KB Systems Software                                                                               .835
'(C)1989 Commodore/Amiga World                                                                               .715
SUB DrawCard (c$,place%) STATIC           'Este-subprograma Dibuja en                                        .606
 SHARED Figure(),nc%                      'cualquiera de las ocho                                            .635
 fig%=VAL(MID$(c$,2,1))                   'posiciones posibles (place%)                                      .437
 x=10+70*place%                           'una carta de valor y palo                                         .360
 LINE (x,17)-(x+63,68),3,bf               'codificados en c$                                                 .606
 LINE (x,17)-(x+60,67),1,b                                                                                   . 60
 LINE (x+1,17)-(x+61,67),1,b                                                                                 .732
 LINE (x+4,19)-(x+57,65),0,bf                                                                                .988
 LINE (x+62,18)-(x+63,68),2,bf                                                                               .396
 LINE (x+2,68)-(x+61,68),2                                                                                   .494
 FOR a=1 TO Figure (fig%,0,0)                                                                                .  3
  AREA ((Figure(fig%,a,0)*6)+x+6 , (Figure(fig%,a,1)*3)+20)                                                  .153
 MEXT                                                                                                        .423
 AREAFILL                                                                                                    .326
 LOCALE 8:COLOR 2,0                                                                                          .923
 PRINT PTAB(x+42);MID$(c$,1,1)                                                                               . 59
 LOCALE 8,75:COLOR 2,3:PRINT nc%                                                                             .581
 COLOR 1,0                                                                                                   .720
 END SUB                                                                                                     .504
SUB SignCard (n%) STATIC                  'Senala con un triangulo                                           .725
 x=10+70*n%:COLOR 1,0                     'dibujado graficamente en la                                       .328
 AREA (x+26,76):AREA (x+32,70)            'parte inferior de la carta                                        .904
 AREA (x+38,76):AREAFILL                  'cualquiera de ellas                                               .600
 LINE (x+28,77)-(x+40,77),2                                                                                  .487
 LINE -(x+34,71),2:LINE (x+35,71)-(x+41,77),2                                                                . 24
 END SUB                                                                                                     .504
SUB DrawMazo STATIC                       'Dibuja a la derecha de la                                         .411
 LINE (590,0)-(640,50),0,bf               'pantalla un grafico                                               .955
 LINE (590,0)-(640,50),1,b                'decorativo del mazo de cartas                                     .816
 LINE (591,0)-(591,50),1                                                                                     .981
 LINE (592,51)-(640,51),2                                                                                    . 70
 FOR a=599 TO 640 STEP 2                                                                                     .105
 LINE (a,4)-(a,46),3                                                                                         .166
 NEXT                                                                                                        .423
 END SUB                                                                                                     .504
SUB DrawButtons STATIC                    'Dibuja una serie de botones                                       .444
 SHARED Figure()                          'en pantalla con los que se                                        .201
 LINE (4,89)-(616,125),1,b                'manejara el programa                                              .930
 LINE (5,89)-(617,125),1,b                                                                                   .817
 LINE (6,126)-(619,126),2                 'Simple paciencia...                                               . 16
 LINE (618,90)-(619,126),2,bf                                                                                .931
 LOCATE 13,3                                                                                                 .408
 COLOR 2,1:PRINT " CON "                                                                                     .881
 LINE (16,95)-(56,95),1                                                                                      .287
 LINE (14,94)-(56,104),0,b                                                                                   .632
 LINE (15,94)-(57,104),0,b                                                                                   .640
 LINE (16,105)-(58,105),2                                                                                    .619
 LINE (59,95)-(59,105),2,bf                                                                                  . 63
 LOCATE 13,10:PRINT " SOTA, REINA Y REY "                                                                    .903
 LINE (72,95)-(224,95),1                                                                                     .856
 LINE (70,94)-(224,104),0,b                                                                                  .382
 LINE (71,94)-(225,104),0,b                                                                                  .396
 LINE (72,105)-(225,105),2                                                                                   .170
 LINE (226,95)-(227,105),2,bf                                                                                .542
 LOCATE 15,3:PRINT " REP "                                                                                   .663
 LINE (16,111)-(56,111),1                                                                                    .889
 LINE (14,110)-(56,120),0,b                                                                                  .925
 LINE (15,110)-(57,120),0,b                                                                                  .939
 LINE (16,121)-(58,121),2                                                                                    .687
 LINE (59,111)-(59,121),2,bf                                                                                 .503
 COLOR 1,0                                 ' Esto tan complicado                                             .300
 FOR a=1 TO 4                              ' simplemente dibuja las                                          .601
  x=42,38*a                                ' cuatro pequenas figuras                                         .555
  FOR b=1 TO Figure (a,0,0)                ' de los palos                                                    .449
   AREA ((Figure(a,b,0)*3)+x , (Figure(a,b,1)*1,5)+107)                                                      .599
  NEXT   .959
  AREAFILL                                 'Todo por el uso de tecnicas                                      .588
 NEXT                                      'vectoriales (2D, claro!) en                                      .120
 LINE (248,95)-(348,119),1,bf              'la codificacion del dibujo                                       .870
 COLOR 2,1   'de las figuras                                                                                 .374
 LOCALE 14,32:PRINT " ACABAR "                                                                               .663
 LINE (246,94)-(349,120),0,b                                                                                 . 90
 LINE (247,94)-(350,120),0,b                                                                                 . 83
 LINE (248,121)-(352,121),2                                                                                  .532
 LINE (351,95)-(352,120),2,b                                                                                 .501
 LINE (368,95)-(468,119),1,bf                                                                                .284
 LOCATE 14,47:PRINT " EMPEZAR "            'Y mas botones...                                                 .149
 LINE (366,94)-(469,120),0,b                                                                                 .972
 LINE (367,94)-(470,120),0,b                                                                                 .965
 LINE (368,121)-(472,121),2                                                                                  .604
 LINE (471,95)-(472,120),2,b                                                                                 .384
 LINE (554,95)-(602,119),1,bf                                                                                .  4
 LINE (552,94)-(603,120),0,b                                                                                 .932
 LINE (553,94)-(604,120),0,b                                                                                 .946
 LINE (554,121)-(606,121),2                                                                                  .984
 LINE (605,95)-(606,120),2,bf                                                                                .604
 CIRCLE (578,107),15,2,,,.5                                                                                  .726
 CIRCLE (579,107),15,2,,,.5                                                                                  . 94
 LINE (578,102)-(579,112),2,b                                                                                .636
 LINE (488,95)-(533,119),1,bf                                                                                .502
 LOCATE 14,62:PRINT " ? "                                                                                    .418
 LINE (486.94)-(534,120),0,b                                                                                 .575
 LINE (487,94)-(535,120),0,b                                                                                 .589
 LINE (488,121)-(537,121),2                                                                                  .528
 LINE (537,95)-(537,120),2,bf              'Todos los botones dibujados                                      .493
 END SUB                                                                                                     .504
SUB InvertSRR STATIC                       'Cada uno de los subprogramas                                     .248
 AREA (72,95):AREA (223,95)                'que siguen sirven unicamente                                     .215
 AREA (223,103):AREA (72,103)              'para invertir graficamente                                       .162
 AREA (72,95):AREAFILL 1                   'un boton determinado. Un                                         .970
 END SUB                                   'subprograma para cada uno!                                       .569
SUB InvertCON STATIC                       'El anterior invertia el                                          .440
 AREA (16,95):AREA (55,95)                 'boton de Sota, Reina y Rey.                                      .414
 AREA (55,103):AREA (16.103)               'Este invierte el "CON"                                           .159
 AREA (16,95):AREAFILL 1                                                                                     .483
 END SUB                                                                                                     .504
SUB InvertREP STATIC                       'Este el de repetir jugada                                        .286
 AREA (16,111):AREA (55,111)                                                                                 .650
 AREA (55,119):AREA (16,119)                                                                                 .603
 AREA (16,111):AREAFILL 1                                                                                    .190
 END SUB                                                                                                     .504
SUB InvertACA STATIC                       'Este el de acabar partida                                        .230
 AREA (248,95):AREA (348,95)               '(usualmente para empezar de                                      .921
 AREA (348,119):AREA (248,119)             'nuevo si no esta totalmente                                      .437
 AREA (248,95):AREAFILL 1                  'frustrado!)                                                      .269
 END SUB                                                                                                     .504
SUB InvertEMP STATIC                       'El boton de comenzar...                                          .841
 AREA (368,95):AREA (468,95)                                                                                 .669
 AREA (468,119):AREA (368,119)                                                                               .531
 AREA (368,95):AREAFILL 1                                                                                    .970
 END SUB                                                                                                     .504
SUB InvertOff STATIC                       'el boton de terminar programa                                    .106
 AREA (554,95):AREA (602,95)                                                                                 .470
 AREA (602,119):AREA (554,119)                                                                               .407
 AREA (554,95):AREAFILL 1                                                                                    .931
 END SUB                                                                                                     .504
SUB InvertINS STATIC                       'el de mostrar instrucciones                                      .531
 AREA (488,95):AREA (533,95)                                                                                 . 59
 AREA (533,119):AREA (488,119)                                                                               .734
 AREA (488,95):AREAFILL 1                                                                                    .115
 END SUB                                                                                                     .504
SUB InvertUP STATIC                        'el de subir (bajar) una linea                                    .628
 AREA (551,20):AREA (575,20)               'del texto de instrucciones...                                    .105
 AREA (575,45):AREA (551,45)                                                                                 .643
 AREA (551,20):AREAFILL 1                                                                                    . 46
 END SUB                                                                                                     .504
SUB InvertDWN STATIC                       '...el boton de bajar (subir)                                     .447
 AREA (551,57):AREA (575,57)               'una linea...                                                     .893
 AREA (575,82):AREA (551,82)                                                                                 . 54
 AREA (551,57):AREAFILL 1                                                                                    .341
 END SUB                                                                                                     .504
SUB InvertOF2 STATIC                       '...y por fin, el que invierte                                    .156
 AREA (551,5):AREA (575,5)                 'el boton de cierre de la                                         .119
 AREA (575,18):AREA (551,18)               'pantalla de instrucciones.                                       .243
 AREA (551,5):AREAFILL 1                                                                                     .526
 END SUB                                                                                                     .504
SUB EraseCard (n%) STATIC                  'Este subprograma borra de                                        . 50
 x=INT(RND(1)*5)+1                         'cinco maneras diferentes                                         .637
 ON x GOTO f1,f2,f3,f4,f5                  '(elegidas al azar) cualquiera                                    .  7
 f1:                                       'de las ocho cartas de la                                         . 78
 x=10+70*n%                                'pantalla                                                         .435
 FOR a=0 TO 31                                                                                               .  6
 LINE (x+a,17+a)-(x+63-a,68-a),3,b                                                                           .  0
 MEXT                                                                                                        .423
 GOTO e                                    '(*)                                                              .403
 f2:                                                                                                         .788
 x=10+70*n%                                                                                                  .831
 FOR a=0 TO 51                                                                                               .104
  LINE (x,a+17)-(x+63,68-a),3                                                                                . 55
 MEXT                                                                                                        .423
 FOR a=0 TO 63                                                                                               .167
  LINE (x+a,68)-(x+64-a,17),3                                                                                .752
 NEXT                                                                                                        .423
 GOTO e                                    '(*)                                                              .403
 f3:                                                                                                         .837
 x=10+70*n%                                                                                                  .831
 FOR a=0 TO 63 STEP 2                                                                                        .171
  LINE (x+a,17)-(x+a,68),3                                                                                   .394
  LINE (x+63-a,17)-(x+63-a,68),3                                                                             .568
 NEXT                                                                                                        .423
 GOTO e                                    '(*)                                                              .403
 f4:                                                                                                         .886
 x=10+70*n%                                                                                                  .831
 FOR a=0 TO 63 STEP 2                                                                                        .171
  LINE (x+a,17)-(x+a+2,29),3,bf                                                                              .200
  LINE (x+62-a,30)-(x+64-a,42),3,bf                                                                          .925
  LINE (x+a,43)-(x+a+2,55),3,bf                                                                              .462
  LINE (x+62-a,56)-(x+64-a,68),3,bf                                                                          .413
 NEXT                                                                                                        .423
 GOTO e                                    '(*)                                                              .403
 f5:                                                                                                         .935
 x=10+70*n%                                                                                                  .831
 FOR a=0 TO 63                                                                                               .167
  LINE (x+63,68)-(x+63-a,17),3                                                                               .867
  LINE (x,17)-(x+a,68),3                                                                                     .506
  NEXT                                                                                                       .959
  GOTO e                                   '(*) un recurso chapucero pero                                    .323
e: END SUB                                 'obligatorio para salir de un                                     .423
                                           'subprograma desde cualquiera                                     .765
SUB EraseLine STATIC                       'de sus lineas.                                                   .918
 LINE (0,69)-(620,88),3,bf                                                                                   .898
 END SUB                                   'Esto borra la linea donde                                        .378
                                           'aparecen los nombres                                             .780
SUB Shuffle (n%) STATIC                                                                                      .756
 SHARED card$()                            'Aqui se barajan las cartas.                                      . 58
 RANDOMIZE TIMER                           'Fijense en lo sencillo del                                       . 97
 FOR a=1 TO n%                             'sistema, mas rapido y sencillo                                   .157
  x1=INT(RND(1)*40)+1                      'que el usado manualmente, es                                     .  7
  x2=INT(RND(1)*40)+1                      'muy rapido y segun lo grande                                     .238
  SWAP card$(x1),card$(x2)                 'que sea n%, lia las cartas                                       . 77
 NEXT   'cuanto se quiera                                                                                    .978
 END SUB                                                                                                     .504
SUB PopCard (n%) STATIC                    'Este subprograma hace aparecer                                   .515
 SHARED card$(),nc%,ncm%,palo%(),valor%()  'en una de las ocho posiciones                                    .258
 IF nc%=0 THEN                             'de pantalla la siguiente carta                                   . 68
    palo%(n%)=0                            'del mazo                                                         .884
    valor%(n%)=0                                                                                             . 78
    GOTO el                                '(*)                                                              .918
    END IF                                                                                                   .956
 nc%=nc%-1:ncm%=ncm%+1                                                                                       .  4
 c$=card$(ncm%)                                                                                              .348
 DrawCard c$,n%-1                          'llamada a otro subprograma                                       .617
 palo%(n%)=VAL(MID$(c$,2,1))                                                                                 .740
 a$=LEFT$(c$,1)                                                                                              .981
 valor%(n%)=VAL(a$)                                                                                          .246
 IF a$="A" THEN valor%(n%)=1               'cambia la codificacion de la                                     .100
 IF a$="J" THEN valor%(n%)=10              'carta por un valor real                                          .  6
 IF a$="Q" THEN valor%(n%)=11                                                                                .101
 IF a$="K" THEN valor%(n%)=12                                                                                . 48
 el:                                                                                                         .396
END SUB                                    'Aqui empieza el asunto...!                                       .607
 ad$=CHR$(161):n$=CHR(241)                                                                                   .298
 a$=CHR$(225):e$=CHR$(233):i$=CHR$(237):o$=CHR$(243);u$=CHR$(250)                                            . 96
                                           'para escribir acentros... uf!                                    . 66
 DIM tx$(24)                                                                                                 .626
 tx$(1)="  Este es un juego de cartas  solitario en el que se juega con una"                                 .971
 tx$(2)="baraja de cuarenta cartas, del  as al siete, sota, reina y rey. El"                                 .903
 tx$(3)="juego consiste en reunir parejas de cartas que sumen ocho (el palo"                                 .732
 tx$(4)="es indiferente) o bien sota, reina y  rey del mismo palo hasta que"                                 .737
 tx$(5)="se acaben  las  cartas  del  mazo.  Es  uno  de los solitarios m"+a$+"s"                            .435
 tx$(6)="sencillos que existen y uno  de los mas dif"+i$+"ciles tambi"+e$+"n, siendo"                        .564
 tx$(7)="muy dif"+i$+"cil realizar las dieciocho combinaciones para terminarlo. "                            .673
 tx$(8)="  Para jugar seleccionamos  EMPEZAR y aparecer"+a$+"n ocho cartas en la"                            .831
 tx$(9)="pantalla.  Entonces vemos si hay dos cartas que sumen ocho y si es"                                 .133
tx$(10)="as"+i$+", se"+n$+"alamos  una de las dos, luego  el bot"+o$+"n 'CON' y luego la"                    .633
tx$(11)="otra carta. Las dos ser"+a$+"n substituidas por otras dos del mazo"                                 .996
tx$(12="Si vemos sota,  reina y rey  del mismo palo, seleccionamos el bot"+o$+"n"                            . 49
tx$(13)="'SOTA, REINA Y REY'  y luego, debajo,  el palo que sea.  Las tres"                                  .432
tx$(14)="cartas ser"+�$+"n sustituidas por otras tres del mazo.  As"+i$+" se contin"+u$+"a"                  .656
tx$(15)="hasta que se  acaben las cartas.  Si quieres elegir otra jugada en"                                 .459
tx$(16)="lugar de la que juegas  entonces, pulsa 'REP'.  Esta funci"+o$+"n anula"                            .736
tx$(17)="las jugadas y te deja elegir de nuevo; es muy "+u$+"til si te atrancas."                            .913
tx$(18)="Si ves que ya no hay mas sumas a  ocho o tr"+i$+"os de figuras, tendr"+a$+"s"                       .769
tx$(19)="que empezar de nuevo. Selecciona 'ACABAR' y luego 'EMPEZAR0."                                       .811
tx$(20)="En la pantalla ver"+a$+"s, a la derecha, el n"+u$+"mero de cartas que quedan"                       .348
tx$(21)="en el mazo, y debajo de las ocho cartas,  el nombre de las  cartas"                                 .862
tx$(22)="que juegues, as"+i$+" como  flechas que las  se"+n$+"alan ("+e$+"stas no aparecen"                  .561
tx$(23)="cuando juegas tr"+i$+"os de figuras)."                                                              . 13
tx$(24)="Bueno, ya sabes jugar, as"+i$+" que a la carga, "+ad$+"y no te desanimes!    "  '<- Buen consejo!   .896
DIM Figure (4,20,1)                        'esto tiene toda la pinta de ser                                  .813
READ Figure (1,0,0)                        'el texto de las instrucciones.                                   .562
FOR a=1 TO 16:READ Figure (1,a,0):READ Figure (1,a,1):NEXT                                                   .303
READ Figure (2,0,0)                                                                                          . 25
FOR a=1 TO 13:READ Figure (2,a,0):READ Figure (2,a,1):NEXT                                                   .734
READ Figure (3,0,0)                                                                                          .791
FOR a=1 TO 5:READ Figure (3,a,0):READ Figure (3,a,1):NEXT                                                    .512
READ Figure (4,0,0)                                                                                          .558
FOR a=1 TO 19:READ Figure (4,a,0):READ Figure (4,a,1):NEXT                                                   .681
DIM card$ (40)                                                                                               .759
FOR a=1 TO 40:READ card$(a):NEXT                                                                             . 27
DIM Npalo$(4)                                                                                                .574
FOR a=1 TO 4:READ Npalo$(a):NEXT                                                                             .807
DIM Nvalor$(12)                                                                                              .354
FOR a=1 TO 12:READ Nvalor$(a):NEXT                                                                           .969
                      'Codificacion vectorial 2D                                                             .651
                      'de las figuras de los palos
DATA 16,  2,10, 3,7, 2,8, 1,8, 0,6, 1,4, 3,2, 4,0, 5,2, 7,4, 8,6, 7,8, 6,8, 5,7, 6,10, 2,10                  .464
DATA 13,  4,10, 2,7, 0,4, 0,2, 1,0, 3,0, 4,2, 5,0, 7,0, 8,2, 8,4, 6,8, 4,10                                  . 86
DATA 5,   4,10, 0,5, 4,0, 8,5, 4,10                                                                          .187
DATA 19,  2,10, 3,6.5, 1.7, 0,6, 0,4, 1.5,3, 3,3.5, 2,1.5, 3,0, 5,0, 6,1.5,                                  .406
    5,3.5, 6.5,3, 8,4, 8,6, 7,7, 5,6.5, 6,10, 3,10
DATA A1,21,31,41,51,61,71,J1,Q1,K1                                                                           . 88
DATA A2,22,32,42,52,62,72,J2,Q2,K2         'la codificacion de las cartas                                    . 19
DATA A3,23,33,43,53,63,73,J3,Q3,K3         'con su "nombre" y palo (1-4)                                     .417
DATA A4,24,34,44,54,64,74,J4,Q4,K4                                                                           .109
DATA PICAS,CORAZONES,ROMBOS,TREBOLES                                                                         . 75
DATA AS,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,---,---,SOTA,REINA,REY                                              .600
                                           'nombres de los palos y de                                        .307
PALETTE 0,.5,.5,1                          'las cartas en spanish.                                           .461
PALETTE 3,0,.5,0                                                                                             .766
WINDOW 1,"",(4,11)-(627,150),18,-1         'abre ventana, dibuja todo                                        .279
COLOR 1,3:CLS                              'y empieza lo bueno                                               .577
DrawMazo                                                                                                     .286
DrawButtons                                                                                                  .876
COLOR 2,3:LOCATE 17,39                                                                                       .287
PRINT "Solitario - (C)1989 KB systems Software";                                                             .206
SCROLL (288,128)-(640,137),0,2             'quedaba un poco descolocado                                      .302
COLOR 1,0                                                                                                    .496
FirstStart:                                                                                                  .201
 WHILE MOUSE(0)<>0:WEND                                                                                      .797
 WHILE MOUSE(0)=0:WEND                                                                                       .235
 IF MOUSE(1)>367 AND MOUSE(1)<469 AND MOUSE(2)>94 AND MOUSE(2)<120 THEN                                      .780
    CALL InvertEMP                                                                                           .555
    FOR r=1 TO 200:NEXT                    'a empezar                                                        .748
    CALL InvertEMP                                                                                           .555
    GOTO 2                                                                                                   .754
    END IF                                                                                                   .956
 IF MOUSE(1)>553 AND MOUSE(1)<603 AND MOUSE(2)>94 AND MOUSE(2)<120 THEN                                      .215
    CALL InvertOff                                                                                           .369
    WINDOW CLOSE 1                         'se harto de jugar                                                .632
    SYSTEM                                                                                                   .511
    END IF                                                                                                   .956
 IF MOUSE(1)>447 AND MOUSE(1)<534 AND MOUSE(2)>94 AND MOUSE(2)<120 THEN                                      .394
    CALL InvertINS                                                                                           .998
    GOSUB Instrucciones                    'quiere aprender a jugar                                          .881
    END IF                                                                                                   .956
 GOTO FirstStart                                                                                             .685
2 LINE (228,40)-(400,48),3,bf                                                                                .365
  COLOR 1,0                                                                                                  .290
  GOTO CardSetting                                                                                           .735
Choose:                                                                                                      .424
 IF MOUSE(2) >16 AND MOUSE(2) <69 THEN    'calculo de la eleccion (1-8)                                      .922
    lastcl%=cl%                                                                                              .  6
    x0=MOUSE(1):cl%=(x0+25)/70            'de cartas                                                         .375
    IF cl%=0 THEN cl%=1                                                                                      .474
    IF cl%=9 THEN cl%=8                                                                                      .613
       IF palo%(cl%)=0 THEN RETURN                                                                           .597
    LOCATE 11:COLOR 2,3                                                                                      .269
    PRINT " ";Nvalor$(valor%(cl%));" DE ";Npalo$(palo%(cl%));                                                .592
    SingCard cl%-1                         'marca la carta debajo                                            .241
 END IF                                                                                                      .410
 RETURN                                                                                                      .113
CardSetting:                                                                                                 .297
a%=21+INT(RND(1)*20)                       'baraja el mazo mas o menos...                                    .400
Shuffle a%                                                                                                   .961
nc%=40:ncm%=0:m%=0                                                                                           .522
FOR a=1 TO 8                                                                                                 .273
 nc%=nc%-1:ncm%=ncm%+1                                                                                       .  4
 c$=card$(a):place%=a-1                    'ya poniendo las ocho cartas                                      .385
 DrawCard c$,place%                        'para empezar                                                     .474
 palo%(a)=VAL(MIS$(c$,2,1))                                                                                  .330
 a$=LEFT$(c$,1)                                                                                              .981
 valor%(a)=VAL(a$)                                                                                           .145
 IF a$="A" THEN valor%(a)=1                                                                                  .961
 IF a$="J" THEN valor%(a)=10               'otra vez asigna valores reales                                   . 46
 IF a$="Q" THEN valor%(a)=11               'a las cartas codificadas                                         .784
 IF a$="K" THEN valor$(a)=12                                                                                 .574
NEXT                                                                                                         . 61
FirstPlay:                                                                                                   . 66
  LINE (0,80)-(630,88),3,bf                                                                                  .816
 IF m%=18 THEN GOTO Fin                                                                                      .910
  WHILE MOUSE(0)<>0:WEND                                                                                     .334
  WHILE MOUSE(0)=0:WEND                                                                                      .597
  IF MOUSE (1)>69 AND MOUSE (1)<226 AND MOUSE (2)>93 AND MOUSE (2)<105 THEN                                  . 56
     CALL InvertSRR:GOTO SRRPlay           'se juega un trio...                                              .885
  END IF                                                                                                     .700
  IF MOUSE(1)>247 AND MOUSE(1)<349 AND MOUSE (2)>94 AND MOUSE(2)<120 THEN                                    .130
     CALL InvertACA                                                                                          .810
     FOR r=1 TO 200:NEXT                   'el usuario pulsa acabar                                          .247
     CALL InvertACA                        'y se le pone en condiciones                                      .741
     LINE (0,0)-(588,87),3,bf              'de jugar de nuevo o                                              .524
     LINE (592,56)-(640,76),3,bf           'abandonar                                                        .844
     GOTO FirstStart                                                                                         .801
     END IF                                                                                                  .526
  IF MOUSE(2)<17 OR MOUSE(2)>68 THEN GOTO FirstPlay                                                          .231
  GOSUB Choose                                                                                               .957
  palo1%=palo%(cl%)                        'el raton sobre una de las                                        .526
  valor1%=valor%(cl%)                      'ocho cartas. A ver sobre cual                                    .239
  cl1=cl%                                                                                                    . 25
SecondPlay:                                                                                                  .828
  WHILE MOUSE(0)<>0:WEND                                                                                     .334
  WHILE MOUSE(0)=0:WEND                                                                                      .597
  IF MOUSE (1)>15 AND MOUSE(1)<56 AND MOUSE(2)>110 AND MOUSE(2)<120 THEN                                     .584
     InvertREP                                                                                               .600
     FOR r=1 TO 200:NEXT                   'se ha equivocado y se le                                         .210
     InvertREP                             'deja elegir de nuevo otra                                        .309
     CALL EraseLine                        'primera carta para su pareja                                     .152
     LOCATE 8,1                                                                                              . 40
     GOTO FirstPlay                                                                                          .804
     END IF                                                                                                  .526
  IF MOUSE (1)>69 AND MOUSE (1)<226 AND MOUSE (2)>93 AND MOUSE (2)<105 THEN                                  . 56
     CALL InvertSRR:GOTO FirstPlay                                                                           .356
  END IF                                                                                                     .700
  IF MOUSE (1)>15 AND MOUSE(1)<56 AND MOUSE(2)>94 AND MOUSE(2)<104 THEN                                      .453
     CALL InvertCON:COLOR 2,3                                                                                .507
     PRINT " CON";:GOTO 1                  'pulsa el boton "CON" y se le                                     .515
     END IF                                'deja elegir la otra carta                                        .721
  GOTO SecondPlay                                                                                            .879
1 WHILE MOUSE(0)<>0:WEND                                                                                     .369
  WHILE MOUSE(0)=0:WEND                                                                                      .597
  IF MOUSE (1)>15 AND MOUSE(1)<56 AND MOUSE(2)>110 AND MOUSE(2)<120 THEN                                     .584
     InvertREP                                                                                               .600
     FOR r=1 TO 200:NEXT                   'se ha vuelto a equivocar,                                        .932
     InvertREP                             'ha pulsado "REP"                                                 .662
     CALL EraseLine                                                                                          .362
     LOCATE 8,1:InvertCON                                                                                    .561
     GOTO FirstPlay                                                                                          .804
     END IF                                                                                                  .526
 IF MOUSE(2)<17 OR MOUSE(2)>68 THEN GOTO 1                                                                   .546
  GOSUB Choose                                                                                               .957
  InvertCON                                                                                                  .668
  IF cl%=lastcl% THEN GOTO chapu           'si no, es que ha elegido su                                      .634
  IF valor%=cl%)+valor1%=8 THEN            'segunda carta. Si suma ocho                                      .749
     n%=cl%-1:EraseCard n%                 'con la otra, vale y sigue                                        .657
     n%=cl1-1:EraseCard n%                 'A menos que las dos cartas                                       .616
     PopCard cl%                           'sean la misma: un cuatro                                         .179
     PopCard n%+1                                                                                            .509
     m%=m%+1                                                                                                 .896
  END IF                                                                                                     .700
chapu: LOCATE 8,1:EraseLine                'si no, a elegir de nuevo.                                        .469
 GOTO FirstPlay                                                                                              .502
SRRPlay:                                   'juega un trio del mismo palo                                     .331
 WHILE MOUSE(0)<>0:WEND                                                                                      .797
 WHILE MOUSE(0)=0:WEND                                                                                       .235
 IF MOUSE (1)>15 AND MOUSE(1)<56 AND MOUSE(2)>110 AND MOUSE(2)<120 THEN                                      .552
    InvertREP                                                                                                .238
    FOR r=1 TO 200:NEXT                    'pues no, ha vuelto a cambiar                                     .570
    InvertREP                              'de idea... (REP)                                                 .366
    InvertSRR                                                                                                .233
    CALL EraseLine                                                                                           .138
    LOCATE 8,1                                                                                               .503
    GOTO FirstPlay                                                                                           .580
    END IF                                                                                                   .956
 IF MOUSE(2)<108 OR MOUSE(2)>123 THEN GOTO SRRPlay                                                           .891
 c%=(MOUSE(1)-42)/38                                                                                         . 84
 IF c%<1 OR c%>4 THEN GOTO SRRPlay         'de que palo se supone que hay                                    . 41
 cl%=0:c2%=0:c3%=0                         'un trio?                                                         .921
 FOR a=1 TO 8                                                                                                .182
  IF palo%(a)=c% AND valor%(a)=10 THEN cl%=a                                                                 .174
 NEXT                                                                                                        .423
 FOR a=1 TO 8                                'comprueba dando tres pasadas                                   .552
  IF palo%(a)=c% AND valor%(a)=11 THEN c2%=a 'a las cartas de pantalla                                       .985
 NEXT                                                                                                        .423
 FOR a=1 TO 8                                                                                                .182
  IF palo%(a)=c% AND valor%(a)=12 THEN c3%=a                                                                 .667
 NEXT                                                                                                        .423
 IF cl%=0 OR c2%=0 OR c3%=0 THEN CALL InvertSRR:GOTO FirstPlay                                               .884
 InvertSRR                                                                                                   .767
 EraseCard cl%-1                           'despues del obligado analisis                                    .537
 EraseCard c2%-1                           'decide que si hay un trio del                                    .856
 EraseCard c3%-1                           'mismo palo en pantalla, borra                                    .421
 PopCard c1%                               'las tres cartas, saca otras                                      .151
 PopCard c2%                               'tres y a seguir jugando                                          .649
 PopCard c3%                                                                                                 .185
 m%=m%+1                                                                                                     . 84
 GOTO FirstPlay                                                                                              .502
Fin:                                                                                                         . 91
 LOCATE 6:COLOR 2,3                        'se han acabado las cartas del                                    .547
 PRINT PTAB(228);"JUEGO TERMINADO"         'mazo y se termino el juego.                                      .698
 COLOR 1,3                                                                                                   .741
 GOTO FirstStart                           'Hace otra partidita?                                             .844
Instrucciones:                             'Unos cuantos dibujos y se                                        .589
 LINE (10,5)-(575,83),1,bf                 'presenta en pantalla la                                          . 61
 LINE (8,4)-(576,83),0,b                   '"ventana" de instrucciones                                       .290
 LINE (9,4)-(577,83),0,b                                                                                     . 23
 LINE (10,84)-(580,84),2                                                                                     .208
 LINE (579,5)-(580,83),2,bf                                                                                  .443
 LINE (10,19)-(575,19),0                                                                                     .959
 LINE (549,5)-(550,83),0,bf                                                                                  .468
 LINE (553,6)-(573,17),0,b                                                                                   .244
 LINE (554,6)-(572,17),0,b                                                                                   .814
 LINE (560,10)-(566,13),2,bf                                                                                 . 93
 LINE (551,46)-(575,46),0                                                                                    .339
 AREA (553,43):AREA (563,22):AREA (573,43)                                                                   .523
 AREA (553,43):COLOR 0,0:AREAFILL                                                                            .834
 LINE (551,56)-(575,56),0                                                                                    .986
 AREA (553,59):AREA (573,59):AREA (563:80)                                                                   .781
 AREA (553,59):AREAFILL                                                                                      .978
 LOCATE 2,3:COLOR 2,1                                                                                        .647
 PRINT "  INSTRUCCIONES:"                                                                                    .905
y%=1:LOCATE 7:PRINT PTAB(555);"1"                                                                            .104
FOR a=1 TO 7                                                                                                 .266
 LOCATE 3+a,3:PRINT tx$(a)                                                                                   . 17
NEXT                                                                                                         . 61
Control:                                   'Vigila la pulsacion de los                                       .986
 WHILE MOUSE(0)<>0:WEND                    'controles de scroll o salida                                     .911
 WHILE MOUSE(0)=0:WEND                                                                                       .235
 IF MOUSE(1)<551 OR MOUSE(1)>575 THEN GOTO Control                                                           .989
 IF MOUSE(2)>4 AND MOUSE(2)<19 THEN                                                                          .267
    CALL InvertOF2:FOR r=1 TO 100:NEXT:CALL InvertOF2                                                        .738
    LINE (8,4)-(580,84),3,bf                                                                                 .998
    CALL InvertINS                         'sale de las instrucciones                                        .  8
    GOTO FirstStart                                                                                          .232
    END IF                                                                                                   .956
 IF MOUSE(2)>19 AND MOUSE(2)<46 THEN                                                                         .828
    CALL InvertUP:FOR r=1 TO 100:NEXT:CALL InvertUP                                                          .226
    IF y%>1 THEN y%=y%-1:GOSUB RefreshDOWN                                                                   . 92
    EMD IF                                 'scroll abajo                                                     .550
 IF MOUSE(2)>56 AND MOUSE(2)<83 THEN                                                                         . 83
    CALL InvertDWN:FOR r=1 TO 100:NEXT:CALL InvertDWN                                                        .599
    IF y%<18 THEN y%=y%+1:GOSUB RefreshUP                                                                    .288
    END IF                                 'scroll arriba                                                    .591
 GOTO Control                                                                                                .601
RefreshUP:                                                                                                   .507
 y$=MID$(STR$(y%),2)                       'toma una linea de texto                                          .864
 LINE (551,47)-(575,55),1,bf               'y hace scroll                                                    .110
 LOCATE 7:PRINT PTAB(555);y$                                                                                 .447
 SCROLL (16,24)-(544,80),0,-8                                                                                .343
 LOCATE 10,3:PRINT tx$(y%+6)                                                                                 .549
 RETURN                                                                                                      .113
RefreshDOWN:                               'igual en la otra direccion                                       .385
 y$=MID$(STR$(y%),2)                                                                                         .516
 LINE (551,47)-(575,55),1,bf                                                                                 .996
 LOCATE 7:PRINT PTAB(555);y$                                                                                 .447
 SCROLL (16,23)-(544,79),0,8                                                                                 .836
 LOCATE 4,3:PRINT tx$(y%)                                                                                    .860
 RETURN                                                                                                      .113
Numero de lineas: 499

Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal