'  © JM. :: Hecho en Ronda
'  Procedente de...           es.geocities.com/jm00092
'______________________________________________________________________
'                                                           
'  ÛßÛ ÛßÛ ÛßÛ ÛßÛ     ÛßÛ ÛßÛ ÛßÛ ÛßÛ ÛßÛ ÛßÛ     ÛßÛ      
'  ßßß ßßß ßßß ßßß     ßßß ßßß ßßß ßßß ßßß ßßß     ßßß      
'      ÛßÛ                 ÛßÛ                     ÛßÛ      
'      ßßß                 ßßß                     ßßß    
'      ÛßÛ     ÛßÛ ÛßÛ     ÛßÛ     ÛßÛ ÛßÛ ÛßÛ     ÛßÛ     ÛßÛ ÛßÛ ÛßÛ
'      ßßß     ßßß ßßß     ßßß     ßßß ßßß ßßß     ßßß     ßßß ßßß ßßß
'      ÛßÛ     ÛßÛ         ÛßÛ     ÛßÛ     ÛßÛ     ÛßÛ     ÛßÛ
'      ßßß     ßßß         ßßß     ßßß     ßßß     ßßß     ßßß
'      ÛßÛ     ÛßÛ ÛßÛ     ÛßÛ     ÛßÛ ÛßÛ ÛßÛ     ÛßÛ     ÛßÛ ÛßÛ ÛßÛ
'      ßßß     ßßß ßßß     ßßß     ßßß ßßß ßßß     ßßß     ßßß ßßß ßßß
'              ÛßÛ                 ÛßÛ ÛßÛ                         ÛßÛ
'              ßßß                 ßßß ßßß                         ßßß
'              ÛßÛ ÛßÛ ÛßÛ ÛßÛ     ÛßÛ     ÛßÛ     ÛßÛ ÛßÛ ÛßÛ ÛßÛ ÛßÛ
'              ßßß ßßß ßßß ßßß     ßßß     ßßß     ßßß ßßß ßßß ßßß ßßß
'
'              H   E   C   H   O        E   N        R   O   N   D   A
'
'
DECLARE SUB pantallasombras (p!)
DECLARE SUB salida ()
DECLARE SUB NIVELES (p!)
DECLARE SUB pausa ()
DECLARE SUB CAMBIOSONIDO ()
DECLARE SUB cambiacolor (c!)
DECLARE SUB entrada ()
DECLARE SUB gameover ()
DECLARE SUB buscalineas ()
DECLARE SUB posible (h!, v!, cadena$)
DECLARE SUB piezas (n!, g!)
DECLARE SUB bot (h!, v!)
DECLARE SUB BORRA (h!, v!, cadena$)
DECLARE SUB PIEZA (h!, v!, cadena$)
DECLARE SUB PANTALLA ()
DECLARE SUB boton (h!, v!, l!, A!, sol!, sombra!, cara!, BORDE!)
DECLARE SUB flecha (h!, v!, d$, l!, c!)
DECLARE SUB AYUDA ()
RANDOMIZE TIMER

DIM SHARED zonadejuego(1 TO 5000)
DIM SHARED marcadores(1 TO 3000)


 SCREEN 7

entrada


EMPEZAR:
CLEAR
modo = 0
TIMER OFF
AYUDA
PANTALLA
CAMBIOSONIDO
TIMER ON: ON TIMER(1) GOSUB HORA
INICIO = TIMER

nnn = INT(RND * 7) + 1
IF nnn = 8 THEN : nnn = 7
piezas nnn, 1
NIVELES 0
DO


   col = 80
   lin = 10
   acol = 80
   alin = 10

   nnn = INT(RND * 7) + 1
   IF nnn = 8 THEN : nn = 7

   piezas nn, 1
   posible 80, 10, cadena$
   IF posibilidad = 0 THEN : gameover: GOSUB EMPEZAR
   PIEZA col, lin, cadena$
   LINE (190, 50)-(230, 70), 0, BF
   piezas nnn, 1
   PIEZA 190, 50, cadena$
   piezas nn, 1
   nn = nnn
   g = 1
   DO

