'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'                                                 CIRCUITO DE VELOCIDAD
'
'
'
' PARA DIBUJAR OTRO CIRCUITO LLAMAR A LA FUNCION CARRETERA Y
' PASARLE UNA CADENA DE LETRAS CON SINTAXIS IGUAL A LA ORDEN DRAW
'
'
'
DECLARE SUB letras (X!, y!, TEXT$, escl!, CLRS!, ang!, ancho!, relleno!)
DECLARE SUB carretera (h!, v!, cad$)
DIM SHARED fondo(1 TO 2000)


SCREEN 12
PALETTE 12, 63

c1 = 10
c2 = 2


CONST pi = 3.1415926539#
CONST cp = 8


PAINT (1, 1), c1
FOR h = 20 TO 580 STEP 40
   FOR v = 20 TO 420 STEP 40
      LINE (h, v)-STEP(40, 40), c2, B
   NEXT
NEXT
PAINT (1, 1), c2, c2
letras 4, 14, "Circuito de velocidad                 hecho en Ronda", 12, 12, 0, 2, 1
letras 2, 12, "Circuito de velocidad                 hecho en Ronda", 12, 15, 0, 2, 1

LINE (242, 53)-(337, 67), 1, BF
letras 240, 62, "salida", 8, 15, 0, 2, 1

carretera 120, 40, "gggffggffgg ddddfrehhuue rrrfdghhlgfffrffrreuuuerrfggggdfrrrrehllherrehlherehllllllgdddghuuuhlllheeeehlherrfddfrehhuerrfggfffrrrrehlllhueffrreuhgghhllllllllll"

FOR h = 60 TO 580 STEP 40
   FOR v = 20 TO 420 STEP 40
      IF POINT(h + 20, v) = c2 AND POINT(h, v + 20) = c2 AND POINT(h + 40, v + 20) = c2 AND POINT(h + 20, v + 40) = c2 THEN : LINE (h, v)-STEP(40, 40), c2, BF: LINE (h + 15, v + 15)-STEP(15, 15), 15, BF: LINE (h + 10, v + 10)-STEP(15, 15), 12, BF
   NEXT
NEXT
PAINT (22, 22), c2, c2

LINE (292, 32)-(292, 48), 15
LINE (290, 0)-(332, 18), 1, BF

LINE (293, 2)-STEP(10, 12), 8, BF
LINE (306, 2)-STEP(10, 12), 8, BF
LINE (319, 2)-STEP(10, 12), 8, BF

h = 292
v = 40

lentitud = 1000:
LOCATE 30, 9: PRINT " 1¦ Velocidad ";
mh = -1
mv = 0

GET (h - 5, v - 5)-(h + 5, v + 5), fondo

LINE (h - 4, v - 4)-STEP(9, 9), 12, BF
LINE (h - 2, v - 2)-STEP(5, 5), 11, BF

DO: LOOP WHILE INKEY$ = ""
SOUND 2900, 6
LINE (319, 2)-STEP(10, 12), 12, BF
FOR delay = 1 TO 14000: NEXT
SOUND 2900, 6
LINE (306, 2)-STEP(10, 12), 14, BF
LINE (319, 2)-STEP(10, 12), 8, BF
FOR delay = 1 TO 14000: NEXT
SOUND 3000, 10
LINE (293, 2)-STEP(10, 12), 10, BF
LINE (306, 2)-STEP(10, 12), 8, BF

LINE (242, 53)-(337, 67), 1, BF
LINE (290, 0)-(332, 18), 2, BF
letras 292, 62, "meta", 8, 15, 0, 2, 1
LINE (16, 46)-STEP(2, 10), 7, BF
LINE (46, 46)-STEP(2, 10), 7, BF
LINE (6, 29)-STEP(52, 20), 1, BF
LOCATE 3, 2: PRINT STR$(FIX(act / 60)); ":"; STR$(act MOD 60); " ";

