'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'
' CONSISTE EN ELIMINAR TODAS LAS PIEZAS DEL TABLERO
' PARA HACERLO SE DESPLAZAN FILAS ENTERAS PARA QUE COINCIDAN COMO
' MINIMO CUATRO DEL MISMO COLOR Y SE ELIMINEN
' PARA CAMBIAR ENTRE MODO DE MOVIMIENTO DEL CURSOR Y MODO
' DE DESPLAZAMIENTO DE FILAS PULSAR LA TECLA <ESPACIO>
' PARA MOVER EL CURSOR O DESPLAZAR FILAS, SEGUN CORRESPONDA, PULSAR <FLECHAS>
'
'
DECLARE SUB buscar ()
DECLARE SUB boton (h!, v!, l!, a!, sol!, sombra!, cara!, bord!)
DIM mat1(1 TO 32)
DIM mat2(1 TO 4096)
RANDOMIZE TIMER
SCREEN 13
boton 0, 0, 220, 200, 15, 8, 7, 0
boton 8, 8, 204, 184, 8, 15, 7, 7
FOR h = 10 TO 190 STEP 20
   FOR v = 10 TO 172 STEP 18
      c = (INT(RND * 6) * 4) + 32
      boton h, v, 20, 18, c + 48, c + 120, c, 7
   NEXT
NEXT
h = 10
v = 10
COLOR 44
LOCATE 2, 35
PRINT 0
LOCATE 24, 29
COLOR 48
PRINT "Recorrer ";
modo = 1
buscar
DO
   IF modo = 1 THEN
      c = POINT(h + 10, v + 10)
      PSET (h + 10, v + 9), c + 96: DRAW "nd5nl6nu5r6"
      PSET (h + 10, v + 9), c: DRAW "ndnlnur"
      PSET (h + 10, 7), 45: DRAW "l3e3f3l3bup45,45"
      PSET (h + 10, 193), 45: DRAW "l3f3e3l3bdp45,45"
      PSET (7, v + 9), 45: DRAW "d3h3e3d3blp45,45"
      PSET (213, v + 9), 45: DRAW "d3e3h3d3brp45,45"
      DO
         kbd$ = INKEY$
      LOOP WHILE kbd$ = ""
      c = POINT(h + 10, v + 10)
      IF c = 7 THEN
         boton h, v, 20, 18, 8, 15, 7, 7
      ELSE
         boton h, v, 20, 18, c + 48, c + 120, c, 7
      END IF
      PAINT (7, v + 9), 7, 7
      PAINT (213, v + 9), 7, 7
      PAINT (h + 10, 7), 7, 7
      PAINT (h + 10, 193), 7, 7
      SELECT CASE kbd$
         CASE CHR$(0) + "H": IF v > 10 THEN v = v - 18
         CASE CHR$(0) + "P": IF v < 172 THEN v = v + 18
         CASE CHR$(0) + "K": IF h > 10 THEN h = h - 20
         CASE CHR$(0) + "M": IF h < 190 THEN h = h + 20
         CASE " "
            LOCATE 24, 29
            COLOR 41
            PRINT "Desplazar";
            modo = 2
            PSET (h + 10, 7), 40: DRAW "l4e4f4l4bup40,40"
            PSET (h + 10, 193), 40: DRAW "l4f4e4l4bdp40,40"
            PSET (7, v + 9), 40: DRAW "d4h4e4d4blp40,40"
            PSET (213, v + 9), 40: DRAW "d4e4h4d4brp40,40"
      END SELECT
   ELSE
      SOUND 2700, .4
      DO
         kbd$ = INKEY$
      LOOP WHILE kbd$ = ""
      SELECT CASE kbd$
         CASE CHR$(0) + "H"
            FOR n = 1 TO 18
               GET (h, 10)-(h + 19, 10), mat1
               GET (h, 11)-(h + 19, 190), mat2
               PUT (h, 10), mat2, PSET
               PUT (h, 189), mat1, PSET
            NEXT
         CASE CHR$(0) + "P"
            FOR n = 1 TO 18
               GET (h, 189)-(h + 19, 189), mat1
               GET (h, 10)-(h + 19, 188), mat2
               PUT (h, 11), mat2, PSET
               PUT (h, 10), mat1, PSET
            NEXT
         CASE CHR$(0) + "K"
            FOR n = 1 TO 20
               GET (10, v)-(10, v + 17), mat1
               GET (11, v)-(209, v + 17), mat2
               PUT (10, v), mat2, PSET
               PUT (209, v), mat1, PSET
            NEXT
         CASE CHR$(0) + "M"
            FOR n = 1 TO 20
               GET (209, v)-(209, v + 17), mat1
               GET (10, v)-(208, v + 17), mat2
               PUT (11, v), mat2, PSET
               PUT (10, v), mat1, PSET
            NEXT
         CASE " "
            LOCATE 24, 29
            COLOR 48
            PRINT "Recorrer ";
            modo = 1
            PAINT (7, v + 9), 7, 7
            PAINT (213, v + 9), 7, 7
            PAINT (h + 10, 7), 7, 7
            PAINT (h + 10, 193), 7, 7
      END SELECT
      buscar
   END IF