tecla:


      kbd$ = ""
      ti = 0
      DO
         kbd$ = INKEY$
      LOOP WHILE kbd$ = "" XOR ti = 1

      FOR A = 54 TO 150 STEP 30
         boton 14, A, 20, 20, 15, 9, 18, 0
      NEXT


      IF kbd$ = "" THEN : kbd$ = CHR$(0) + "P"

      BORRA col, lin, cadena$
      SELECT CASE kbd$


            'pantalla
            CASE "X": pantallasombras puntos
            CASE "x": pantallasombras puntos



            'COLORES
               CASE IS = "1"
                    cambiacolor 1
               CASE IS = "2"
                    cambiacolor 2
               CASE IS = "3"
                    cambiacolor 3
               CASE IS = "4"
                    cambiacolor 4
               CASE IS = "5"
                    cambiacolor 5
               CASE IS = "6"
                    cambiacolor 6
               CASE IS = "7"
                    cambiacolor 7
                              
               CASE IS = "S"
                    CAMBIOSONIDO
               CASE IS = "s"
                    CAMBIOSONIDO


               CASE IS = "P"
                    pausa
               CASE IS = "p"
                    pausa

            'ARRIBA
            
                CASE CHR$(0) + "H"
                    acad$ = cadena$
                    ALARGO = LARGO
                    AALTO = ALTO
                    boton 14, 54, 20, 20, 9, 15, 18, 1
                    g = g + 1:
                    IF g > 4 THEN : g = 1
                    piezas na, g
                    posible col, lin, cadena$
                    IF posibilidad = 1 THEN : :  ELSE : cadena$ = acad$: g = g - 1: ALTO = AALTO: LARGO = ALARGO
                    LARGO = LARGO
                    ALTO = ALTO
               

            'ABAJO
                CASE CHR$(0) + "P": lin = lin + 10
                IF ti = 0 THEN : boton 14, 144, 20, 20, 9, 15, 16, 1
                
            'IZQUIERDA
                CASE CHR$(0) + "K": col = col - 10
              
               
                    boton 14, 114, 20, 20, 9, 15, 18, 1
            
            'DERECHA
                CASE CHR$(0) + "M": col = col + 10
                boton 14, 84, 20, 20, 9, 15, 18, 1

               END SELECT
               IF lin < 10 THEN : lin = 10
               IF col < 50 THEN : col = 50
               'IF lin > 190 - alto THEN : lin = 190 - alto
               IF col > 140 - LARGO THEN : col = 140 - LARGO
            
             BORRA acol, alin, cadena$
             posibilidad = 1
               posible col, lin, cadena$
           

               baja = 0
              
               IF lin = alin THEN : :  ELSE : baja = 1


           IF posibilidad = 1 THEN :  ELSE col = acol: lin = alin
                 PIEZA col, lin, cadena$
           acol = col
           alin = lin
        


   LOOP UNTIL kbd$ = CHR$(27) XOR (baja - posibilidad) = 1

   IF kbd$ = CHR$(27) THEN : gameover
   TIMER OFF
   FOR A = 500 TO 1500 STEP 10
      IF SONIDO THEN : SOUND 2000 - A, .06
   NEXT
   TIMER ON
   baja = 0
   buscalineas
   col = 80
   lin = 10
   acol = 80
   alin = 10

LOOP UNTIL kbd$ = CHR$(27)

GOSUB EMPEZAR


HORA:
ti = 1
SELECT CASE c
   CASE 0: c = 1: IF SONIDO THEN : SOUND 900, .5
   CASE 1: c = 0: IF SONIDO THEN : SOUND 700, .5
END SELECT
WHILE INKEY$ <> "": WEND

difer = INT(TIMER - INICIO)

minutos = INT(difer / 60)
segundos = difer MOD 60


LOCATE 23, (37 - LEN(minutos) - LEN(segundos) + 3): PRINT STR$(minutos); ":"; MID$(STR$(segundos), 2, 2)
IF segundos < 10 AND minutos < 10 THEN : LOCATE 23, 36: PRINT " "
IF segundos < 10 AND minutos > 10 THEN : LOCATE 23, 37: PRINT " "
RETURN

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB AYUDA
PALETTE 10, 10
PALETTE 14, 14
COLOR 11
LINE (0, 0)-(320, 200), 14, BF

FOR h = 10 TO 300 STEP 20
   FOR v = 10 TO 180 STEP 20
      PSET (h, v), 10
      DRAW "R2NRL1D4BR2U2NRD2NRD2RNR2BR2BU2U4L1R2NR3BRBD2D4U2R2U2L2D2F2BR2BU2U4BR2BD2NR2D2R2D2L4"
   NEXT
NEXT
FOR A = 0 TO 15
   PALETTE A, A
NEXT

LINE (26, 162)-(295, 195), 6, BF
LINE (21, 157)-(290, 190), 0, B
LINE (22, 158)-(289, 189), 9, BF
LINE (24, 159)-(287, 159), 0                          '
LOCATE 21, 4: PRINT "  CAMBIO DE COLORES EN PANTALLA  "
COLOR 8
c = 0
p = 4
FOR A = 50 TO 270 STEP 32
   c = c + 1
   p = p + 4
   boton A, 170, 19, 17, 15, c, c + 8, 0
   IF A = 242 THEN : boton 242, 170, 19, 17, 15, 8, 7, 0
   LOCATE 23, p: PRINT MID$(STR$(c), 2, 1)
   IF A = 242 THEN : c = -1
   FOR HH = A + 6 TO A + 13
      FOR VV = 176 TO 183
         IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), c + 8
      NEXT
   NEXT