inicio = INT(TIMER)

DO

   kbd$ = INKEY$
         
         
   SELECT CASE kbd$
      'ARRIBA
      CASE CHR$(0) + "H": mh = 0: mv = -1

      'ABAJO
      CASE CHR$(0) + "P": mh = 0: mv = 1

      'IZQUIERDA
      CASE CHR$(0) + "K": mh = -1: mv = 0

      'DERECHA
      CASE CHR$(0) + "M": mh = 1: mv = 0

      CASE "1": lentitud = 900: LOCATE 30, 10: PRINT "1";
      CASE "2": lentitud = 600: LOCATE 30, 10: PRINT "2";
      CASE "3": lentitud = 300: LOCATE 30, 10: PRINT "3";
      CASE "4": lentitud = 150: LOCATE 30, 10: PRINT "4";
      CASE "5": lentitud = 0: LOCATE 30, 10: PRINT "5";
      CASE " ": lentitud = lentitud - 100
   END SELECT


   PUT (h - 5, v - 5), fondo, PSET

   ah = h
   av = v
   h = h + mh
   v = v + mv
   IF h > 633 THEN h = 633
   IF h < 6 THEN h = 6
   IF v > 473 THEN v = 473
   IF v < 6 THEN v = 6

   C = POINT(h, v)

   IF C <> cp AND C <> 15 THEN s = 1: h = ah: v = av: puntos = puntos - 25

   GET (h - 5, v - 5)-(h + 5, v + 5), fondo
   LINE (h - 4, v - 4)-STEP(9, 9), 12, BF
   LINE (h - 2, v - 2)-STEP(5, 5), 11, BF

   lentitud = lentitud + 2
   IF lentitud > 1000 THEN lentitud = 1000
   IF lentitud < 0 THEN lentitud = 0

   FOR delay = 0 TO lentitud: NEXT
   IF s THEN SOUND 100, 1: s = 0

   puntos = puntos + 1
   act = INT(TIMER) - inicio
   LOCATE 3, 2: PRINT STR$(FIX(act / 60)); ":"; STR$(act MOD 60);
   LOCATE 30, 55: PRINT puntos;

   LOCATE 30, 70: PRINT lentitud;

   IF h = 296 AND v < 60 AND mh = -1 THEN SOUND 3000, 4: END
   IF h >= 296 AND h < 306 AND v < 60 AND mh = 1 THEN mh = -2
   IF h = 246 AND v < 60 AND mh = -2 THEN mh = -1

LOOP UNTIL kbd$ = CHR$(27)

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
'
'
SUB carretera (h, v, cad$)

