'
'           浜様様様様様様様様様様様様様様様様様様様様様様様様様
'                                                              
'               浜様様様様様様様様様様様様様様様様様様様様    
'                                                            
'                                 JUEGO                      
'                                                            
'                        Intercambio de crculos             
'                                                            
'                                                            
'                      H E C H O   E N   R O N D A           
'                                                            
'                             F5 >> Empezar                  
'                                                            
'               藩様様様様様様様様様様様様様様様様様様様様    
'                        es.geocities.com/jm00092              
'           藩様様様様様様様様様様様様様様様様様様様様様様様様様
'
'
'
'
'
DECLARE SUB letras (X!, Y!, TEXT$, escl!, clrs!, ang!, ancho!, relleno!)
DECLARE SUB boton (h!, v!, l!, a!, sol!, sombra!, cara!, bord!)
DECLARE SUB digital (h!, v!, num!, l!, C1!, C2!, b!)
DECLARE FUNCTION cp! (h!, v!)
RANDOMIZE TIMER
TYPE bl
   h AS SINGLE
   v AS SINGLE
   ah AS SINGLE
   av AS SINGLE
   cl AS SINGLE
   dh AS SINGLE
   dv AS SINGLE
END TYPE
DIM b(1 TO 12) AS bl
SCREEN 12
PALETTE 12, 63
PALETTE 4, 23
PALETTE 3, 0
FOR h = 10 TO 630 STEP 62
   boton h - 6, 0, 12, 12, 15, 8, 7, 3
   boton h - 6, 434, 12, 12, 15, 8, 7, 3
NEXT
FOR h = 10 TO 568 STEP 62
   boton h + 6, 0, 50, 10, 15, 8, 7, 3
   boton h + 6, 436, 50, 10, 15, 8, 7, 3
NEXT
FOR v = 62 TO 400 STEP 62
   boton 4, v, 12, 12, 15, 8, 7, 3
   boton 314, v, 12, 12, 15, 8, 7, 3
   boton 624, v, 12, 12, 15, 8, 7, 3
NEXT
   FOR v = 12 TO 400 STEP 62
   boton 4, v, 10, 50, 15, 8, 7, 3
boton 316, v, 8, 50, 15, 8, 7, 3
boton 626, v, 10, 50, 15, 8, 7, 3
NEXT
LINE (316, 75)-STEP(7, 48), 0, BF
LINE (316, 199)-STEP(7, 48), 0, BF
LINE (316, 323)-STEP(7, 48), 0, BF
boton 318, 74, 4, 50, 15, 4, 12, 3
boton 318, 198, 4, 50, 15, 6, 14, 3
boton 318, 322, 4, 50, 15, 1, 9, 3
FOR n = 1 TO 6
   b(n).cl = 10
   b(n).h = INT(RND * 100) + 100
   b(n).v = INT(RND * 180) + 100
NEXT
FOR n = 7 TO 12
   b(n).cl = 13
   b(n).h = INT(RND * 100) + 440
   b(n).v = INT(RND * 180) + 100
NEXT
boton 81, 446, 195, 34, 15, 5, 13, 3
boton 364, 446, 195, 34, 15, 2, 10, 3
boton 276, 464, 88, 16, 15, 8, 7, 3
digital 10, 452, 6, 2, b(1).cl, 4, 1
digital 48, 452, 0, 2, b(7).cl, 4, 1
digital 565, 452, 0, 2, b(1).cl, 4, 1
digital 603, 452, 6, 2, b(7).cl, 4, 1
COLOR 12: LOCATE 29, 36: PRINT "1";
COLOR 14: LOCATE 29, 38: PRINT "2";
COLOR 9: LOCATE 29, 40: PRINT "3";
COLOR 15: LOCATE 29, 43: PRINT "Esc";
FOR n = 1 TO 12
   DO
      DO
         b(n).dh = (RND * 10) - 5
         IF b(n).dh < 0 AND b(n).dh > -1 THEN b(n).dh = b(n).dh - 1
         IF b(n).dh > 0 AND b(n).dh < 1 THEN b(n).dh = b(n).dh + 1
         b(n).dv = (RND * 10) - 5
         IF b(n).dv < 0 AND b(n).dv > -1 THEN b(n).dv = b(n).dv - 1
         IF b(n).dv > 0 AND b(n).dv < 1 THEN b(n).dv = b(n).dv + 1
      LOOP UNTIL b(n).dh <> 0 OR b(n).dv <> 0
   LOOP WHILE cp(b(n).h, b(n).v) <> 0
