'
'           ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
'           º                                                   º
'           º    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»    º
'           º    º                                         º    º
'           º    º                                         º    º
'           º    º     1  8     E  N     L  Ö  N  E  A     º    º
'           º    º                                         º    º
'           º    º   þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ   º    º
'           º    º                                         º    º
'           º    º       H E C H O   E N   R O N D A       º    º
'           º    º                                         º    º
'           º    º              F5 >> Empezar              º    º
'           º    º                                         º    º
'           º    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼    º
'           º             es.geocities.com/jm00092              º
'           ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼
'   
'
'
'
'
DECLARE SUB salida ()
DECLARE SUB digital (h!, v!, num!, l!, C1!, C2!, B!)
DECLARE SUB boton (h!, v!, l!, a!, sol!, sombra!, cara!, borde!)
DECLARE SUB bot (h!, v!, c!)
DECLARE SUB pieza (h!, v!, n!)
COMMON SHARED puntos
RANDOMIZE TIMER
DIM SHARED forma$(1 TO 34)
DIM SHARED mover(1 TO 2000)
forma$(1) = "070000787777070000070000070000070000"
forma$(11) = "070000070000070000070000787777070000"
forma$(21) = "000070000070000070000070777787000070"
forma$(31) = "000070777787000070000070000070000070"
forma$(2) = "000000777777000000000000777777000000"
forma$(12) = "070070070070070070070070070070070070"
forma$(22) = "000000777777000000000000777777000000"
forma$(32) = "070070070070070070070070070070070070"
forma$(3) = "070070070070070070070070787787070070"
forma$(13) = "000070777787000070000070777787000070"
forma$(23) = "070070787787070070070070070070070070"
forma$(33) = "070000787777070000070000787777070000"
forma$(4) = "070070787787070070070070787787070070"
forma$(14) = "070070787787070070070070787787070070"
forma$(24) = "070070787787070070070070787787070070"
forma$(34) = "070070787787070070070070787787070070"
fondo = 1
SCREEN 12
PALETTE 3, 0
PALETTE 12, 63
PALETTE 6, 63
PAINT (0, 0), 15
FOR n = 1 TO 50
   LINE STEP(0, 0)-(INT(RND * 640), 479), 11
   LINE STEP(0, 0)-(639, INT(RND * 480)), 11
   LINE STEP(0, 0)-(INT(RND * 640), 0), 11
   LINE STEP(0, 0)-(0, INT(RND * 480)), 11
NEXT
boton 460, 10, 150, 44, 8, 7, 0, 15
COLOR 2: LOCATE 2, 60: PRINT " 18";
COLOR 13: PRINT " En";
COLOR 6: PRINT " L¡nea    "
COLOR 15: LOCATE 3, 60: PRINT " Hecho en Ronda "
FOR h = 482 TO 566
   FOR v = 17 TO 27
      c = POINT(h, v)
      IF c THEN LINE ((h * 3) - 1280, ((v * 3) + 130))-STEP(2, 3), c, BF
   NEXT
NEXT
FOR h = 480 TO 590
   FOR v = 33 TO 43
      IF POINT(h, v) = 15 THEN LINE ((h * 2) - 775, ((v * 3) + 150))-STEP(1, 2), 7
   NEXT
NEXT
SLEEP 3
LINE (47, 0)-(431, 480), fondo, BF
FOR h = 482 TO 566
   FOR v = 17 TO 27
      c = POINT(h, v)
      IF c THEN LINE ((v * 3) - 45, 480 - ((h * 4) - 1860))-STEP(2, 3), c, BF
   NEXT