NEXT


COLOR 11
LINE (26, 114)-(95, 147), 6, BF
LINE (21, 109)-(90, 142), 0, B
LINE (22, 110)-(89, 141), 9, BF
LINE (24, 111)-(87, 111), 0
LOCATE 15, 4: PRINT " SONIDO "
boton 50, 122, 19, 17, 15, 8, 7, 0
COLOR 8: LOCATE 17, 8: PRINT "S"
FOR HH = 56 TO 63
   FOR VV = 128 TO 135
      IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), 7
   NEXT
NEXT


COLOR 11
LINE (106, 114)-(167, 147), 6, BF
LINE (101, 109)-(162, 142), 0, B
LINE (102, 110)-(161, 141), 9, BF
LINE (104, 111)-(159, 111), 0
LOCATE 15, 14: PRINT " PAUSA "
boton 122, 122, 19, 17, 15, 8, 7, 0
COLOR 8: LOCATE 17, 17: PRINT "P"
FOR HH = 128 TO 135
   FOR VV = 128 TO 135
      IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), 7
   NEXT
NEXT

COLOR 11
LINE (179, 90)-(295, 147), 6, BF
LINE (173, 85)-(290, 142), 0, B
LINE (174, 86)-(289, 141), 9, BF
LINE (176, 87)-(287, 87), 0
LOCATE 12, 23: PRINT " PRESENTACI¢N "
boton 258, 122, 19, 17, 15, 8, 7, 0
COLOR 8: LOCATE 17, 34: PRINT "X"
boton 258, 98, 19, 17, 15, 8, 7, 0
COLOR 8: LOCATE 14, 34: PRINT "Z"
FOR HH = 264 TO 271
   FOR VV = 128 TO 135
      IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), 7
   NEXT
NEXT
FOR HH = 264 TO 271
   FOR VV = 104 TO 111
      IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), 7
   NEXT
NEXT
COLOR 15
LOCATE 14, 25: PRINT "RELIEVE"
LOCATE 17, 25: PRINT "SOMBRAS"
  
FOR HH = 192 TO 247
   FOR VV = 128 TO 135
      IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), 9
   NEXT
NEXT
FOR HH = 192 TO 247
   FOR VV = 104 TO 111
      IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), 9
   NEXT
NEXT

COLOR 11
LINE (26, 18)-(127, 100), 6, BF
LINE (21, 13)-(122, 95), 0, B
LINE (22, 14)-(121, 94), 9, BF
LINE (24, 15)-(119, 15), 0
LOCATE 3, 4: PRINT " MOVIMIENTO "
FOR A = 28 TO 80 STEP 16
   boton 28, A, 16, 16, 15, 8, 7, 0
NEXT
COLOR 15
LOCATE 5, 7: PRINT "GIROS"
LOCATE 7, 7: PRINT "DERECHA"
LOCATE 9, 7: PRINT "IZQUIERDA"
LOCATE 11, 7: PRINT "ABAJO"
FOR HH = 48 TO 119
   FOR VV = 32 TO 87
      IF POINT(HH, VV) = 0 THEN : PSET (HH, VV), 9
   NEXT
NEXT
flecha 36, 40, "A", 9, 8
flecha 31, 52, "d", 9, 8
flecha 40, 68, "i", 9, 8
flecha 36, 79, "b", 9, 8

boton 135, 15, 160, 65, 15, 8, 7, 0
boton 147, 27, 120, 16, 8, 15, 0, 7
boton 163, 51, 120, 16, 8, 15, 0, 7
COLOR 10
LOCATE 5, 20: PRINT "ENTER = SEGUIR"
COLOR 12
LOCATE 8, 22: PRINT "ESCAPE = SALIR"

DO

LINE (140, 20)-(290, 75), 7, B
LINE (141, 21)-(289, 74), 12, B
FOR A = 1 TO 800: NEXT
   LINE (141, 21)-(289, 74), 7, B
   LINE (142, 22)-(288, 73), 10, B
   FOR A = 1 TO 800: NEXT
   LINE (142, 22)-(288, 73), 7, B
   LINE (143, 23)-(287, 72), 12, B
   FOR A = 1 TO 800: NEXT
   LINE (143, 23)-(287, 72), 7, B
   LINE (140, 20)-(290, 75), 10, B
   FOR A = 1 TO 800: NEXT

   kbd$ = INKEY$

LOOP UNTIL kbd$ = CHR$(27) XOR kbd$ = CHR$(13)
SELECT CASE kbd$
   CASE CHR$(27): salida
   CASE CHR$(13): EXIT SUB
END SELECT
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB BORRA (h, v, cadena$) STATIC