NEXT
DO
   ret = 0
   DO
      KBD$ = INKEY$
      ret = ret + 1
   LOOP WHILE KBD$ = "" AND ret < 3
   IF KBD$ <> "" THEN
      SELECT CASE KBD$
      CASE "1"
         IF puerta1 = 1 THEN
            puerta1 = 0
            boton 318, 74, 4, 50, 15, 4, 12, 3
         ELSE
            puerta1 = 1
            LINE (317, 75)-STEP(7, 48), 0, BF
         END IF
      CASE "2"
         IF puerta2 = 1 THEN
            puerta2 = 0
            boton 318, 198, 4, 50, 15, 6, 14, 3
         ELSE
            puerta2 = 1
            LINE (317, 199)-STEP(7, 48), 0, BF
         END IF
      CASE "3"
         IF puerta2 = 1 THEN
            puerta2 = 0
            boton 318, 322, 4, 50, 15, 1, 9, 3
         ELSE
            puerta2 = 1
            LINE (317, 323)-STEP(7, 48), 0, BF
         END IF
      END SELECT
   END IF
   n = n + 1
   IF n > 12 THEN n = 1
   b(n).ah = b(n).h
   b(n).av = b(n).v
   b(n).h = b(n).h + b(n).dh
   b(n).v = b(n).v + b(n).dv
   CIRCLE (b(n).ah, b(n).av), 2, 0
   IF cp(b(n).h, b(n).v) <> 0 THEN
      DO
         DO
            b(n).dh = (RND * 10) - 5
            IF b(n).dh < 0 AND b(n).dh > -1 THEN b(n).dh = b(n).dh - 1
            IF b(n).dh > 0 AND b(n).dh < 1 THEN b(n).dh = b(n).dh + 1
            b(n).dv = (RND * 10) - 5
            IF b(n).dv < 0 AND b(n).dv > -1 THEN b(n).dv = b(n).dv - 1
            IF b(n).dv > 0 AND b(n).dv < 1 THEN b(n).dv = b(n).dv + 1
         LOOP UNTIL b(n).dh <> 0 OR b(n).dv <> 0
         b(n).h = b(n).ah + b(n).dh
         b(n).v = b(n).av + b(n).dv
      LOOP WHILE cp(b(n).h, b(n).v) <> 0
   END IF
   CIRCLE (b(n).h, b(n).v), 2, b(n).cl
   avi = vi
   ari = ri
   avd = vd
   ard = rd
   vi = 0
   ri = 0
   vd = 0
   rd = 0
   FOR nn = 1 TO 6
      IF b(nn).h < 320 THEN vi = vi + 1 ELSE vd = vd + 1
   NEXT
   FOR nn = 7 TO 12
      IF b(nn).h < 320 THEN ri = ri + 1 ELSE rd = rd + 1
   NEXT
   pas = 0
   IF vi <> avi THEN digital 10, 452, vi, 2, b(1).cl, 4, 0: pas = 1
   IF ri <> ari THEN digital 48, 452, ri, 2, b(7).cl, 4, 0: pas = 1
   IF vd <> avd THEN digital 565, 452, vd, 2, b(1).cl, 4, 0: pas = 1
   IF rd <> ard THEN digital 603, 452, rd, 2, b(7).cl, 4, 0: pas = 1
   IF pas = 1 THEN SOUND 1000, .5: SOUND 3000, .5
LOOP UNTIL KBD$ = CHR$(27) XOR (ri = 6 AND vd = 6)
IF (ri = 6 AND vd = 6) THEN
   FOR a = 1 TO 6
      FOR b = 1 TO 6
         LINE (b(a).h, b(a).v)-(b(b).h, b(b).v), b(a).cl
         LINE (b(a + 6).h, b(a + 6).v)-(b(b + 6).h, b(b + 6).v), b(a + 6).cl
      NEXT
   CIRCLE (b(a).h, b(a).v), 4, b(a).cl
   CIRCLE (b(a + 6).h, b(a + 6).v), 4, b(a + 6).cl
   NEXT
   WHILE INKEY$ <> "": WEND
   DO: LOOP WHILE INKEY$ = ""