NEXT
boton 470, 265, 108, 67, 8, 7, 0, 15
LOCATE 18, 63: COLOR 2: PRINT "Puntos"
digital 480, 300, 0, 6, 10, 8, 0
boton 500, 429, 65, 21, 8, 7, 0, 15
LOCATE 28, 65: COLOR 7: PRINT FRE(-2)
DO
   h = ((INT(RND * 6)) * 48) + 96
   v = -48
   cual = (INT(RND * 4) + 1)
   DO
      ret = 0
      DO
         kbd$ = UCASE$(INKEY$)
         ret = ret + 1
         LOOP WHILE kbd$ = "" AND ret < 8000
      LINE (h - 1, v - 1)-STEP(48, 48), fondo, BF
      IF ret = 8000 THEN v = v + 48
      SELECT CASE kbd$
         CASE CHR$(0) + "H": cual = cual + 10: IF cual > 40 THEN cual = cual - 40
         CASE CHR$(0) + "P": v = v + 48
         CASE CHR$(0) + "K": IF POINT(h - 2, v + 10) = fondo THEN h = h - 48
         CASE CHR$(0) + "M": IF POINT(h + 50, v + 10) = fondo THEN h = h + 48
         CASE CHR$(27): salida
      END SELECT
      pieza h, v, cual
   LOOP WHILE POINT(h + 25, v + 50) = fondo
   SOUND 800, .5
   IF v = 0 THEN salida
   DO
      hay = 0
      FOR hh = 12 TO 480 STEP 24
         FOR vv = 450 TO 16 STEP -48
            IF (POINT(hh, vv) = 7 XOR POINT(hh, vv) = 12) AND (POINT(hh, vv - 48) = 7 XOR POINT(hh, vv - 48) = 12) AND (POINT(hh, vv + 48) = 7 XOR POINT(hh, vv + 48) = 12) THEN
               FOR vvv = vv - 66 TO vv + 70 STEP 8
                  SELECT CASE POINT(hh - 7, vvv + 2)
                     CASE 7: bot hh - 4, vvv, 4
                     CASE ELSE: bot hh - 4, vvv, 12
                  END SELECT
                  FOR delay = 1 TO 500: NEXT
               NEXT
               hay = 1
            END IF
            IF (POINT(vv, hh) = 7 XOR POINT(vv, hh) = 12) AND (POINT(vv - 48, hh) = 7 XOR POINT(vv - 48, hh) = 12) AND (POINT(vv + 48, hh) = 7 XOR POINT(vv + 48, hh) = 12) THEN
               FOR hhh = vv - 66 TO vv + 70 STEP 8
                  SELECT CASE POINT(hhh + 2, hh - 8)
                     CASE 7: bot hhh, hh - 4, 4
                     CASE ELSE: bot hhh, hh - 4, 12
                  END SELECT
                  FOR delay = 1 TO 500: NEXT
               NEXT
               hay = 1
            END IF
         NEXT
      NEXT
      FOR hh = 12 TO 480 STEP 24
         FOR vv = 476 TO 2 STEP -8
            SELECT CASE POINT(hh, vv)
               CASE 12: bot hh - 4, vv - 4, 3
               CASE 4: bot hh - 4, vv - 4, 7
            END SELECT
         NEXT
      NEXT
      FOR vv = 12 TO 480 STEP 24
         FOR hh = 428 TO 50 STEP -8
            SELECT CASE POINT(hh, vv)
               CASE 12: bot hh - 4, vv - 4, 3
               CASE 4: bot hh - 4, vv - 4, 7
            END SELECT
         NEXT
      NEXT
      FOR hh = 72 TO 412 STEP 48
         FOR vv = 456 TO 24 STEP -48
            IF POINT(hh - 10, vv) = 3 AND POINT(hh + 10, vv) = 3 AND POINT(hh, vv - 10) = 3 AND POINT(hh, vv + 10) = 3 THEN
               FOR vvv = vv TO 72 STEP -48
                  GET (hh - 24, vvv - 72)-STEP(46, 46), mover
                  PUT (hh - 24, vvv - 24), mover, PSET
               NEXT
               vv = 456
               hh = 72
            END IF
         NEXT
      NEXT
   LOOP UNTIL hay = 0
   LOCATE 28, 65: COLOR 7: PRINT FRE(-2)
LOOP

SUB bot (h, v, c)
SELECT CASE c
   CASE 7: C1 = 15: C2 = 8
   CASE 8: C1 = 7: C2 = 0
   CASE 12: C1 = 15: C2 = 4: puntos = puntos + 1: digital 480, 300, puntos, 6, 10, 8, 0
   CASE 4: C1 = 12: C2 = 0: puntos = puntos + 1: digital 480, 300, puntos, 6, 10, 8, 0
   CASE 3: C1 = 3: C2 = 3