IF MID$(cadena$, 1, 1) = "1" THEN : bot h, v
IF MID$(cadena$, 2, 1) = "1" THEN : bot h + 10, v
IF MID$(cadena$, 3, 1) = "1" THEN : bot h + 20, v
IF MID$(cadena$, 4, 1) = "1" THEN : bot h + 30, v
IF MID$(cadena$, 5, 1) = "1" THEN : bot h, v + 10
IF MID$(cadena$, 6, 1) = "1" THEN : bot h + 10, v + 10
IF MID$(cadena$, 7, 1) = "1" THEN : bot h + 20, v + 10
IF MID$(cadena$, 8, 1) = "1" THEN : bot h + 30, v + 10
IF MID$(cadena$, 9, 1) = "1" THEN : bot h, v + 20
IF MID$(cadena$, 10, 1) = "1" THEN : bot h + 10, v + 20
IF MID$(cadena$, 11, 1) = "1" THEN : bot h + 20, v + 20
IF MID$(cadena$, 12, 1) = "1" THEN : bot h + 30, v + 20
IF MID$(cadena$, 13, 1) = "1" THEN : bot h, v + 30
IF MID$(cadena$, 14, 1) = "1" THEN : bot h + 10, v + 30
IF MID$(cadena$, 15, 1) = "1" THEN : bot h + 20, v + 30
IF MID$(cadena$, 16, 1) = "1" THEN : bot h + 30, v + 30




END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB bot (h, v) STATIC
LINE (h, v)-(h + 10, v + 10), 0, BF
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB boton (h, v, l, A, sol, sombra, cara, BORDE)
'IF l < 10 THEN : PRINT " ERROR EN DATOS DE LA SUB BOTON ": BEEP: EXIT SUB
'IF A < 10 THEN : PRINT " ERROR EN DATOS DE LA SUB BOTON ": BEEP: EXIT SUB
PSET (h, v)

LINE STEP(l, A)-STEP(-l, -A), BORDE, B
LINE STEP(1, 1)-STEP(0, A - 2), sol
LINE STEP(0, 0)-STEP(l - 2, 0), sombra
LINE STEP(0, 0)-STEP(0, -A + 2), sombra
LINE STEP(-1, 0)-STEP(-l + 3, 0), sol
LINE STEP(1, 1)-STEP(0, A - 4), sol
LINE STEP(0, 0)-STEP(l - 4, 0), sombra
LINE STEP(0, 0)-STEP(0, -A + 4), sombra
LINE STEP(-1, 0)-STEP(-l + 5, 0), sol
IF cara < 16 THEN : LINE STEP(1, 1)-STEP(l - 6, A - 6), cara, BF

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB buscalineas

SHARED puntos
SHARED SONIDO
SHARED modo
FOR v = 20 TO 190 STEP 10
     prueba = 0
          FOR h = 50 TO 130 STEP 10
          IF POINT(h + 5, 200 - v + 5) = 7 THEN : prueba = prueba + 1
     NEXT
    
     IF prueba = 9 THEN
     TIMER OFF
IF modo = 0 THEN
   FOR A = 54 TO 150 STEP 30
      boton 14, A, 20, 20, 1, 1, 1, 1
   NEXT
END IF
PSET (235, 177)
DRAW "c15 e2r6f2d5g2l6h2u5"
PAINT (240, 182), 4, 15
PSET (237, 180), 15
PSET (239, 180), 15
PSET (241, 180), 15
PSET (243, 180), 15
PSET (237, 179), 15
PSET (239, 179), 15
PSET (241, 179), 15
PSET (243, 179), 15


          puntos = puntos + 1
               
               FOR HH = 50 TO 130 STEP 10
                   IF SONIDO THEN : SOUND HH * 3, .7:  ELSE : FOR delay = 1 TO 900: NEXT
                    LINE (HH, 200 - v)-STEP(10, 10), 0, BF
               NEXT
              
               FOR VV = v TO 190 STEP 10
                    FOR HH = 50 TO 130 STEP 10
                         IF POINT(HH + 5, 200 - VV + 5) > 0 THEN
                              bot HH, 200 - VV
                              boton HH, 200 - VV + 10, 10, 10, 15, 8, 7, 0
                              IF SONIDO THEN : SOUND HH * 15, .8:    ELSE : FOR delay = 1 TO 1000: NEXT
                         END IF
                    NEXT
               NEXT
          v = v - 10
             LOCATE 14, 30: PRINT puntos
             NIVELES puntos
     END IF
NEXT


     LOCATE 14, 30: PRINT puntos
WHILE INKEY$ <> "": WEND

FOR A = 54 TO 150 STEP 30
boton 14, A, 20, 20, 15, 9, 1, 0
NEXT