END IF
CLS
COLOR 7
LOCATE 16, 21: PRINT "J.M.G.B.    Hecho en Ronda    Marzo 1999"
COLOR 0

SUB boton (h, v, l, a, sol, sombra, cara, bord)
LINE (h, v)-STEP(l, a), bord, 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

FUNCTION cp (h, v)
IF POINT(h - 3, v - 3) <> 0 THEN cp = 1: EXIT FUNCTION
IF POINT(h, v - 4) <> 0 THEN cp = 1: EXIT FUNCTION
IF POINT(h + 3, v - 3) <> 0 THEN cp = 1: EXIT FUNCTION
IF POINT(h + 4, v) <> 0 THEN cp = 1: EXIT FUNCTION
IF POINT(h + 3, v + 3) <> 0 THEN cp = 1: EXIT FUNCTION
IF POINT(h, v + 4) <> 0 THEN cp = 1: EXIT FUNCTION
IF POINT(h - 3, v + 3) <> 0 THEN cp = 1: EXIT FUNCTION
IF POINT(h - 4, v) <> 0 THEN cp = 1: EXIT FUNCTION
cp = 0
END FUNCTION

SUB digital (h, v, num, l, C1, C2, b)
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$ = RIGHT$(STR$(num), LEN(STR$(num)) - 1)
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 "s4brr10gl8fr6":         ELSE : PSET (h, v), C2: DRAW "s4brr10gl8fr6"
IF MID$(cadena$, 2, 1) = "1" THEN : PSET (h, v), C1: : DRAW "s4bdd9eu7fd5":        ELSE : PSET (h, v), C2: : DRAW "s4bdd9eu7fd5"
IF MID$(cadena$, 3, 1) = "1" THEN : PSET (h, v), C1: : DRAW "s4bdbr12d9hu7gd5":    ELSE : PSET (h, v), C2: : DRAW "s4bdbr12d9hu7gd5"
IF MID$(cadena$, 4, 1) = "1" THEN : PSET (h, v), C1: : DRAW "s4br2bd10r8fl10fr8":  ELSE : PSET (h, v), C2: : DRAW "s4br2bd10r8fl10fr8"
IF MID$(cadena$, 5, 1) = "1" THEN : PSET (h, v), C1: : DRAW "s4bd12d9eu7fd5":      ELSE : PSET (h, v), C2: : DRAW "s4bd12d9eu7fd5"
IF MID$(cadena$, 6, 1) = "1" THEN : PSET (h, v), C1: : DRAW "s4bd12br12d9hu7gd5":  ELSE : PSET (h, v), C2: : DRAW "s4bd12br12d9hu7gd5"
IF MID$(cadena$, 7, 1) = "1" THEN : PSET (h, v), C1: : DRAW "s4brbd22r10hl8er6":   ELSE : PSET (h, v), C2: : DRAW "s4brbd22r10hl8er6"
PSET (h, v), 0
h = h + 15
NEXT
h = ah
END SUB