FOR n = 1 TO LEN(cad$)

   SELECT CASE UCASE$(MID$(cad$, n, 1))
      CASE "U": v = v - 40: car$ = "vertical": d = 1
      CASE "D": v = v + 40: car$ = "vertical": d = 1
      CASE "L": h = h - 40: car$ = "horizontal": d = 0
      CASE "R": h = h + 40: car$ = "horizontal": d = 0
      CASE "E": IF d = 1 THEN : v = v - 40: car$ = "curva e": d = 0:  ELSE : h = h + 40: car$ = "curva g": d = 1
      CASE "F": IF d = 1 THEN : v = v + 40: : car$ = "curva f": d = 0:  ELSE : h = h + 40: car$ = "curva h": d = 1
      CASE "G": IF d = 1 THEN : v = v + 40: : car$ = "curva g": d = 0:  ELSE : h = h - 40: car$ = "curva e": d = 1
      CASE "H": IF d = 1 THEN : v = v - 40: : car$ = "curva h": d = 0:  ELSE : h = h - 40: car$ = "curva f": d = 1
   END SELECT

   SELECT CASE car$
      CASE "horizontal"
         LINE (h - 20, v - 10)-(h + 20, v + 10), cp, BF
         IF central THEN LINE (h - 20, v)-(h + 20, v), 15, BF
         LINE (h - 20, v - 8)-(h + 20, v - 8), 15, BF
         LINE (h - 20, v + 8)-(h + 20, v + 8), 15, BF

      CASE "vertical"
         LINE (h - 10, v - 20)-(h + 10, v + 20), cp, BF
         IF central THEN LINE (h, v - 20)-(h, v + 20), 15, BF
         LINE (h - 8, v - 20)-(h - 8, v + 20), 15, BF
         LINE (h + 8, v - 20)-(h + 8, v + 20), 15, BF

      CASE "curva e" 'É
         CIRCLE (h + 20, v + 20), 30, cp, pi / 2, pi
         CIRCLE (h + 20, v + 20), 10, cp, pi / 2, pi
         LINE (h - 10, v + 20)-(h + 10, v + 20), cp
         LINE (h + 20, v - 10)-(h + 20, v + 10), cp
         PAINT (h, v), cp, cp
         CIRCLE (h + 20, v + 20), 28, 15, pi / 2, pi
         IF central THEN CIRCLE (h + 20, v + 20), 20, 15, pi / 2, pi
         CIRCLE (h + 20, v + 20), 12, 15, pi / 2, pi

      CASE "curva f" 'È
         CIRCLE (h + 20, v - 20), 30, cp, pi, pi * 1.5
         CIRCLE (h + 20, v - 20), 10, cp, pi, pi * 1.5
         LINE (h - 10, v - 20)-(h + 10, v - 20), cp
         LINE (h + 20, v - 10)-(h + 20, v + 10), cp
         PAINT (h, v), cp, cp
         CIRCLE (h + 20, v - 20), 28, 15, pi, pi * 1.5
         IF central THEN CIRCLE (h + 20, v - 20), 20, 15, pi, pi * 1.5
         CIRCLE (h + 20, v - 20), 12, 15, pi, pi * 1.5

      CASE "curva g" '¼
         CIRCLE (h - 20, v - 20), 30, cp, 1.5 * pi, pi * 2
         CIRCLE (h - 20, v - 20), 10, cp, 1.5 * pi, pi * 2
         LINE (h - 10, v - 20)-(h + 10, v - 20), cp
         LINE (h - 20, v - 10)-(h - 20, v + 10), cp
         PAINT (h, v), cp, cp
         CIRCLE (h - 20, v - 20), 28, 15, 1.5 * pi, pi * 2
         IF central THEN CIRCLE (h - 20, v - 20), 20, 15, 1.5 * pi, pi * 2
         CIRCLE (h - 20, v - 20), 12, 15, 1.5 * pi, pi * 2

      CASE "curva h" '»
         CIRCLE (h - 20, v + 20), 30, cp, 0, pi / 2
         CIRCLE (h - 20, v + 20), 10, cp, 0, pi / 2
         LINE (h - 10, v + 20)-(h + 10, v + 20), cp
         LINE (h - 20, v - 10)-(h - 20, v + 10), cp
         PAINT (h, v), cp, cp
         CIRCLE (h - 20, v + 20), 28, 15, 0, pi / 2
         IF central THEN CIRCLE (h - 20, v + 20), 20, 15, 0, pi / 2
         CIRCLE (h - 20, v + 20), 12, 15, 0, pi / 2

   END SELECT
NEXT
END SUB

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'                         TIPOGRAFIA VECTORIAL ESCALABLE HECHO EN RONDA
'
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 RANDOMIZE TIMER: 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 bu3 erfg3r3"
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 nu"
CASE ",": DRAW "br2 ng"
CASE ";": DRAW "br2 ngbunuBD"
CASE ":": DRAW "br2 ubuubd3"
CASE "=": DRAW "br2 bunr2bu2r2bd3"
CASE ELSE: DRAW "S" + e$ + "ta" + a$ + "BR4"
END SELECT
NEXT: NEXT: NEXT
END SUB