DRAW "bm22,70 c0 c0r4u6r4h6g6r4d6"
PAINT (23, 69), 0, 0
DRAW "bm18,96 c0 r6d4e6h6d4l6d4"
PAINT (19, 94), 0, 0
DRAW "bm18,130 c0 br6h6e6d4r6d4l6d4"
PAINT (19, 124), 0, 0
DRAW "bm18,160 c0 br6h6r4u6r4d6r4g6"
PAINT (25, 158), 0, 0


LINE (235, 175)-(245, 184), 0, BF
              TIMER ON
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB cambiacolor (c)

IF c = 7 THEN
PALETTE 1, 7
PALETTE 9, 8
     ELSE

PALETTE 9, c
PALETTE 1, c + 8

        END IF
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB CAMBIOSONIDO
SHARED SONIDO
SELECT CASE SONIDO
   CASE 0: SONIDO = 1: LOCATE 7, 36: PRINT CHR$(14): boton 162, 170, 20, 20, 9, 15, 16, 1
   CASE 1: SONIDO = 0: LOCATE 7, 36: PRINT " ": boton 162, 170, 20, 20, 15, 9, 16, 0
END SELECT
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB entrada

COLOR 11
PAINT (1, 1), 14

FOR h = 10 TO 300 STEP 20
   FOR v = 10 TO 180 STEP 20
      PSET (h, v), 10
      DRAW "R2NRL1D4BR2U2NRD2NRD2RNR2BR2BU2U4L1R2NR3BRBD2D4U2R2U2L2D2F2BR2BU2U4BR2BD2NR2D2R2D2L4"
   NEXT
NEXT
FOR h = 10 TO 27
   FOR v = 10 TO 20
      IF POINT(h, v) = 10 THEN : boton ((h * 15) - 120), (v * 15) - 130, 15, 15, 15, 8, 7, 0
   NEXT
NEXT

LINE (25, 162)-(305, 195), 6, BF
LINE (20, 157)-(300, 190), 0, B


LINE (21, 158)-(299, 189), 9, BF

LINE (48, 159)-(263, 159), 0

LINE (30, 170)-(290, 180), 6, BF
LINE (35, 175)-(290, 180), 14, BF
LINE (29, 169)-(291, 181), 0, B

LINE (30, 170)-(31, 180), 11, BF
PSET (31, 180), 1

FOR A = 35 TO 290
   IF INT((A - 35) / 2.55) > 9 THEN : LINE (48, 159)-(271, 159), 0
   IF INT((A - 35) / 2.55) = 100 THEN : LINE (48, 159)-(279, 159), 0
   FOR delay = 1 TO 300 - A: NEXT

   LOCATE 21, 7: PRINT " Control de calidad   "; INT((A - 35) / 2.55); "% "
   LINE (A - 3, 170)-(A - 2, 171), 11, BF
   LINE (A - 3, 172)-(A - 2, 178), 9, BF
   LINE (A - 3, 179)-(A - 2, 180), 1, BF
   LINE (A - 1, 170)-(A, 180), 1, BF
   PSET (A - 1, 170), 11
NEXT

SOUND 930, 5
SLEEP 1
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB flecha (h, v, d$, l, c)
SELECT CASE LCASE$(d$)
   CASE "a": PSET (h, v), c: DRAW "c" + STR$(c) + "u" + STR$(l) + "dlr2drl4dlr6"
   CASE "b": PSET (h, v), c: DRAW "c" + STR$(c) + "d" + STR$(l) + "ulr2url4ulr6"
   CASE "i": PSET (h, v), c: DRAW "c" + STR$(c) + "l" + STR$(l) + "rnundrnu2nd2rnu3nd3"
   CASE "d": PSET (h, v), c: DRAW "c" + STR$(c) + "r" + STR$(l) + "lnundlnu2nd2lnu3nd3"
END SELECT

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB gameover
SHARED SONIDO

TIMER OFF
PSET (235, 177)
DRAW "c15 e2r6f2d5g2l6h2u5"
PAINT (240, 182), 4, 15
PSET (237, 180), 15
PSET (239, 180), 15
PSET (241, 180), 15
PSET (243, 180), 15
PSET (237, 179), 15
PSET (239, 179), 15
PSET (241, 179), 15
PSET (243, 179), 15



FOR A = 1 TO 5
   COLOR 14
   LOCATE 17, 22: PRINT "  GAME OVER   "
   IF SONIDO THEN : SOUND 1200, 2
   COLOR 12
   LOCATE 17, 22: PRINT "  GAME OVER   "
   IF SONIDO THEN : SOUND 1000, 1
NEXT
DO
   COLOR 14
   LOCATE 17, 22: PRINT "  GAME OVER   "
   FOR delay = 1 TO 2000: NEXT
   COLOR 12

   LOCATE 17, 22: PRINT "  GAME OVER   "
   FOR delay = 1 TO 2000: NEXT