LOOP UNTIL kbd$ = CHR$(27)

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
SUB boton (h, v, l, a, sol, sombra, cara, borde)
LINE (h, v)-STEP(l, a), borde, B
LINE (h + 1, v + 1)-STEP(l - 2, a - 2), sol, B
LINE (h + 2, v + 2)-STEP(l - 3, a - 3), sombra, B
LINE (h + 2, v + 2)-STEP(l - 4, a - 4), cara, BF
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
'
'
SUB buscar
   algo = 0
   WHILE kbd$ <> "": WEND
   FOR h = 12 TO 192 STEP 20
      FOR v = 12 TO 174 STEP 18
         c = POINT(h, v)
         IF c <> 7 THEN
            IF POINT(h + 20, v) = c AND POINT(h + 40, v) = c AND POINT(h + 60, v) = c THEN
               boton h - 2, v - 2, 20, 18, c + 120, c + 48, c, 7
               boton h + 18, v - 2, 20, 18, c + 120, c + 48, c, 7
               boton h + 38, v - 2, 20, 18, c + 120, c + 48, c, 7
               boton h + 58, v - 2, 20, 18, c + 120, c + 48, c, 7
               algo = 1
            END IF
            IF POINT(h, v + 18) = c AND POINT(h, v + 36) = c AND POINT(h, v + 54) = c THEN
               boton h - 2, v - 2, 20, 18, c + 120, c + 48, c, 7
               boton h - 2, v + 16, 20, 18, c + 120, c + 48, c, 7
               boton h - 2, v + 34, 20, 18, c + 120, c + 48, c, 7
               boton h - 2, v + 52, 20, 18, c + 120, c + 48, c, 7
               algo = 1
            END IF
            IF POINT(h + 20, v + 18) = c AND POINT(h + 40, v + 36) = c AND POINT(h + 60, v + 54) = c THEN
               boton h - 2, v - 2, 20, 18, c + 120, c + 48, c, 7
               boton h + 18, v + 16, 20, 18, c + 120, c + 48, c, 7
               boton h + 38, v + 34, 20, 18, c + 120, c + 48, c, 7
               boton h + 58, v + 52, 20, 18, c + 120, c + 48, c, 7
               algo = 1
            END IF
            IF POINT(h + 20, v - 18) = c AND POINT(h + 40, v - 36) = c AND POINT(h + 60, v - 54) = c THEN
               boton h - 2, v - 2, 20, 18, c + 120, c + 48, c, 7
               boton h + 18, v - 20, 20, 18, c + 120, c + 48, c, 7
               boton h + 38, v - 38, 20, 18, c + 120, c + 48, c, 7
               boton h + 58, v - 56, 20, 18, c + 120, c + 48, c, 7
               algo = 1
            END IF
         END IF
      NEXT
   NEXT

   IF algo > 0 THEN
      puntos = 0
      SOUND 2000, 3
      FOR h = 11 TO 191 STEP 20
         FOR v = 11 TO 173 STEP 18
            IF POINT(h, v) > 100 THEN
               SOUND 500, 1
               SOUND 300, 2
               boton h - 1, v - 1, 20, 18, 8, 15, 7, 7
            END IF
            IF POINT(h + 10, v + 10) = 7 THEN puntos = puntos + 1
         NEXT
      NEXT
      COLOR 44
      LOCATE 2, 35
      PRINT puntos
      IF puntos = 100 THEN
         LOCATE 22, 29
         COLOR 36
         PRINT "Conseguido";
      END IF
   END IF
END SUB