END SELECT
LINE (h, v)-STEP(6, 6), C1, B
LINE (h + 1, v + 1)-STEP(5, 5), C2, B
LINE (h + 1, v + 1)-STEP(4, 4), c, BF
END SUB

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), sol, B
LINE (h + 3, v + 3)-STEP(l - 5, a - 5), sombra, B
LINE (h + 3, v + 3)-STEP(l - 6, a - 6), cara, BF
END SUB

SUB digital (h, v, num, l, C1, C2, B)
SOUND 2500, .3
IF B THEN boton h - 5, v - 5, ((15 * l + 7)), 32, 8, 15, 0, 7
IF (l - LEN(STR$(num))) > -1 THEN
   n$ = SPACE$(l - LEN(STR$(num))) + STR$(num)
ELSE
   n$ = STR$(num)
END IF
ah = h
FOR x = 1 TO LEN(n$)
   SELECT CASE UCASE$(MID$(n$, x, 1))
      CASE "1": cadena$ = "0010010"
      CASE "2": cadena$ = "1011101"
      CASE "3": cadena$ = "1011011"
      CASE "4": cadena$ = "0111010"
      CASE "5": cadena$ = "1101011"
      CASE "6": cadena$ = "1101111"
      CASE "7": cadena$ = "1010010"
      CASE "8": cadena$ = "1111111"
      CASE "9": cadena$ = "1111011"
      CASE "0": cadena$ = "1110111"
      CASE "-": cadena$ = "0001000"
      CASE " ": cadena$ = "0000000"
      CASE ELSE: SOUND 1000, 1: cadena$ = "0000000"
   END SELECT
   IF MID$(cadena$, 1, 1) = "1" THEN : PSET (h, v), C1: DRAW "brr10gl8fr6":         ELSE : PSET (h, v), C2: DRAW "brr10gl8fr6"
   IF MID$(cadena$, 2, 1) = "1" THEN : PSET (h, v), C1: : DRAW "bdd9eu7fd5":        ELSE : PSET (h, v), C2: : DRAW "bdd9eu7fd5"
   IF MID$(cadena$, 3, 1) = "1" THEN : PSET (h, v), C1: : DRAW "bdbr12d9hu7gd5":    ELSE : PSET (h, v), C2: : DRAW "bdbr12d9hu7gd5"
   IF MID$(cadena$, 4, 1) = "1" THEN : PSET (h, v), C1: : DRAW "br2bd10r8fl10fr8":  ELSE : PSET (h, v), C2: : DRAW "br2bd10r8fl10fr8"
   IF MID$(cadena$, 5, 1) = "1" THEN : PSET (h, v), C1: : DRAW "bd12d9eu7fd5":      ELSE : PSET (h, v), C2: : DRAW "bd12d9eu7fd5"
   IF MID$(cadena$, 6, 1) = "1" THEN : PSET (h, v), C1: : DRAW "bd12br12d9hu7gd5":  ELSE : PSET (h, v), C2: : DRAW "bd12br12d9hu7gd5"
   IF MID$(cadena$, 7, 1) = "1" THEN : PSET (h, v), C1: : DRAW "brbd22r10hl8er6":   ELSE : PSET (h, v), C2: : DRAW "brbd22r10hl8er6"
   PSET (h, v), 0
   h = h + 15
NEXT
h = ah
END SUB

SUB pieza (h, v, n)
LINE (h, v)-STEP(46, 46), 3, BF
FOR vv = 0 TO 5
   FOR hh = 0 TO 5
      x = x + 1
      c = VAL(MID$(forma$(n), x, 1))
      IF c THEN bot (h + (hh * 8)), (v + (vv * 8)), c
   NEXT
NEXT
END SUB

SUB salida
FOR h = 47 TO 431 STEP 2
   LINE (h, 0)-(h, 479), 1
NEXT
FOR v = 1 TO 479 STEP 2
   LINE (47, v)-(431, v), 1
NEXT
FOR h = 471 TO 577
   FOR v = 266 TO 331
      LINE ((h * 3) - 1334, (v * 3) - 550)-STEP(2, 2), POINT(h, v)
   NEXT
NEXT
SLEEP
CLS
LOCATE 16, 20: COLOR 9: PRINT " J.M.G.B.    Hecho en Ronda    Navidad 1996"
COLOR 0
END
END SUB