LOOP WHILE INKEY$ = ""
COLOR 10
LOCATE 17, 22: PRINT " IR A ENTRADA "
DO: LOOP WHILE INKEY$ = ""
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB NIVELES (p) STATIC
SHARED n
SHARED SONIDO
SHARED modo
IF p / 25 = INT(p / 25) THEN
TIMER OFF
n = p / 25

IF modo = 0 THEN
   LINE (47, (186 - (n * 10)))-(146, 196), 1, BF
   boton 47, 7, 96, (186 - (n * 10)), 9, 15, 0, 1
ELSE
   LINE (50, 10)-(140, (190 - (n * 10))), 0, BF
   pantallasombras p
END IF

  
SOUND 200, 2
COLOR 14
IF SONIDO THEN : SOUND 300, 2
LOCATE 3, 9: PRINT "N"
IF SONIDO THEN : SOUND 400, 2
LOCATE 3, 10: PRINT "I"
IF SONIDO THEN : SOUND 500, 2
LOCATE 3, 11: PRINT "V"
IF SONIDO THEN : SOUND 600, 2
LOCATE 3, 12: PRINT "E"
IF SONIDO THEN : SOUND 700, 2
LOCATE 3, 13: PRINT "L"
IF SONIDO THEN : SOUND 800, 2
LOCATE 3, 14: PRINT n + 1
IF SONIDO THEN : SOUND 900, 2
FOR A = 9 TO 16
   IF SONIDO THEN : SOUND 1000 + ((A - 9) * 100), 2
   LOCATE 3, A: PRINT " "
NEXT
COLOR 10
TIMER ON

END IF



END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB PANTALLA


COLOR 10

cambiacolor 7
boton 0, 0, 320, 200, 15, 9, 1, 0

boton 47, 7, 96, 186, 9, 15, 0, 1
boton 160, 30, 140, 120, 9, 15, 0, 1
'boton 200, 40, 60, 40, 9, 15, 0, 1

boton 227, 171, 73, 17, 9, 15, 0, 1
'boton 190, 98, 42, 19, 9, 15, 0, 1
LOCATE 23, 30: PRINT "   0:0"
LOCATE 14, 22: PRINT "L¡neas = 0"
LOCATE 6, 22: PRINT "Siguiente"
LINE (166, 37)-(263, 80), 10, B
LOCATE 17, 22: PRINT "HECHO EN RONDA"

FOR A = 54 TO 150 STEP 30
   boton 14, A, 20, 20, 15, 9, 1, 0
NEXT

DRAW "bm22,70 c0 c0r4u6r4h6g6r4d6"
PAINT (23, 69), 0, 0
DRAW "bm18,96 c0 r6d4e6h6d4l6d4"
PAINT (19, 94), 0, 0
DRAW "bm18,130 c0 br6h6e6d4r6d4l6d4"
PAINT (19, 124), 0, 0
DRAW "bm18,160 c0 br6h6r4u6r4d6r4g6"
PAINT (25, 158), 0, 0

LOCATE 23, 22: PRINT "S   P"

FOR hhh = 168 TO 207
   FOR vvv = 176 TO 183
      SELECT CASE POINT(hhh, vvv)
         CASE 0: PSET (hhh, vvv), 1
         CASE 10: PSET (hhh, vvv), 0
      END SELECT
   NEXT
NEXT

'LINE (168, 176)-(207, 183), 14, B
boton 162, 170, 20, 20, 9, 15, 16, 1
boton 193, 170, 20, 20, 15, 9, 16, 0


END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB pantallasombras (p)
SHARED modo
modo = 1
n = INT(p / 25)

GET (50, 10)-(140, 190 - (n * 10)), zonadejuego
GET (163, 33)-(297, 147), marcadores

LINE (0, 0)-(320, 200), 1, BF
FOR h = 10 TO 300 STEP 20
   FOR v = 10 TO 180 STEP 20
      PSET (h, v), 9
      DRAW "R2NRL1D4BR2U2NRD2NRD2RNR2BR2BU2U4L1R2NR3BRBD2D4U2R2U2L2D2F2BR2BU2U4BR2BD2NR2D2R2D2L4"
   NEXT
NEXT

FOR A = 54 TO 150 STEP 30
   boton 14, A, 20, 20, 15, 9, 1, 0
NEXT

DRAW "bm22,70 c0 c0r4u6r4h6g6r4d6"
PAINT (23, 69), 0, 0
DRAW "bm18,96 c0 r6d4e6h6d4l6d4"
PAINT (19, 94), 0, 0
DRAW "bm18,130 c0 br6h6e6d4r6d4l6d4"
PAINT (19, 124), 0, 0
DRAW "bm18,160 c0 br6h6r4u6r4d6r4g6"
PAINT (25, 158), 0, 0