SUB letras (X, Y, TEXT$, escl, clrs, ang, ancho, relleno)
IF relleno < 1 THEN : relleno = 1
FOR h = 1 TO ancho STEP relleno
FOR v = 1 TO ancho STEP relleno
ccc = POINT(X + h, Y + v)
PSET (X + h, Y + v), ccc
c$ = STR$(clrs): e$ = STR$(escl): a$ = STR$(ang)
FOR a = 1 TO LEN(TEXT$)
IF clrs > 255 THEN c$ = STR$(INT(RND * 15) + 1)
DRAW "S" + e$ + "C" + c$ + "ta" + a$
SELECT CASE UCASE$(MID$(TEXT$, a, 1))
CASE "A": DRAW "br2 u2nnr2u2r2d4"
CASE "B": DRAW "br2 u4r2dgnlfdnl2"
CASE "C": DRAW "br2 bu4 nr2d4r2"
CASE "D": DRAW "br2 u4rfd2glbr2"
CASE "E": DRAW "br2 bu4 nr2d2nr2d2r2"
CASE "F": DRAW "br2 bu4 nr2d2nr2d2br2"
CASE "G": DRAW "br2 bu4 nr2d4r2unld"
CASE "H": DRAW "br2 u2nu2r2nu2d2"
CASE "I": DRAW "br2 nu4"
CASE "J": DRAW "br2 nur2nu4"
CASE "K": DRAW "br2 u2 nu2ne2f2"
CASE "L": DRAW "br2 nu4r2"
CASE "M": DRAW "br2 u4f2e2d4"
CASE "N": DRAW "br2 u4f4nu4"
CASE "": DRAW "br2 u3f3u3bunl3bd4"
CASE "": DRAW "br2 u3f3u3bunl3bd4"
CASE "O": DRAW "br2 bu4 nr2d4r2nu4"
CASE "P": DRAW "br2 u2nnr2u2r2d2bd2"
CASE "Q": DRAW "br2 bu4 nr2d4renu3blf"
CASE "R": DRAW "br2 u4r2d2l2f2"
CASE "S": DRAW "br2 r2u2l2u2r2BD4"
CASE "T": DRAW "br2 BU4r2nd4r2bd4"
CASE "U": DRAW "br2 nu4r2nu4"
CASE "V": DRAW "br2 bunu3fenu3bd"
CASE "W": DRAW "br2 bunu3fenu2fenu3bd"
CASE "X": DRAW "br2 br2bu2ne2nf2ng2nh2br2bd2"
CASE "Y": DRAW "br2 br2u2nh2ne2bd2br2"
CASE "Z": DRAW "br2 bu4 r4g2nlnrg2r4"
CASE "1": DRAW "br2 bu3ed4nlr"
CASE "2": DRAW "br2 bu4 r2d2l2d2r2"
CASE "3": DRAW "br2 bu4 r2d2nl2d2nl2" '"br2 bu4 r2fgnlfgnl2bl"
CASE "4": DRAW "br2 bu2 nu2r2nu2d2"
CASE "5": DRAW "br2 bu4 nr2d2r2d2nl2"
CASE "6": DRAW "br2 bu4 nr2d2nr2d2r2nu2"
CASE "7": DRAW "br2 bu4 r2d4"
CASE "8": DRAW "br2 u4r2d2nl2d2nl2"
CASE "9": DRAW "br2 bu2 nr2u2r2d4"
CASE "0": DRAW "br2 bu4 nr2d4r2nu4"
CASE "*": DRAW "br2 br2 u2nl2nu2nr2nengnhfbf "
CASE "+": DRAW "br2 br2 u2nl2nu2r2bd2"
CASE "-": DRAW "br2 bu2r2bd2"
CASE ".": DRAW "br2": PSET STEP(0, 0), clrs
CASE ",": DRAW "br2 ng"
CASE ";": DRAW "br2 ngbunuBD"
CASE ":": DRAW "br2": PSET STEP(0, 0), clrs: PSET STEP(0, -2), clrs: DRAW "bd2"
CASE "=": DRAW "br2 bunr2bu2r2bd3"
CASE "": DRAW "br2 unr2u2rbunebdrd3"
CASE "": DRAW "br2 bu3 rbunebdrl2d2nr2dr2"
CASE "": DRAW "br2 u3bunebd4"
CASE "": DRAW "br2 u3rbunebdrd3nl2"
CASE "": DRAW "br2 u3brbunebdbrd3nl2"
CASE "": DRAW "br2 unr2u2rbunebdrd3"
CASE "": DRAW "br2 bu3 rbunebdrl2d2nr2dr2"
CASE "": DRAW "br2 u3bunebd4"
CASE "": DRAW "br2 u3rbunebdrd3nl2"
CASE "": DRAW "br2 u3brbunebdbrd3nl2"
CASE ELSE: DRAW "S" + e$ + "ta" + a$ + "BR4"
END SELECT
NEXT: NEXT: NEXT
DRAW "s4ta0"
END SUB