LINE (54, 14)-(146, 196 - (n * 10)), 9, BF
LINE (167, 37)-(303, 153), 9, BF
LINE (50, 10)-(140, 190 - (n * 10)), 0, BF
LINE (163, 33)-(297, 147), 0, BF
LINE (49, 9)-(141, 191 - (n * 10)), 15, B
LINE (162, 32)-(298, 148), 15, B

LINE (233, 178)-(306, 191), 9, BF
LINE (229, 174)-(300, 185), 0, BF
LINE (228, 173)-(301, 186), 15, B

PUT (50, 10), zonadejuego, PSET
PUT (163, 33), marcadores, PSET

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB pausa
TIMER OFF
LOCATE 17, 22: PRINT "MODO DE ESPERA"
boton 193, 170, 20, 20, 9, 15, 16, 1
DO: LOOP UNTIL UCASE$(INKEY$) = "P"
boton 193, 170, 20, 20, 15, 9, 16, 0
LOCATE 17, 22: PRINT "HECHO EN RONDA"
TIMER ON
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB PIEZA (h, v, cadena$) STATIC

IF MID$(cadena$, 1, 1) = "1" THEN : boton h, v, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 2, 1) = "1" THEN : boton h + 10, v, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 3, 1) = "1" THEN : boton h + 20, v, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 4, 1) = "1" THEN : boton h + 30, v, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 5, 1) = "1" THEN : boton h, v + 10, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 6, 1) = "1" THEN : boton h + 10, v + 10, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 7, 1) = "1" THEN : boton h + 20, v + 10, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 8, 1) = "1" THEN : boton h + 30, v + 10, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 9, 1) = "1" THEN : boton h, v + 20, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 10, 1) = "1" THEN : boton h + 10, v + 20, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 11, 1) = "1" THEN : boton h + 20, v + 20, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 12, 1) = "1" THEN : boton h + 30, v + 20, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 13, 1) = "1" THEN : boton h, v + 30, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 14, 1) = "1" THEN : boton h + 10, v + 30, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 15, 1) = "1" THEN : boton h + 20, v + 30, 10, 10, 15, 8, 7, 0
IF MID$(cadena$, 16, 1) = "1" THEN : boton h + 30, v + 30, 10, 10, 15, 8, 7, 0

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB piezas (n, g) STATIC
SHARED cadena$
SHARED LARGO
SHARED ALTO
SHARED na

IF n = 0 THEN : n = INT(RND * 7) + 1

IF n = 8 THEN : n = 7
SELECT CASE n
CASE 1
     cadena$ = "110011"
CASE 2
     SELECT CASE g
          CASE 1: cadena$ = "1111"
          CASE 2: cadena$ = "1000100010001"
          CASE 3: cadena$ = "1111"
          CASE 4: cadena$ = "1000100010001"

     END SELECT
CASE 3
     SELECT CASE g
          CASE 1: cadena$ = "111001"
          CASE 2: cadena$ = "0100110001"
          CASE 3: cadena$ = "0100111"
          CASE 4: cadena$ = "100011001"
     END SELECT
CASE 4
     SELECT CASE g
          CASE 1: cadena$ = "011011"
          CASE 2: cadena$ = "1000110001"
          CASE 3: cadena$ = "011011"
          CASE 4: cadena$ = "1000110001"
     END SELECT
CASE 5
     SELECT CASE g
          CASE 1: cadena$ = "1100011"
          CASE 2: cadena$ = "010011001"
          CASE 3: cadena$ = "1100011"
          CASE 4: cadena$ = "010011001"
     END SELECT
CASE 6
     SELECT CASE g
          CASE 1: cadena$ = "11101"
          CASE 2: cadena$ = "1100010001"
          CASE 3: cadena$ = "0010111"
          CASE 4: cadena$ = "1000100011"
     END SELECT
CASE 7
     SELECT CASE g
          CASE 1: cadena$ = "1110001"
          CASE 2: cadena$ = "0100010011"
          CASE 3: cadena$ = "1000111"
          CASE 4: cadena$ = "110010001"
     END SELECT
CASE ELSE
     BEEP

END SELECT



LARGO = 0
IF MID$(cadena$, 1, 1) = "1" OR MID$(cadena$, 5, 1) = "1" OR MID$(cadena$, 9, 1) = "1" OR MID$(cadena$, 13, 1) = "1" THEN : LARGO = 10
IF MID$(cadena$, 2, 1) = "1" OR MID$(cadena$, 6, 1) = "1" OR MID$(cadena$, 10, 1) = "1" OR MID$(cadena$, 14, 1) = "1" THEN : LARGO = 20
IF MID$(cadena$, 3, 1) = "1" OR MID$(cadena$, 7, 1) = "1" OR MID$(cadena$, 11, 1) = "1" OR MID$(cadena$, 15, 1) = "1" THEN : LARGO = 30
IF MID$(cadena$, 4, 1) = "1" OR MID$(cadena$, 8, 1) = "1" OR MID$(cadena$, 12, 1) = "1" OR MID$(cadena$, 16, 1) = "1" THEN : LARGO = 40


ALTO = 0
IF MID$(cadena$, 1, 1) = "1" OR MID$(cadena$, 2, 1) = "1" OR MID$(cadena$, 3, 1) = "1" OR MID$(cadena$, 4, 1) = "1" THEN : ALTOO = 10
IF MID$(cadena$, 5, 1) = "1" OR MID$(cadena$, 6, 1) = "1" OR MID$(cadena$, 7, 1) = "1" OR MID$(cadena$, 8, 1) = "1" THEN : ALTO = 20
IF MID$(cadena$, 9, 1) = "1" OR MID$(cadena$, 10, 1) = "1" OR MID$(cadena$, 11, 1) = "1" OR MID$(cadena$, 12, 1) = "1" THEN : ALTO = 30
IF MID$(cadena$, 13, 1) = "1" OR MID$(cadena$, 14, 1) = "1" OR MID$(cadena$, 15, 1) = "1" OR MID$(cadena$, 16, 1) = "1" THEN : ALTO = 40

na = n
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB posible (h, v, cadena$) STATIC
SHARED posibilidad
posibilidad = 1
posi = 0
h = h + 3
v = v + 3
'PSET (h + 2, v + 2), 14

IF MID$(cadena$, 1, 1) = "1" THEN : posi = posi + POINT(h, v)
IF MID$(cadena$, 2, 1) = "1" THEN : posi = posi + POINT(h + 10, v)
IF MID$(cadena$, 3, 1) = "1" THEN : posi = posi + POINT(h + 20, v)
IF MID$(cadena$, 4, 1) = "1" THEN : posi = posi + POINT(h + 30, v)
IF MID$(cadena$, 5, 1) = "1" THEN : posi = posi + POINT(h, v + 10)
IF MID$(cadena$, 6, 1) = "1" THEN : posi = posi + POINT(h + 10, v + 10)
IF MID$(cadena$, 7, 1) = "1" THEN : posi = posi + POINT(h + 20, v + 10)
IF MID$(cadena$, 8, 1) = "1" THEN : posi = posi + POINT(h + 30, v + 10)
IF MID$(cadena$, 9, 1) = "1" THEN : posi = posi + POINT(h, v + 20)
IF MID$(cadena$, 10, 1) = "1" THEN : posi = posi + POINT(h + 10, v + 20)
IF MID$(cadena$, 11, 1) = "1" THEN : posi = posi + POINT(h + 20, v + 20)
IF MID$(cadena$, 12, 1) = "1" THEN : posi = posi + POINT(h + 30, v + 20)
IF MID$(cadena$, 13, 1) = "1" THEN : posi = posi + POINT(h, v + 30)
IF MID$(cadena$, 14, 1) = "1" THEN : posi = posi + POINT(h + 10, v + 30)
IF MID$(cadena$, 15, 1) = "1" THEN : posi = posi + POINT(h + 20, v + 30)
IF MID$(cadena$, 16, 1) = "1" THEN : posi = posi + POINT(h + 30, v + 30)

h = h - 3
v = v - 3
'LOCATE 1, 35: PRINT posi / 7
IF posi = 0 THEN : posibilidad = 1:  ELSE : posibilidad = 0': IF sonido THEN :SOUND 600, 1

END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                              
SUB salida
LINE (0, 0)-(320, 200), 14, BF

FOR h = 10 TO 300 STEP 20
   FOR v = 10 TO 180 STEP 20
      PSET (h, v), 10
      DRAW "R2NRL1D4BR2U2NRD2NRD2RNR2BR2BU2U4L1R2NR3BRBD2D4U2R2U2L2D2F2BR2BU2U4BR2BD2NR2D2R2D2L4"
   NEXT
NEXT

COLOR 11
LINE (83, 90)-(223, 147), 6, BF
LINE (77, 85)-(218, 142), 0, B
LINE (78, 86)-(217, 141), 9, BF
LINE (80, 87)-(215, 87), 0          '
LOCATE 12, 11: PRINT " SALIDA A MS-DOS "

FOR h = 10 TO 27
   FOR v = 10 TO 20
      IF POINT(h, v) = 10 THEN : boton ((h * 5) + 55), (v * 5) + 50, 5, 5, 15, 8, 7, 0
   NEXT
NEXT
DO: LOOP WHILE INKEY$ = ""
LOCATE 12, 11: PRINT " SALIDA A QBASIC "

SYSTEM
END


END SUB

